--- kind: pipeline type: kubernetes name: Nocr (Kaniko) metadata: namespace: musk-drone trigger: ref: - refs/tags/* #- refs/heads/main clone: disable: true steps: - name: clone image: alpine/git commands: - git clone https://gitea.musk.fun/nocr/flea - cd flea - git submodule update --init --recursive # 🐋 Kaniko steps with caching enabled # 🚀 Optimized: 3 parallel build streams # # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # 🔵 Stream 1: telegram-listener → telegram-client # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - name: telegram-listener-build-push image: gcr.io/kaniko-project/executor:debug environment: HUB_USERNAME: from_secret: hub_username HUB_PASSWORD: from_secret: hub_password commands: - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"hub.musk.fun\":{\"username\":\"$HUB_USERNAME\",\"password\":\"$HUB_PASSWORD\"}}}" > /kaniko/.docker/config.json - cd flea/telegram-listener - /kaniko/executor --context=. --dockerfile=src/Nocr.TelegramListener.Host/Dockerfile --destination=hub.musk.fun/k8s/nocr/telegram_listener:${DRONE_COMMIT_SHA:0:7} --destination=hub.musk.fun/k8s/nocr/telegram_listener:latest --cache=true --cache-repo=hub.musk.fun/k8s/cache/nocr-telegram-listener --compressed-caching=true --verbosity=info depends_on: - clone - name: telegram-client-build-push image: gcr.io/kaniko-project/executor:debug environment: HUB_USERNAME: from_secret: hub_username HUB_PASSWORD: from_secret: hub_password commands: - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"hub.musk.fun\":{\"username\":\"$HUB_USERNAME\",\"password\":\"$HUB_PASSWORD\"}}}" > /kaniko/.docker/config.json - cd flea/telegram-client - /kaniko/executor --context=. --dockerfile=src/Nocr.TelegramClient.Host/Dockerfile --destination=hub.musk.fun/k8s/nocr/telegram_client:${DRONE_COMMIT_SHA:0:7} --destination=hub.musk.fun/k8s/nocr/telegram_client:latest --cache=true --cache-repo=hub.musk.fun/k8s/cache/nocr-telegram-client --compressed-caching=true --verbosity=info depends_on: - telegram-listener-build-push # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # 🟢 Stream 2: text-matcher → text-matcher-migrator # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - name: text-matcher-build-push image: gcr.io/kaniko-project/executor:debug environment: HUB_USERNAME: from_secret: hub_username HUB_PASSWORD: from_secret: hub_password commands: - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"hub.musk.fun\":{\"username\":\"$HUB_USERNAME\",\"password\":\"$HUB_PASSWORD\"}}}" > /kaniko/.docker/config.json - cd flea/text-matcher - /kaniko/executor --context=. --dockerfile=src/Nocr.TextMatcher.Host/Dockerfile --destination=hub.musk.fun/k8s/nocr/text_matcher:${DRONE_COMMIT_SHA:0:7} --destination=hub.musk.fun/k8s/nocr/text_matcher:latest --cache=true --cache-repo=hub.musk.fun/k8s/cache/nocr-text-matcher --compressed-caching=true --verbosity=info depends_on: - clone - name: text-matcher-migrator-build-push image: gcr.io/kaniko-project/executor:debug environment: HUB_USERNAME: from_secret: hub_username HUB_PASSWORD: from_secret: hub_password commands: - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"hub.musk.fun\":{\"username\":\"$HUB_USERNAME\",\"password\":\"$HUB_PASSWORD\"}}}" > /kaniko/.docker/config.json - cd flea/text-matcher - /kaniko/executor --context=. --dockerfile=src/Nocr.TextMatcher.Migrator/Dockerfile --destination=hub.musk.fun/k8s/nocr/text_matcher_migrator:${DRONE_COMMIT_SHA:0:7} --destination=hub.musk.fun/k8s/nocr/text_matcher_migrator:latest --cache=true --cache-repo=hub.musk.fun/k8s/cache/nocr-text-matcher-migrator --compressed-caching=true --verbosity=info depends_on: - text-matcher-build-push # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # 🟡 Stream 3: users → users-migrator # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - name: users-build-push image: gcr.io/kaniko-project/executor:debug environment: HUB_USERNAME: from_secret: hub_username HUB_PASSWORD: from_secret: hub_password commands: - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"hub.musk.fun\":{\"username\":\"$HUB_USERNAME\",\"password\":\"$HUB_PASSWORD\"}}}" > /kaniko/.docker/config.json - cd flea/users - /kaniko/executor --context=. --dockerfile=src/Nocr.Users.Host/Dockerfile --destination=hub.musk.fun/k8s/nocr/users:${DRONE_COMMIT_SHA:0:7} --destination=hub.musk.fun/k8s/nocr/users:latest --cache=true --cache-repo=hub.musk.fun/k8s/cache/nocr-users --compressed-caching=true --verbosity=info depends_on: - clone - name: users-migrator-build-push image: gcr.io/kaniko-project/executor:debug environment: HUB_USERNAME: from_secret: hub_username HUB_PASSWORD: from_secret: hub_password commands: - mkdir -p /kaniko/.docker - echo "{\"auths\":{\"hub.musk.fun\":{\"username\":\"$HUB_USERNAME\",\"password\":\"$HUB_PASSWORD\"}}}" > /kaniko/.docker/config.json - cd flea/users - /kaniko/executor --context=. --dockerfile=src/Nocr.Users.Migrator/Dockerfile --destination=hub.musk.fun/k8s/nocr/users_migrator:${DRONE_COMMIT_SHA:0:7} --destination=hub.musk.fun/k8s/nocr/users_migrator:latest --cache=true --cache-repo=hub.musk.fun/k8s/cache/nocr-users-migrator --compressed-caching=true --verbosity=info depends_on: - users-build-push # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # 📦 NuGet publishing - 3 parallel streams after all builds complete # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ - name: telegram-listener-nuget-publish image: mcr.microsoft.com/dotnet/sdk:8.0 environment: VERSION: ${DRONE_TAG} NUGETAPIKEY: from_secret: nuget_musk_api_key commands: - dotnet nuget add source --name musk https://gitea.musk.fun/api/packages/nocr/nuget/index.json - dotnet pack ./flea/telegram-listener/Nocr.TelegramListener.sln -o ./flea/telegram-listener/bin - dotnet nuget push ./flea/telegram-listener/bin/*Contract*.nupkg --api-key $NUGETAPIKEY --source musk --skip-duplicate depends_on: - telegram-client-build-push - text-matcher-migrator-build-push - users-migrator-build-push - name: text-matcher-nuget-publish image: mcr.microsoft.com/dotnet/sdk:8.0 environment: VERSION: ${DRONE_TAG} NUGETAPIKEY: from_secret: nuget_musk_api_key commands: - dotnet nuget add source --name musk https://gitea.musk.fun/api/packages/nocr/nuget/index.json - dotnet pack ./flea/text-matcher/Nocr.TextMatcher.sln -o ./flea/text-matcher/bin - dotnet nuget push ./flea/text-matcher/bin/*Contract*.nupkg --api-key $NUGETAPIKEY --source musk --skip-duplicate depends_on: - telegram-client-build-push - text-matcher-migrator-build-push - users-migrator-build-push - name: users-nuget-publish image: mcr.microsoft.com/dotnet/sdk:8.0 environment: VERSION: ${DRONE_TAG} NUGETAPIKEY: from_secret: nuget_musk_api_key commands: - dotnet nuget add source --name musk https://gitea.musk.fun/api/packages/nocr/nuget/index.json - dotnet pack ./flea/users/Nocr.Users.sln -o ./flea/users/bin - dotnet nuget push ./flea/users/bin/*Contract*.nupkg --api-key $NUGETAPIKEY --source musk --skip-duplicate depends_on: - telegram-client-build-push - text-matcher-migrator-build-push - users-migrator-build-push --- # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # 📦 Contracts-only pipeline for telegram-listener # Trigger: commit message contains "contracts_only:telegram_listener" # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ kind: pipeline type: kubernetes name: telegram-listener-contracts-only metadata: namespace: musk-drone trigger: ref: - refs/tags/* event: - tag clone: disable: true steps: - name: clone image: alpine/git commands: - git clone https://gitea.musk.fun/nocr/flea - cd flea - git submodule update --init --recursive - name: check-commit-message image: alpine/git commands: - cd flea - COMMIT_MSG=$(git log -1 --pretty=%B) - echo "Commit message':' $COMMIT_MSG" - | if echo "$COMMIT_MSG" | grep -q "contracts_only:telegram_listener"; then echo "✅ Commit message contains 'contracts_only:telegram_listener', proceeding..." exit 0 else echo "❌ Commit message does not contain 'contracts_only:telegram_listener', skipping..." exit 78 fi depends_on: - clone - name: telegram-listener-contracts-publish image: mcr.microsoft.com/dotnet/sdk:8.0 environment: VERSION: ${DRONE_TAG} NUGETAPIKEY: from_secret: nuget_musk_api_key commands: - dotnet nuget add source --name musk https://gitea.musk.fun/api/packages/nocr/nuget/index.json - dotnet pack ./flea/telegram-listener/Nocr.TelegramListener.sln -o ./flea/telegram-listener/bin -p:PackageVersion=${DRONE_TAG} - dotnet nuget push ./flea/telegram-listener/bin/*Contract*.nupkg --api-key $NUGETAPIKEY --source musk --skip-duplicate depends_on: - check-commit-message --- # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # 📦 Contracts-only pipeline for text-matcher # Trigger: commit message contains "contracts_only:text_matcher" # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ kind: pipeline type: kubernetes name: text-matcher-contracts-only metadata: namespace: musk-drone trigger: ref: - refs/tags/* event: - tag clone: disable: true steps: - name: clone image: alpine/git commands: - git clone https://gitea.musk.fun/nocr/flea - cd flea - git submodule update --init --recursive - name: check-commit-message image: alpine/git commands: - cd flea - COMMIT_MSG=$(git log -1 --pretty=%B) - echo "Commit message':' $COMMIT_MSG" - | if echo "$COMMIT_MSG" | grep -q "contracts_only:text_matcher"; then echo "✅ Commit message contains 'contracts_only:text_matcher', proceeding..." exit 0 else echo "❌ Commit message does not contain 'contracts_only:text_matcher', skipping..." exit 78 fi depends_on: - clone - name: text-matcher-contracts-publish image: mcr.microsoft.com/dotnet/sdk:8.0 environment: VERSION: ${DRONE_TAG} NUGETAPIKEY: from_secret: nuget_musk_api_key commands: - dotnet nuget add source --name musk https://gitea.musk.fun/api/packages/nocr/nuget/index.json - dotnet pack ./flea/text-matcher/Nocr.TextMatcher.sln -o ./flea/text-matcher/bin -p:PackageVersion=${DRONE_TAG} - dotnet nuget push ./flea/text-matcher/bin/*Contract*.nupkg --api-key $NUGETAPIKEY --source musk --skip-duplicate depends_on: - check-commit-message --- # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # 📦 Contracts-only pipeline for users # Trigger: commit message contains "contracts_only:users" # ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ kind: pipeline type: kubernetes name: users-contracts-only metadata: namespace: musk-drone trigger: ref: - refs/tags/* event: - tag clone: disable: true steps: - name: clone image: alpine/git commands: - git clone https://gitea.musk.fun/nocr/flea - cd flea - git submodule update --init --recursive - name: check-commit-message image: alpine/git commands: - cd flea - COMMIT_MSG=$(git log -1 --pretty=%B) - echo "Commit message':' $COMMIT_MSG" - | if echo "$COMMIT_MSG" | grep -q "contracts_only:users"; then echo "✅ Commit message contains 'contracts_only:users', proceeding..." exit 0 else echo "❌ Commit message does not contain 'contracts_only:users', skipping..." exit 78 fi depends_on: - clone - name: users-contracts-publish image: mcr.microsoft.com/dotnet/sdk:8.0 environment: VERSION: ${DRONE_TAG} NUGETAPIKEY: from_secret: nuget_musk_api_key commands: - dotnet nuget add source --name musk https://gitea.musk.fun/api/packages/nocr/nuget/index.json - dotnet pack ./flea/users/Nocr.Users.sln -o ./flea/users/bin -p:PackageVersion=${DRONE_TAG} - dotnet nuget push ./flea/users/bin/*Contract*.nupkg --api-key $NUGETAPIKEY --source musk --skip-duplicate depends_on: - check-commit-message