From 43a43724be6f2c4147fd102615c9cf4c6d0b7c08 Mon Sep 17 00:00:00 2001 From: Chris Berg Date: Tue, 17 Sep 2024 15:21:37 -0700 Subject: [PATCH] feat: release-please refactor --- .github/workflows/merge.yml | 76 +++++------------------------------ .github/workflows/prod.yml | 38 ++++++++++++++++++ .github/workflows/release.yml | 34 ++++++++++++++++ .github/workflows/test.yml | 40 ++++++++++++++++++ .github/workflows/uat.yml | 36 ++++++++--------- .gitignore | 1 + 6 files changed, 138 insertions(+), 87 deletions(-) create mode 100644 .github/workflows/prod.yml create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml index 71badf203..101fe25f4 100644 --- a/.github/workflows/merge.yml +++ b/.github/workflows/merge.yml @@ -10,11 +10,6 @@ on: - '!.github/workflows/deploy.yml' - '!.github/workflows/merge.yml' workflow_dispatch: - inputs: - pr_no: - description: "PR-numbered container set to deploy" - type: number - required: true concurrency: group: ${{ github.workflow }} @@ -34,22 +29,12 @@ jobs: uses: bcgov-nr/action-get-pr@v0.0.1 deploys-test: - name: Deploys (test) + name: Deploys (Test) needs: [vars] - uses: ./.github/workflows/deploy.yml + uses: ./.github/workflows/uat.yml secrets: inherit with: - autoscaling: true - environment: test - release: test - tag: ${{ needs.vars.outputs.pr }} - params: | - --set-string global.license='c28f0c' \ - --set-string global.zone='test' \ - --set-string global.vault.role='nonprod' \ - --set-string global.vault.zone='test' \ - --set-string global.pr_num='${{ needs.vars.outputs.pr }}' \ - + tag: ${{ needs.vars.outputs.release-name }} promote-images-test: name: Promote Images - Test @@ -69,57 +54,14 @@ jobs: target: ${{ needs.vars.outputs.pr }} tags: test #Promote images AFTER successful deploy - deploys-prod: - name: Deploys (prod) + release-please: + name: Release-Please needs: [promote-images-test, vars] - uses: ./.github/workflows/deploy.yml - secrets: inherit - with: - autoscaling: true - environment: prod - tag: ${{ needs.vars.outputs.pr }} - release: prod - params: | - --set-string global.license='c28f0c' \ - --set-string global.zone='prod' \ - --set-string global.vault.role='prod' \ - --set-string global.vault.zone='prod' \ - --set-string global.pr_num='${{ needs.vars.outputs.pr }}' \ - - promote-images-prod: - name: Promote Images - Prod - needs: [deploys-prod, vars] runs-on: ubuntu-22.04 - permissions: - packages: write - strategy: - matrix: - package: [dops, vehicles, frontend, scheduler, policy] timeout-minutes: 2 steps: - - uses: shrink/actions-docker-registry-tag@v4 + - uses: google-github-actions/release-please-action@v3 with: - registry: ghcr.io - repository: ${{ github.repository }}/${{ matrix.package }} - target: ${{ needs.vars.outputs.pr }} - tags: prod #Promote images AFTER successful deploy - - create-release: - name: Create release - runs-on: ubuntu-22.04 - needs: [deploys-prod, vars] - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - steps: - - name: Generate release tag - id: generate_release_tag - shell: bash - run: | - echo next_release_tag=$(expr $(echo $(curl https://api.github.com/repos/bcgov/onroutebc/releases/latest | grep tag_name | cut -d '-' -f3 - | cut -d '"' -f1 -) + 1)) >> $GITHUB_OUTPUT - - - name: Create Release - run: | - gh release create "${{ github.event.repository.name }}-release-${{ steps.generate_release_tag.outputs.next_release_tag }}" \ - --repo=${{ github.repository }} \ - --title="${{ github.event.repository.name }}-release-${{ steps.generate_release_tag.outputs.next_release_tag }}" \ - --generate-notes + release-type: simple + package-name: release-please-action + changelog-types: '[{"type":"ORV2","section":"Features","hidden":false},{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"build","section":"Miscellaneous","hidden":false},{"type":"chore","section":"Miscellaneous","hidden":false},{"type":"ci","section":"Miscellaneous","hidden":false},{"type":"docs","section":"Miscellaneous","hidden":false},{"type":"perf","section":"Miscellaneous","hidden":false},{"type":"refactor","section":"Miscellaneous","hidden":false},{"type":"revert","section":"Miscellaneous","hidden":false},{"type":"style","section":"Miscellaneous","hidden":false},{"type":"test","section":"Miscellaneous","hidden":false}]' diff --git a/.github/workflows/prod.yml b/.github/workflows/prod.yml new file mode 100644 index 000000000..27ec4f819 --- /dev/null +++ b/.github/workflows/prod.yml @@ -0,0 +1,38 @@ +name: Deploy Prod + +on: + workflow_dispatch: + inputs: + tag: + description: "Image tag to deploy" + required: false + type: string + default: "prod" + workflow_run: + inputs: + tag: + description: "Image tag to deploy" + required: false + type: string + default: "prod" + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + deploys-prod: + name: Deploys (prod) + uses: ./.github/workflows/deploy.yml + secrets: inherit + with: + autoscaling: true + environment: prod + tag: ${{ inputs.tag }} + release: prod + params: | + --set-string global.license='c28f0c' \ + --set-string global.zone='prod' \ + --set-string global.vault.role='prod' \ + --set-string global.vault.zone='prod' \ + --set-string global.pr_num='${{ inputs.tag }}' \ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..62a32236a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,34 @@ +--- +name: Release + +on: + release: + types: [published] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + vars: + name: Set Variables + outputs: + release-name: ${{ steps.release-name.outputs.release-name }} + runs-on: ubuntu-22.04 + timeout-minutes: 1 + steps: + # Get PR number for squash merges to main + - name: Release Name + id: release-name + run: | + echo release-name=$(curl https://api.github.com/repos/bcgov/onroutebc/releases/latest | jq -r .tag_name) + + deploys-uat: + name: Deploys (uat) + needs: [vars] + uses: ./.github/workflows/uat.yml + secrets: inherit + with: + environment: test + tag: ${{ needs.vars.outputs.release-name }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..7bf545740 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,40 @@ +--- +name: Deploy Test + +on: + workflow_dispatch: + inputs: + tag: + description: "Image tag to deploy" + required: false + type: string + default: "test" + workflow_run: + inputs: + tag: + description: "Image tag to deploy" + required: false + type: string + default: "test" + + +concurrency: + group: ${{ github.workflow }} + cancel-in-progress: true + +jobs: + deploy-test: + name: Deploys (test) + uses: ./.github/workflows/deploy.yml + secrets: inherit + with: + autoscaling: true + environment: test + release: test + tag: ${{ inputs.tag }} + params: | + --set-string global.license='c28f0c' \ + --set-string global.zone='test' \ + --set-string global.vault.role='nonprod' \ + --set-string global.vault.zone='test' \ + --set-string global.pr_num='${{ inputs.tag }}' \ diff --git a/.github/workflows/uat.yml b/.github/workflows/uat.yml index 7f4124713..2bb991831 100644 --- a/.github/workflows/uat.yml +++ b/.github/workflows/uat.yml @@ -1,13 +1,20 @@ +--- name: Deploy UAT on: workflow_dispatch: inputs: - environment: - description: "Deployment environment - test --> vault secrets" - required: true - type: choice - options: ["test","tools"] + tag: + description: "Image tag to deploy" + required: false + type: string + default: "test" + workflow_run: + inputs: + tag: + description: "Image tag to deploy" + required: false + type: string default: "test" @@ -16,29 +23,18 @@ concurrency: cancel-in-progress: true jobs: - uninstall-uat: - name: Uninstall (uat) - environment: ${{inputs.environment}} - runs-on: ubuntu-22.04 - steps: - - name: uninstall - run: | - oc login --token=${{ secrets.oc_token }} --server=${{ secrets.oc_server }} - oc project ${{ secrets.OC_NAMESPACE }} # Safeguard! - helm uninstall onroutebc-uat || true deploy-uat: name: Deploys (UAT) uses: ./.github/workflows/deploy.yml - needs: uninstall-uat secrets: inherit with: autoscaling: true - environment: ${{inputs.environment}} - tag: "test" - release: "uat" + environment: test + tag: ${{inputs.tag}} + release: uat params: | --set-string global.license='c28f0c' \ --set-string global.zone='test' \ --set-string global.vault.role='nonprod' \ --set-string global.vault.zone='uat' \ - --set-string global.pr_num='${{ needs.vars.outputs.pr }}' \ + --set-string global.pr_num='${{ inputs.tag }}' \ diff --git a/.gitignore b/.gitignore index 3d005313e..60755bffc 100644 --- a/.gitignore +++ b/.gitignore @@ -119,3 +119,4 @@ Chart.lock #Loadtest Results loadtests/results +loadtests/*/results