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