Skip to content

Commit c4c8aa9

Browse files
authored
Merge pull request #30 from RainbowDashy/3rs
chore: 3 step rollout
2 parents d5b1674 + 8917a84 commit c4c8aa9

File tree

1 file changed

+26
-14
lines changed

1 file changed

+26
-14
lines changed

.github/workflows/release-action.yml

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@ on:
55
branches:
66
- main
77

8+
env:
9+
BYTEBASE_URL: https://demo.bytebase.com
10+
BYTEBASE_SERVICE_ACCOUNT: api@service.bytebase.com
11+
BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{ secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET }}
12+
BYTEBASE_PROJECT: "projects/hr"
13+
814
jobs:
915
build:
1016
runs-on: ubuntu-latest
@@ -17,10 +23,9 @@ jobs:
1723
echo "Build done!"
1824
echo "Uploading..."
1925
echo "Upload done!"
20-
deploy-to-test:
26+
create-rollout-on-bytebase:
2127
needs: build
2228
runs-on: ubuntu-latest # use self-hosted machines if your Bytebase runs in internal networks.
23-
environment: test
2429
container:
2530
image: docker://bytebase/bytebase-action:latest
2631
outputs:
@@ -30,27 +35,38 @@ jobs:
3035
uses: actions/checkout@v4
3136
- name: rollout
3237
env:
33-
BYTEBASE_URL: https://demo.bytebase.com
34-
BYTEBASE_SERVICE_ACCOUNT: api@service.bytebase.com
35-
BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{ secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET }}
36-
BYTEBASE_PROJECT: "projects/hr"
3738
BYTEBASE_TARGETS: "instances/test-sample-instance/databases/hr_test,instances/prod-sample-instance/databases/hr_prod"
38-
BYTEBASE_TARGET_STAGE: environments/test
3939
FILE_PATTERN: "migrations-semver/*.sql"
4040
BYTEBASE_OUTPUT: ${{ runner.temp }}/bytebase-metadata.json
4141
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 }}
4343
- name: Set output
4444
id: set-output
4545
run: |
4646
PLAN=$(jq -r .plan ${{ runner.temp }}/bytebase-metadata.json)
4747
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 }}
4862
- name: Deploy app
4963
run: |
5064
echo "Deploying app to test environment..."
5165
echo "Deploy app to test environment done!"
5266
deploy-to-prod:
53-
needs: deploy-to-test
67+
needs:
68+
- deploy-to-test
69+
- create-rollout-on-bytebase
5470
runs-on: ubuntu-latest
5571
environment: prod
5672
container:
@@ -60,13 +76,9 @@ jobs:
6076
uses: actions/checkout@v4
6177
- name: rollout
6278
env:
63-
BYTEBASE_URL: https://demo.bytebase.com
64-
BYTEBASE_SERVICE_ACCOUNT: api@service.bytebase.com
65-
BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{ secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET }}
66-
BYTEBASE_PROJECT: "projects/hr"
6779
BYTEBASE_TARGET_STAGE: environments/prod
6880
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 }}
7082
- name: Deploy app
7183
run: |
7284
echo "Deploying app to prod environment..."

0 commit comments

Comments
 (0)