/
githubmirror
/
novu
Обзор
Документация
Войти
/
githubmirror
/
novu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
next
.github/workflows/on-push-trigger.yml
158 строк
6 KB
Himanshu Garg
ci(root): add concurrency settings to deployment and push trigger workflows for improved deployment management
04 авг 2026, 15:28
Не верифицирован
04 авг 2026, 15:28
78f5dd9
Код
Авторство
О чём код?
name: Trigger Staging Deployment on Push on: push: branches: - next # A newer push to next cancels any in-flight run so only the latest commit triggers a deploy concurrency: group: "${{ github.workflow }}-${{ github.ref }}" cancel-in-progress: true permissions: contents: read actions: write pull-requests: read jobs: trigger-deploy-workflow: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5 with: fetch-depth: 0 - name: Get PR Number id: get-pr env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | PR_NUMBER=$(gh pr list --state merged --search "${{ github.sha }}" --json number --jq '.[0].number') if [ -z "$PR_NUMBER" ]; then echo "No PR found for this commit" echo "pr_number=" >> $GITHUB_OUTPUT else echo "pr_number=$PR_NUMBER" >> $GITHUB_OUTPUT echo "Found PR #$PR_NUMBER" fi - name: Get PR Labels id: get-labels if: steps.get-pr.outputs.pr_number != '' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | LABELS=$(gh pr view ${{ steps.get-pr.outputs.pr_number }} --json labels --jq '.labels[].name') echo "Labels found:" echo "$LABELS" echo "labels<<EOF" >> $GITHUB_OUTPUT echo "$LABELS" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT - name: Determine Services to Deploy id: determine-services env: LABELS: ${{ steps.get-labels.outputs.labels || '' }} run: | DEPLOY_API=false DEPLOY_WORKER=false DEPLOY_WS=false DEPLOY_WEBHOOK=false DEPLOY_INBOUND_MAIL=false DEPLOY_THALAMUS_OBSERVER=false SKIP_DEPLOYMENT=false # Check if only CI/CD label exists (standalone) LABEL_COUNT=$(echo "$LABELS" | grep -v '^$' | wc -l | tr -d ' ') if [ "$LABEL_COUNT" = "1" ] && echo "$LABELS" | grep -q "CI/CD"; then echo "Only CI/CD label found, skipping deployment" SKIP_DEPLOYMENT=true elif echo "$LABELS" | grep -q "CI/CD"; then echo "CI/CD label found with other labels, continuing with deployment" fi # Check for service-specific labels only if not skipping if [ "$SKIP_DEPLOYMENT" = "false" ]; then if echo "$LABELS" | grep -q "@novu/api-service"; then DEPLOY_API=true echo "Found @novu/api-service label" fi if echo "$LABELS" | grep -q "@novu/worker"; then DEPLOY_WORKER=true echo "Found @novu/worker label" fi if echo "$LABELS" | grep -q "@novu/ws"; then DEPLOY_WS=true echo "Found @novu/ws label" fi if echo "$LABELS" | grep -q "@novu/webhook"; then DEPLOY_WEBHOOK=true echo "Found @novu/webhook label" fi if echo "$LABELS" | grep -q "@novu/inbound-mail"; then DEPLOY_INBOUND_MAIL=true echo "Found @novu/inbound-mail label" fi if echo "$LABELS" | grep -q "@novu/thalamus-observer"; then DEPLOY_THALAMUS_OBSERVER=true echo "Found @novu/thalamus-observer label" fi # If no service labels found, deploy api and worker by default if [ "$DEPLOY_API" = "false" ] && [ "$DEPLOY_WORKER" = "false" ] && [ "$DEPLOY_WS" = "false" ] && \ [ "$DEPLOY_WEBHOOK" = "false" ] && [ "$DEPLOY_INBOUND_MAIL" = "false" ] && \ [ "$DEPLOY_THALAMUS_OBSERVER" = "false" ]; then echo "No service labels found, deploying api and worker by default" DEPLOY_API=true DEPLOY_WORKER=true fi fi TRIGGER_DEPLOY=false if [ "$DEPLOY_API" = "true" ] || [ "$DEPLOY_WORKER" = "true" ] || [ "$DEPLOY_WS" = "true" ] || \ [ "$DEPLOY_WEBHOOK" = "true" ] || [ "$DEPLOY_INBOUND_MAIL" = "true" ] || \ [ "$DEPLOY_THALAMUS_OBSERVER" = "true" ]; then TRIGGER_DEPLOY=true fi echo "skip_deployment=$SKIP_DEPLOYMENT" >> $GITHUB_OUTPUT echo "trigger_deploy=$TRIGGER_DEPLOY" >> $GITHUB_OUTPUT echo "deploy_api=$DEPLOY_API" >> $GITHUB_OUTPUT echo "deploy_worker=$DEPLOY_WORKER" >> $GITHUB_OUTPUT echo "deploy_ws=$DEPLOY_WS" >> $GITHUB_OUTPUT echo "deploy_webhook=$DEPLOY_WEBHOOK" >> $GITHUB_OUTPUT echo "deploy_inbound_mail=$DEPLOY_INBOUND_MAIL" >> $GITHUB_OUTPUT echo "deploy_thalamus_observer=$DEPLOY_THALAMUS_OBSERVER" >> $GITHUB_OUTPUT echo "Final deployment configuration:" echo " Skip: $SKIP_DEPLOYMENT" echo " API: $DEPLOY_API" echo " Worker: $DEPLOY_WORKER" echo " WS: $DEPLOY_WS" echo " Webhook: $DEPLOY_WEBHOOK" echo " Inbound Mail: $DEPLOY_INBOUND_MAIL" echo " Thalamus Observer: $DEPLOY_THALAMUS_OBSERVER" - name: Trigger Deploy Workflow via GitHub CLI if: steps.determine-services.outputs.skip_deployment == 'false' && steps.determine-services.outputs.trigger_deploy == 'true' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | gh workflow run "deploy.yml" \ --ref next \ -f environment=staging \ -f runner=github \ -f deploy_api=${{ steps.determine-services.outputs.deploy_api }} \ -f deploy_worker=${{ steps.determine-services.outputs.deploy_worker }} \ -f deploy_ws=${{ steps.determine-services.outputs.deploy_ws }} \ -f deploy_webhook=${{ steps.determine-services.outputs.deploy_webhook }} \ -f deploy_inbound_mail=${{ steps.determine-services.outputs.deploy_inbound_mail }} \ -f deploy_thalamus_observer=${{ steps.determine-services.outputs.deploy_thalamus_observer }}