1+ name : Rollout using bytebase-action image
2+
3+ on :
4+ push :
5+ branches :
6+ - main
7+
8+ jobs :
9+ build :
10+ runs-on : ubuntu-latest
11+ steps :
12+ - name : Checkout
13+ uses : actions/checkout@v4
14+ - name : Build app and upload
15+ run : |
16+ echo "Building..."
17+ echo "Build done!"
18+ echo "Uploading..."
19+ echo "Upload done!"
20+ deploy-to-test :
21+ needs : build
22+ runs-on : ubuntu-latest # use self-hosted machines if your Bytebase runs in internal networks.
23+ environment : test
24+ container :
25+ image : docker://bytebase/bytebase-action:latest
26+ outputs :
27+ bytebase-plan : ${{ steps.set-output.outputs.plan }}
28+ steps :
29+ - name : Checkout
30+ uses : actions/checkout@v4
31+ - name : rollout
32+ env :
33+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
34+ BYTEBASE_URL : https://demo.bytebase.com
35+ BYTEBASE_SERVICE_ACCOUNT : ci@service.bytebase.com
36+ BYTEBASE_SERVICE_ACCOUNT_SECRET : ${{secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET}}
37+ BYTEBASE_PROJECT : " projects/project-sample"
38+ BYTEBASE_TARGETS : " instances/test-sample-instance/databases/hr_test,instances/prod-sample-instance/databases/hr_prod"
39+ BYTEBASE_TARGET_STAGE : environments/test
40+ FILE_PATTERN : " migrations/*.sql"
41+ BYTEBASE_OUTPUT : ${{ runner.temp }}/bytebase-metadata.json
42+ run : |
43+ 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 }}
44+ - name : Set output
45+ id : set-output
46+ run : |
47+ PLAN=$(jq -r .plan ${{ runner.temp }}/bytebase-metadata.json)
48+ echo "plan=$PLAN" >> $GITHUB_OUTPUT
49+ - name : Deploy app
50+ run : |
51+ echo "Deploying app to test environment..."
52+ echo "Deploy app to test environment done!"
53+ deploy-to-prod :
54+ needs : deploy-to-test
55+ runs-on : ubuntu-latest
56+ environment : prod
57+ container :
58+ image : docker://bytebase/bytebase-action:latest
59+ steps :
60+ - name : Checkout
61+ uses : actions/checkout@v4
62+ - name : rollout
63+ env :
64+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
65+ BYTEBASE_URL : https://demo.bytebase.com
66+ BYTEBASE_SERVICE_ACCOUNT : ci@service.bytebase.com
67+ BYTEBASE_SERVICE_ACCOUNT_SECRET : ${{secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET}}
68+ BYTEBASE_PROJECT : " projects/project-sample"
69+ BYTEBASE_TARGET_STAGE : environments/prod
70+ run : |
71+ 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 }}
72+ - name : Deploy app
73+ run : |
74+ echo "Deploying app to prod environment..."
75+ echo "Deploy app to prod environment done!"
0 commit comments