Легаси-версии (5.0.x/5.1.x/3.1.x/2.1.x) в реестре отсутствуют (404), стенды не могли
пройти terraform init. Приведены к новой схеме нумерации от 2026-09-03.
- DEV (nubes-dev): CRUD, POSTGRES, SHTURVAL_MGMT -> 2.0.0
- TEST (nubes-test): CRUD, PG, POSTGRES, MARIA_DB, buck0, kuber, IOT_RMQ_DEMO -> 3.0.0
(DEV_STAND/IOT_KAFKA_DEMO тоже nubes-test -> 3.0.0)
- PROD (nubes): PG1, POSTGRES, RABBIT -> 1.0.0
- README стендов TEST_STAND/buck0, TEST_STAND/PG: версии приведены к 3.0.0
- getting-started: убрана versioned-ссылка на доки (2.1.7) -> актуальный домен без версии
- .gitignore: откатано правило TMP/ (на remote TMP/init-test-*/main.tf трекаются)
DevOps Runbook: Provider Build Pipeline
This repo root contains the 4 scripts for the full provider build pipeline.
Overview
- Generate YAML specs from API
- Generate Go resources + documentation files from YAML
- Build and upload provider binaries for 3 OS targets
- Build and publish documentation site
Documentation publishing instructions
The verified documentation generation and publishing pipeline is documented in
HISTORY/2026-09-03_docs_upload_pipeline_verified.md.
It covers the generated docs source, MkDocs build, the separate documentation
S3 bucket, VM upload and mirror steps, stand-specific URLs, and the legacy
script that must not be used.
Prerequisites
- Go 1.22+
python3gpgmc(MinIO/S3 client)- Docker (for mkdocs build)
Shared settings
S3 environment:
S3_ENDPOINT(example:https://s3.msk-1.ngcloud.ru)S3_ACCESS_KEYS3_SECRET_KEY
Provider naming defaults:
REGISTRY_HOSTNAME:tf-registry.containerk8s.services.ngcloud.ruNAMESPACE:nubesNAME:nubes
Step 1: Generate YAMLs from API
Script: 01_generate_yamls.sh
Input list of services:
services_list.txt(service_id only)
Token options:
TOKEN_FILE=/home/naeel/terra/HH-MM-SS.token, orNUBES_API_TOKENdirectly
Example:
export TOKEN_FILE=/home/naeel/terra/08-33-41.token
./01_generate_yamls.sh
Step 2: Generate Go resources and docs
Script: 02_generate_resources_and_docs.sh
Example:
./02_generate_resources_and_docs.sh
Outputs:
- Go files in
universal_rebuild/internal/resources_gen - Docs in
docs/30_registry/resources
Step 3: Build and upload provider
Script: 03_build_and_upload_provider.sh
Uses registry-server-build/build-provider.sh and signs with:
secrets/private_key.asc(ignored by git)
Example:
export S3_ENDPOINT=https://s3.msk-1.ngcloud.ru
export S3_ACCESS_KEY=...
export S3_SECRET_KEY=...
./03_build_and_upload_provider.sh 2.0.2
Step 4: Build and publish docs
Script: 04_build_and_publish_docs.sh
Example:
export S3_ENDPOINT=https://s3.msk-1.ngcloud.ru
export S3_ACCESS_KEY=...
export S3_SECRET_KEY=...
./04_build_and_publish_docs.sh 2.0.2
Notes
- The GPG private key must remain stable across releases. Do not regenerate per build.
- If the key is regenerated, the registry server must be updated to serve the new public key.
- Terraform will fail with
authentication signature from unknown issuerif the registry public key does not match the signing key. services_list.txtis the source of truth for which services are generated.- If the provider version changes, update
universal_rebuild/main.go.
One-time GPG bootstrap (do this once, keep the key stable)
- Generate and export keys (no passphrase):
GPG_DIR=${ROOT_DIR}/secrets
GNUPGHOME=$(mktemp -d)
cat > /tmp/gpg_batch <<'EOF'
%no-protection
Key-Type: RSA
Key-Length: 4096
Subkey-Type: RSA
Subkey-Length: 4096
Name-Real: tazet@narod.ru
Name-Email: tazet@narod.ru
Expire-Date: 0
EOF
gpg --batch --homedir "$GNUPGHOME" --gen-key /tmp/gpg_batch
gpg --batch --homedir "$GNUPGHOME" --armor --export-secret-keys > "$GPG_DIR/private_key.asc"
gpg --batch --homedir "$GNUPGHOME" --armor --export > "$GPG_DIR/public_key.asc"
rm -rf "$GNUPGHOME" /tmp/gpg_batch
- Update registry server public key (ASCII Armor) in:
registry-server-build/main.gooperator/cmd/registry/main.go
-
Rebuild and redeploy the registry server (see
docs/50_history/00_system_mechanics.md). -
Build and upload provider artifacts as usual.