diff --git a/.github/workflows/release-action.yml b/.github/workflows/release-action.yml new file mode 100644 index 0000000..4f3bee1 --- /dev/null +++ b/.github/workflows/release-action.yml @@ -0,0 +1,75 @@ +name: Rollout using bytebase-action image + +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build app and upload + run: | + echo "Building..." + echo "Build done!" + echo "Uploading..." + echo "Upload done!" + deploy-to-test: + needs: build + runs-on: ubuntu-latest # use self-hosted machines if your Bytebase runs in internal networks. + environment: test + container: + image: docker://bytebase/bytebase-action:latest + outputs: + bytebase-plan: ${{ steps.set-output.outputs.plan }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: rollout + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BYTEBASE_URL: https://demo.bytebase.com + BYTEBASE_SERVICE_ACCOUNT: ci@service.bytebase.com + BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET}} + BYTEBASE_PROJECT: "projects/project-sample" + BYTEBASE_TARGETS: "instances/test-sample-instance/databases/hr_test,instances/prod-sample-instance/databases/hr_prod" + BYTEBASE_TARGET_STAGE: environments/test + FILE_PATTERN: "migrations/*.sql" + BYTEBASE_OUTPUT: ${{ runner.temp }}/bytebase-metadata.json + run: | + 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 }} + - name: Set output + id: set-output + run: | + PLAN=$(jq -r .plan ${{ runner.temp }}/bytebase-metadata.json) + echo "plan=$PLAN" >> $GITHUB_OUTPUT + - name: Deploy app + run: | + echo "Deploying app to test environment..." + echo "Deploy app to test environment done!" + deploy-to-prod: + needs: deploy-to-test + runs-on: ubuntu-latest + environment: prod + container: + image: docker://bytebase/bytebase-action:latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: rollout + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BYTEBASE_URL: https://demo.bytebase.com + BYTEBASE_SERVICE_ACCOUNT: ci@service.bytebase.com + BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET}} + BYTEBASE_PROJECT: "projects/project-sample" + BYTEBASE_TARGET_STAGE: environments/prod + run: | + 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 }} + - name: Deploy app + run: | + echo "Deploying app to prod environment..." + echo "Deploy app to prod environment done!" \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8728f9c..b0e3cc6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: Build and push release image +name: Rollout on: push: diff --git a/.github/workflows/sql-review-action.yml b/.github/workflows/sql-review-action.yml new file mode 100644 index 0000000..26029a8 --- /dev/null +++ b/.github/workflows/sql-review-action.yml @@ -0,0 +1,30 @@ +name: SQL review on pull request using bytebase-action image + +on: + pull_request: + branches: + - main + paths: + - "migrations/*.sql" + +jobs: + check-release-on-prod: + permissions: + pull-requests: write # write permission required to allow the action writes the check results to the comment. + runs-on: ubuntu-latest # use self-hosted machines if your Bytebase runs in internal networks. + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Check release + uses: docker://bytebase/bytebase-action:latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # set GITHUB_TOKEN because the 'Check release' step needs it to comment the pull request with check results. + BYTEBASE_URL: https://demo.bytebase.com + BYTEBASE_SERVICE_ACCOUNT: ci@service.bytebase.com + BYTEBASE_SERVICE_ACCOUNT_SECRET: ${{secrets.BYTEBASE_SERVICE_ACCOUNT_SECRET}} + BYTEBASE_PROJECT: "projects/project-sample" + BYTEBASE_TARGETS: "instances/prod-sample-instance/databases/hr_prod" + FILE_PATTERN: "migrations/*.sql" + with: + entrypoint: bytebase-action + args: check --url ${{ env.BYTEBASE_URL }} --service-account ${{ env.BYTEBASE_SERVICE_ACCOUNT }} --project ${{ env.BYTEBASE_PROJECT }} --targets ${{ env.BYTEBASE_TARGETS }} --file-pattern ${{ env.FILE_PATTERN }} diff --git a/migrations/202503141135_sleep.sql b/migrations/202503141135_sleep.sql deleted file mode 100644 index 52b20e4..0000000 --- a/migrations/202503141135_sleep.sql +++ /dev/null @@ -1 +0,0 @@ -select sleep(100000) diff --git a/migrations/202503181018_ticket_table_add_date_column.sql b/migrations/202503181018_ticket_table_add_date_column.sql index e9549c7..025d45f 100644 --- a/migrations/202503181018_ticket_table_add_date_column.sql +++ b/migrations/202503181018_ticket_table_add_date_column.sql @@ -1 +1 @@ -ALTER TABLE IF EXISTS ticket ADD release_date DATE; +ALTER TABLE IF EXISTS ticket ADD IF NOT EXISTS release_date DATE; diff --git a/migrations/202504171429_1.sql b/migrations/202504171429_1.sql new file mode 100644 index 0000000..89cfa57 --- /dev/null +++ b/migrations/202504171429_1.sql @@ -0,0 +1,3 @@ +CREATE TABLE IF NOT EXISTS wer ( + id int +); \ No newline at end of file diff --git a/migrations/202504171526_2.sql b/migrations/202504171526_2.sql new file mode 100644 index 0000000..6cceccc --- /dev/null +++ b/migrations/202504171526_2.sql @@ -0,0 +1,3 @@ +CREATE TABLE IF NOT EXISTS oijoir ( + id int +); \ No newline at end of file diff --git a/migrations/202504301754_1.sql b/migrations/202504301754_1.sql new file mode 100644 index 0000000..ca94e07 --- /dev/null +++ b/migrations/202504301754_1.sql @@ -0,0 +1,3 @@ +CREATE TABLE IF NOT EXISTS geoiwjgoiwerjg ( + id int +); \ No newline at end of file