Skip to content

Commit 4aa8430

Browse files
committed
test sdl
1 parent 20602a2 commit 4aa8430

File tree

2 files changed

+92
-0
lines changed

2 files changed

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

schema/users.sql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
CREATE TABLE IF NOT EXISTS users (
2+
id SERIAL PRIMARY KEY,
3+
name VARCHAR(255) NOT NULL,
4+
email VARCHAR(255) NOT NULL UNIQUE
5+
)

0 commit comments

Comments
 (0)