diff --git a/.github/workflows/release-action.yml b/.github/workflows/release-action.yml index 951e31c..a256b3d 100644 --- a/.github/workflows/release-action.yml +++ b/.github/workflows/release-action.yml @@ -5,6 +5,12 @@ on: branches: - main +env: + BYTEBASE_URL: https://demo.bytebase.com + BYTEBASE_SERVICE_ACCOUNT: api@service.bytebase.com + BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{ secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET }} + BYTEBASE_PROJECT: "projects/hr" + jobs: build: runs-on: ubuntu-latest @@ -17,10 +23,9 @@ jobs: echo "Build done!" echo "Uploading..." echo "Upload done!" - deploy-to-test: + create-rollout-on-bytebase: needs: build runs-on: ubuntu-latest # use self-hosted machines if your Bytebase runs in internal networks. - environment: test container: image: docker://bytebase/bytebase-action:latest outputs: @@ -30,27 +35,38 @@ jobs: uses: actions/checkout@v4 - name: rollout env: - BYTEBASE_URL: https://demo.bytebase.com - BYTEBASE_SERVICE_ACCOUNT: api@service.bytebase.com - BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{ secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET }} - BYTEBASE_PROJECT: "projects/hr" BYTEBASE_TARGETS: "instances/test-sample-instance/databases/hr_test,instances/prod-sample-instance/databases/hr_prod" - BYTEBASE_TARGET_STAGE: environments/test FILE_PATTERN: "migrations-semver/*.sql" BYTEBASE_OUTPUT: ${{ runner.temp }}/bytebase-metadata.json run: | - bytebase-action rollout --url=${{ env.BYTEBASE_URL }} --service-account=${{ env.BYTEBASE_SERVICE_ACCOUNT }} --service-account-secret=${{ env.BYTEBASE_SERVICE_ACCOUNT_SECRET }} --project=${{ env.BYTEBASE_PROJECT }} --file-pattern=${{ env.FILE_PATTERN }} --targets=${{ env.BYTEBASE_TARGETS }} --target-stage=${{ env.BYTEBASE_TARGET_STAGE }} --output=${{ env.BYTEBASE_OUTPUT }} + bytebase-action rollout --url=${{ env.BYTEBASE_URL }} --service-account=${{ env.BYTEBASE_SERVICE_ACCOUNT }} --service-account-secret=${{ env.BYTEBASE_SERVICE_ACCOUNT_SECRET }} --project=${{ env.BYTEBASE_PROJECT }} --file-pattern=${{ env.FILE_PATTERN }} --targets=${{ env.BYTEBASE_TARGETS }} --output=${{ env.BYTEBASE_OUTPUT }} - name: Set output id: set-output run: | PLAN=$(jq -r .plan ${{ runner.temp }}/bytebase-metadata.json) echo "plan=$PLAN" >> $GITHUB_OUTPUT + deploy-to-test: + needs: create-rollout-on-bytebase + runs-on: ubuntu-latest # use self-hosted machines if your Bytebase runs in internal networks. + environment: test + container: + image: docker://bytebase/bytebase-action:latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: rollout + env: + BYTEBASE_TARGET_STAGE: environments/test + run: | + bytebase-action rollout --url=${{ env.BYTEBASE_URL }} --service-account=${{ env.BYTEBASE_SERVICE_ACCOUNT }} --service-account-secret=${{ env.BYTEBASE_SERVICE_ACCOUNT_SECRET }} --project=${{ env.BYTEBASE_PROJECT }} --target-stage=${{ env.BYTEBASE_TARGET_STAGE }} --plan=${{ needs.create-rollout-on-bytebase.outputs.bytebase-plan }} - name: Deploy app run: | echo "Deploying app to test environment..." echo "Deploy app to test environment done!" deploy-to-prod: - needs: deploy-to-test + needs: + - deploy-to-test + - create-rollout-on-bytebase runs-on: ubuntu-latest environment: prod container: @@ -60,13 +76,9 @@ jobs: uses: actions/checkout@v4 - name: rollout env: - BYTEBASE_URL: https://demo.bytebase.com - BYTEBASE_SERVICE_ACCOUNT: api@service.bytebase.com - BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{ secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET }} - BYTEBASE_PROJECT: "projects/hr" BYTEBASE_TARGET_STAGE: environments/prod run: | - bytebase-action rollout --url=${{ env.BYTEBASE_URL }} --service-account=${{ env.BYTEBASE_SERVICE_ACCOUNT }} --service-account-secret=${{ env.BYTEBASE_SERVICE_ACCOUNT_SECRET }} --project=${{ env.BYTEBASE_PROJECT }} --target-stage=${{ env.BYTEBASE_TARGET_STAGE }} --plan=${{ needs.deploy-to-test.outputs.bytebase-plan }} + bytebase-action rollout --url=${{ env.BYTEBASE_URL }} --service-account=${{ env.BYTEBASE_SERVICE_ACCOUNT }} --service-account-secret=${{ env.BYTEBASE_SERVICE_ACCOUNT_SECRET }} --project=${{ env.BYTEBASE_PROJECT }} --target-stage=${{ env.BYTEBASE_TARGET_STAGE }} --plan=${{ needs.create-rollout-on-bytebase.outputs.bytebase-plan }} - name: Deploy app run: | echo "Deploying app to prod environment..."