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 : 
[email protected]  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 : 
[email protected]  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