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