Release #203
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| workflow_dispatch: | |
| concurrency: Release | |
| jobs: | |
| set-release-version: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| name: Decide next version | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.set-version.outputs.version }} | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20.x' | |
| - name: Node version | |
| shell: bash | |
| run: node --version | |
| - name: Install NPM dependencies | |
| shell: bash | |
| run: npm ci | |
| - name: Run Semantic Release Dry-Run | |
| shell: bash | |
| run: npx semantic-release --dry-run | |
| env: | |
| BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }} | |
| GITHUB_TOKEN: ${{ secrets.VBR_GIT_RELEASE_TOKEN }} | |
| GIT_COMMIT: ${{ github.sha }} | |
| GIT_USERNAME: ${{ secrets.VBR_GIT_USER }} | |
| GIT_AUTHOR_NAME: ${{ secrets.VBR_GIT_USER }} | |
| GIT_COMMITTER_NAME: ${{ secrets.VBR_GIT_USER }} | |
| GIT_EMAIL: ${{ secrets.VBR_GIT_EMAIL }} | |
| GIT_AUTHOR_EMAIL: ${{ secrets.VBR_GIT_EMAIL }} | |
| GIT_COMMITTER_EMAIL: ${{ secrets.VBR_GIT_EMAIL }} | |
| - name: Set Release Version | |
| id: set-version | |
| run: | | |
| [ ! -f semver ] && echo none > semver | |
| echo $(cat semver) | |
| echo ::set-output name=version::$(cat semver) | |
| echo RELEASE_VERSION=$(cat semver) >> $GITHUB_ENV | |
| shell: bash | |
| build-api-backoffice: | |
| name: Build Api BackOffice | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-api-backoffice-image.tar | |
| image-name: api-backoffice | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Api.BackOffice | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-api-oslo: | |
| name: Build Api Oslo | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-api-oslo-image.tar | |
| image-name: api-oslo | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Api.Oslo | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-api-extract: | |
| name: Build Api Extract | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-api-extract-image.tar | |
| image-name: api-extract | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Api.Extract | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-projector: | |
| name: Build Projector | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-projector-image.tar | |
| image-name: projector | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Projector | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-projections-last-changed-list: | |
| name: Build projections last changed list | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-projections-last-changed-list-console-image.tar | |
| image-name: projections-last-changed-list-console | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Projections.LastChangedList.Console | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-projections-backoffice: | |
| name: Build Projections BackOffice | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-projections-backoffice-image.tar | |
| image-name: projections-backoffice | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Projections.BackOffice | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-consumer-address: | |
| name: Build Consumer | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-consumer-address-image.tar | |
| image-name: consumer-address | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Consumer.Address.Console | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-producer: | |
| name: Build Producer | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-producer-image.tar | |
| image-name: producer | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Producer | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-producer-snapshot-oslo: | |
| name: Build Producer Snapshot Oslo | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-producer-snapshot-oslo-image.tar | |
| image-name: producer-snapshot-oslo | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Producer.Snapshot.Oslo | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-producer-ldes: | |
| name: Build Producer Ldes | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-producer-ldes-image.tar | |
| image-name: producer-ldes | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Producer.Ldes | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-importer-grb: | |
| name: Build Parcel Importer Grb | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-importer-grb-image.tar | |
| image-name: importer-grb | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Importer.Grb | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-snapshot-verifier: | |
| name: Build Snapshot Verifier | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-image.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| registry: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/parcel-registry | |
| image-file: pr-snapshot-verifier-image.tar | |
| image-name: snapshot-verifier | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Snapshot.Verifier | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| pack-api-backoffice-abstractions: | |
| name: Pack Api BackOffice Abstractions | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/pack.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| pack-file: Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.BackOffice.Abstractions | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Api.BackOffice.Abstractions | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| pack-api-oslo: | |
| name: Pack Api Oslo | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/pack.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| pack-file: Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.Oslo | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Api.Oslo | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| pack-api-extract: | |
| name: Pack Api Extract | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/pack.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| pack-file: Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.Extract | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Api.Extract | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| build-lambda-backoffice: | |
| name: Build Lambda | |
| uses: Informatievlaanderen/build-pipeline/.github/workflows/build-lambda.yml@main | |
| needs: [ set-release-version ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| with: | |
| lambda-name: lambda-backoffice | |
| test-project: ParcelRegistry.Tests | |
| build-project: ParcelRegistry.Api.BackOffice.Handlers.Lambda | |
| semver: ${{ needs.set-release-version.outputs.version }} | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| secrets: inherit | |
| release: | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.set-release-version.outputs.version != 'none') }} | |
| name: Semantic Release | |
| runs-on: ubuntu-latest | |
| needs: [ set-release-version, | |
| pack-api-backoffice-abstractions, | |
| pack-api-oslo, | |
| pack-api-extract, | |
| build-api-backoffice, | |
| build-api-oslo, | |
| build-api-extract, | |
| build-projector, | |
| build-projections-backoffice, | |
| build-projections-last-changed-list, | |
| build-consumer-address, | |
| build-producer, | |
| build-producer-snapshot-oslo, | |
| build-producer-ldes, | |
| build-lambda-backoffice, | |
| build-importer-grb, | |
| build-snapshot-verifier | |
| ] | |
| outputs: | |
| version: ${{ steps.set-version.outputs.version }} | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Cache NPM | |
| uses: actions/cache@v4 | |
| env: | |
| cache-name: cache-npm | |
| with: | |
| path: ~/.npm | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}- | |
| - name: Parse repository name | |
| run: echo REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") >> $GITHUB_ENV | |
| shell: bash | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20.x' | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.x' | |
| - name: Node version | |
| shell: bash | |
| run: node --version | |
| - name: .NET version | |
| shell: bash | |
| run: dotnet --info | |
| - name: Python version | |
| shell: bash | |
| run: python --version | |
| - name: Install NPM dependencies | |
| shell: bash | |
| run: npm ci | |
| - name: Install Python dependencies | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install requests markdown argparse | |
| - name: Download NuGet Api BackOffice Abstractions | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: false | |
| with: | |
| name: nuget-Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.BackOffice.Abstractions-${{ needs.set-release-version.outputs.version }} | |
| path: dist/nuget/ | |
| - name: Download NuGet Api Oslo | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: false | |
| with: | |
| name: nuget-Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.Oslo-${{ needs.set-release-version.outputs.version }} | |
| path: dist/nuget/ | |
| - name: Download NuGet Api Extract | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: false | |
| with: | |
| name: nuget-Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.Extract-${{ needs.set-release-version.outputs.version }} | |
| path: dist/nuget/ | |
| - name: Run Semantic Release | |
| shell: bash | |
| run: npx semantic-release | |
| env: | |
| BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }} | |
| GITHUB_TOKEN: ${{ secrets.VBR_GIT_RELEASE_TOKEN }} | |
| GIT_COMMIT: ${{ github.sha }} | |
| GIT_USERNAME: ${{ secrets.VBR_GIT_USER }} | |
| GIT_AUTHOR_NAME: ${{ secrets.VBR_GIT_USER }} | |
| GIT_COMMITTER_NAME: ${{ secrets.VBR_GIT_USER }} | |
| GIT_EMAIL: ${{ secrets.VBR_GIT_EMAIL }} | |
| GIT_AUTHOR_EMAIL: ${{ secrets.VBR_GIT_EMAIL }} | |
| GIT_COMMITTER_EMAIL: ${{ secrets.VBR_GIT_EMAIL }} | |
| - name: Set Release Version | |
| id: set-version | |
| run: | | |
| [ ! -f semver ] && echo none > semver | |
| echo $(cat semver) | |
| echo ::set-output name=version::$(cat semver) | |
| echo RELEASE_VERSION=$(cat semver) >> $GITHUB_ENV | |
| shell: bash | |
| upload-lambda: | |
| name: Upload Lambda | |
| needs: [ release ] | |
| runs-on: ubuntu-latest | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.release.outputs.version != 'none') }} | |
| steps: | |
| - name: Download Lambda | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: false | |
| with: | |
| name: lambda-backoffice-${{ needs.release.outputs.version }} | |
| path: ~/ | |
| - name: Configure AWS credentials | |
| uses: aws-actions/[email protected] | |
| with: | |
| aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| aws-region: ${{ secrets.VBR_AWS_REGION_PRD }} | |
| - name: Push Lambda functions to S3 DevOps | |
| shell: bash | |
| run: | | |
| echo Push Lambda functions to S3 DevOps | |
| echo aws s3 cp ~/lambda.zip s3://devops-api-deploy-v4-lambda-362233117987/par-sqsbackofficefunction/$SEMVER/lambda.zip | |
| aws s3 cp ~/lambda.zip s3://devops-api-deploy-v4-lambda-362233117987/par-sqsbackofficefunction/$SEMVER/lambda.zip | |
| env: | |
| SEMVER: ${{ needs.release.outputs.version }} | |
| publish_to_nuget: | |
| needs: [ release ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.release.outputs.version != 'none') }} | |
| name: Publish to NuGet | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Setup .NET Core | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
| - name: .NET version | |
| shell: bash | |
| run: dotnet --info | |
| - name: Download NuGet package api-backoffice-abstractions | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget-Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.BackOffice.Abstractions-${{ needs.release.outputs.version }} | |
| path: ~/ | |
| - name: Download NuGet package api-oslo | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget-Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.Oslo-${{ needs.release.outputs.version }} | |
| path: ~/ | |
| - name: Download NuGet package api-extract | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget-Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.Extract-${{ needs.release.outputs.version }} | |
| path: ~/ | |
| - name: Publish packages to NuGet | |
| shell: bash | |
| run: | | |
| dotnet nuget push ~/Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.BackOffice.Abstractions.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY | |
| dotnet nuget push ~/Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.Oslo.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY | |
| dotnet nuget push ~/Be.Vlaanderen.Basisregisters.ParcelRegistry.Api.Extract.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY | |
| env: | |
| SEMVER: ${{ needs.release.outputs.version }} | |
| WORKSPACE: ${{ github.workspace }} | |
| NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} | |
| publish_to_atlassian: | |
| needs: [ release ] | |
| if: ${{ (github.repository_owner == 'Informatievlaanderen') && (needs.release.outputs.version != 'none') }} | |
| name: Publish to Atlassian | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| - name: Parse repository name | |
| run: echo REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") >> $GITHUB_ENV | |
| shell: bash | |
| - name: Cache Paket | |
| uses: actions/cache@v4 | |
| env: | |
| cache-name: cache-paket | |
| with: | |
| path: packages | |
| key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('paket.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-build-${{ env.cache-name }}- | |
| - name: Cache Python | |
| uses: actions/cache@v4 | |
| env: | |
| cache-name: cache-pip | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-build-${{ env.cache-name }} | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.x' | |
| - name: Install Python dependencies | |
| shell: bash | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install requests markdown argparse | |
| - name: Publish to Confluence | |
| shell: bash | |
| run: ./packages/Be.Vlaanderen.Basisregisters.Build.Pipeline/Content/ci-confluence.sh | |
| env: | |
| CONFLUENCE_TITLE: ${{ env.REPOSITORY_NAME }} | |
| CONFLUENCE_USERNAME: ${{ secrets.VBR_CONFLUENCE_USER }} | |
| CONFLUENCE_PASSWORD: ${{ secrets.VBR_CONFLUENCE_PASSWORD }} | |
| # - name: Create Jira Release | |
| # shell: bash | |
| # run: ./packages/Be.Vlaanderen.Basisregisters.Build.Pipeline/Content/ci-jira.sh | |
| # env: | |
| # CONFLUENCE_TITLE: ${{ env.REPOSITORY_NAME }} | |
| # CONFLUENCE_USERNAME: ${{ secrets.VBR_CONFLUENCE_USER }} | |
| # CONFLUENCE_PASSWORD: ${{ secrets.VBR_CONFLUENCE_PASSWORD }} | |
| # JIRA_PREFIX: Parcel | |
| # JIRA_PROJECT: GAWR | |
| # JIRA_VERSION: ${{ needs.release.outputs.version }} | |
| push_images: | |
| if: needs.release.outputs.version != 'none' | |
| needs: [ release ] | |
| name: Push images | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| image: [ | |
| 'api-backoffice', | |
| 'api-oslo', | |
| 'api-extract', | |
| 'projector', | |
| 'projections-backoffice', | |
| 'projections-last-changed-list-console', | |
| 'consumer-address', | |
| 'producer', | |
| 'producer-snapshot-oslo', | |
| 'producer-ldes', | |
| 'importer-grb', | |
| 'snapshot-verifier' | |
| ] | |
| steps: | |
| - name: Configure AWS credentials | |
| uses: aws-actions/[email protected] | |
| with: | |
| aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| aws-region: ${{ secrets.VBR_AWS_REGION_PRD }} | |
| - name: Login to Amazon ECR | |
| uses: aws-actions/amazon-ecr-login@v2 | |
| # Download artifact | |
| - name: Download artifact | |
| uses: actions/download-artifact@v4 | |
| continue-on-error: false | |
| with: | |
| name: ${{ matrix.image }}-${{ needs.release.outputs.version }} | |
| path: ~/ | |
| # Load artifact | |
| - name: Load artifact | |
| shell: bash | |
| run: | | |
| echo pr-$IMAGE-image.tar | |
| docker image load -i ~/pr-$IMAGE-image.tar | |
| env: | |
| IMAGE: ${{ matrix.image }} | |
| - name: Push artifacts to ECR | |
| shell: bash | |
| run: | | |
| echo $IMAGE:$SEMVER | |
| docker push $BUILD_DOCKER_REGISTRY/parcel-registry/$IMAGE:$SEMVER | |
| env: | |
| BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_DEVOPS_DOCKER_REGISTRY }} | |
| IMAGE: ${{ matrix.image }} | |
| SEMVER: ${{ needs.release.outputs.version }} | |
| WORKSPACE: ${{ github.workspace }} | |
| deploy_to_test_start_slack: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ push_images, upload-lambda, release ] | |
| name: Deploy to test started | |
| environment: test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Parse repository name | |
| run: echo REPOSITORY_NAME=$(echo ""$GITHUB_REPOSITORY"" | awk -F / '{print $2}' | sed -e ""s/:refs//"") >> $GITHUB_ENV | |
| shell: bash | |
| - name: Notify deployment started | |
| uses: slackapi/[email protected] | |
| with: | |
| channel-id: '#team-dinosaur-dev' | |
| slack-message: Deployment of parcel-registry to test has started | |
| env: | |
| SLACK_BOT_TOKEN: ${{ secrets.VBR_SLACK_BOT_TOKEN }} | |
| SLACK_CHANNEL: ${{ secrets.VBR_NOTIFIER_CHANNEL_NAME }} | |
| REPOSITORY_NAME: ${{ env.REPOSITORY_NAME }} | |
| deploy_services_to_test: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_to_test_start_slack, release ] | |
| name: Deploy services to test | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| services: [ | |
| 'parcel-api', | |
| 'parcel-backoffice-api', | |
| 'parcel-consumer-address', | |
| 'parcel-producer', | |
| 'parcel-producer-snapshot-oslo', | |
| 'parcel-producer-ldes', | |
| 'parcel-projections', | |
| 'parcel-projections-backoffice' | |
| ] | |
| steps: | |
| - name: Deploy services | |
| env: | |
| BUILD_URL: ${{ vars.VBR_AWS_BUILD_API_DEVOPS }}/${{matrix.services}} | |
| STATUS_URL: ${{ vars.VBR_AWS_BUILD_STATUS_API_DEVOPS }}/${{matrix.services}} | |
| uses: informatievlaanderen/awscurl-polling-action/polling-action@main | |
| with: | |
| environment: tst | |
| version: ${{ needs.release.outputs.version }} | |
| status-url: $STATUS_URL | |
| deploy-url: $BUILD_URL | |
| access-key: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| secret-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| deploy-target: 'agb_ecs_service' | |
| interval: 2 | |
| domain: 'basisregisters' | |
| project: 'basisregisters' | |
| - name: Deploy services output | |
| shell: bash | |
| run: | | |
| echo build-uuid: ${{ steps.awscurl-polling-action.outputs.build-uuid }} | |
| echo Status: ${{ steps.awscurl-polling-action.outputs.status }} | |
| echo ${{ steps.awscurl-polling-action.outputs.final-message }} | |
| deploy_tasks_to_test: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_to_test_start_slack, release ] | |
| name: Deploy tasks to test | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| services: [ | |
| 'parcel-importer-grb', | |
| 'parcel-snapshot-verifier' | |
| ] | |
| steps: | |
| - name: Deploy tasks | |
| env: | |
| BUILD_URL: ${{ vars.VBR_AWS_BUILD_API_DEVOPS }}/${{matrix.services}} | |
| STATUS_URL: ${{ vars.VBR_AWS_BUILD_STATUS_API_DEVOPS }}/${{matrix.services}} | |
| uses: informatievlaanderen/awscurl-polling-action/polling-action@main | |
| with: | |
| environment: tst | |
| version: ${{ needs.release.outputs.version }} | |
| status-url: $STATUS_URL | |
| deploy-url: $BUILD_URL | |
| access-key: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| secret-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| deploy-target: 'ecs_scheduled_task' | |
| interval: 2 | |
| domain: 'basisregisters' | |
| project: 'basisregisters' | |
| - name: Deploy tasks output | |
| shell: bash | |
| run: | | |
| echo build-uuid: ${{ steps.awscurl-polling-action.outputs.build-uuid }} | |
| echo Status: ${{ steps.awscurl-polling-action.outputs.status }} | |
| echo ${{ steps.awscurl-polling-action.outputs.final-message }} | |
| deploy_lambda_to_test: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_to_test_start_slack, release ] | |
| name: Deploy lambda to test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: CD Lambda(s) Configure credentials | |
| uses: aws-actions/[email protected] | |
| with: | |
| aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| aws-region: ${{ secrets.VBR_AWS_REGION_PRD }} | |
| - name: Promote Lambda(s) | |
| uses: Informatievlaanderen/build-pipeline/.github/actions/deploy-lambda-v4@main | |
| with: | |
| function-name: par-sqsbackofficefunction | |
| deploy-url: ${{ vars.VBR_AWS_DEPLOY_LAMBDA_DEVOPS_BASEURL }} | |
| access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| secret-access-key-id: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| region: ${{ secrets.VBR_AWS_REGION_PRD }} | |
| version: ${{ needs.release.outputs.version }} | |
| environment: tst | |
| deploy_to_test_finish_slack: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_lambda_to_test, deploy_tasks_to_test, deploy_services_to_test ] | |
| name: Deploy to test finished | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Parse repository name | |
| run: echo REPOSITORY_NAME=$(echo ""$GITHUB_REPOSITORY"" | awk -F / '{print $2}' | sed -e ""s/:refs//"") >> $GITHUB_ENV | |
| shell: bash | |
| - name: Notify deployment finished | |
| uses: slackapi/[email protected] | |
| with: | |
| channel-id: '#team-dinosaur-dev' | |
| slack-message: Deployment of parcel-registry to test has finished | |
| env: | |
| SLACK_BOT_TOKEN: ${{ secrets.VBR_SLACK_BOT_TOKEN }} | |
| SLACK_CHANNEL: ${{ secrets.VBR_NOTIFIER_CHANNEL_NAME }} | |
| REPOSITORY_NAME: ${{ env.REPOSITORY_NAME }} | |
| deploy_to_stg_start_slack: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_to_test_finish_slack, release ] | |
| name: Deploy to staging started | |
| environment: stg | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Parse repository name | |
| run: echo REPOSITORY_NAME=$(echo ""$GITHUB_REPOSITORY"" | awk -F / '{print $2}' | sed -e ""s/:refs//"") >> $GITHUB_ENV | |
| shell: bash | |
| - name: Notify deployment started | |
| uses: slackapi/[email protected] | |
| with: | |
| channel-id: '#team-dinosaur-dev' | |
| slack-message: Deployment of parcel-registry to staging has started | |
| env: | |
| SLACK_BOT_TOKEN: ${{ secrets.VBR_SLACK_BOT_TOKEN }} | |
| SLACK_CHANNEL: ${{ secrets.VBR_NOTIFIER_CHANNEL_NAME }} | |
| REPOSITORY_NAME: ${{ env.REPOSITORY_NAME }} | |
| deploy_services_to_stg: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_to_stg_start_slack, release ] | |
| name: Deploy services to new staging | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| services: [ | |
| 'parcel-api', | |
| 'parcel-backoffice-api', | |
| 'parcel-consumer-address', | |
| 'parcel-producer', | |
| 'parcel-producer-snapshot-oslo', | |
| 'parcel-producer-ldes', | |
| 'parcel-projections', | |
| 'parcel-projections-backoffice' | |
| ] | |
| steps: | |
| - name: Deploy services | |
| env: | |
| BUILD_URL: ${{ vars.VBR_AWS_BUILD_API_DEVOPS }}/${{matrix.services}} | |
| STATUS_URL: ${{ vars.VBR_AWS_BUILD_STATUS_API_DEVOPS }}/${{matrix.services}} | |
| uses: informatievlaanderen/awscurl-polling-action/polling-action@main | |
| with: | |
| environment: stg | |
| version: ${{ needs.release.outputs.version }} | |
| status-url: $STATUS_URL | |
| deploy-url: $BUILD_URL | |
| access-key: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| secret-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| deploy-target: 'agb_ecs_service' | |
| interval: 2 | |
| domain: 'basisregisters' | |
| project: 'basisregisters' | |
| - name: Deploy services output | |
| shell: bash | |
| run: | | |
| echo build-uuid: ${{ steps.awscurl-polling-action.outputs.build-uuid }} | |
| echo Status: ${{ steps.awscurl-polling-action.outputs.status }} | |
| echo ${{ steps.awscurl-polling-action.outputs.final-message }} | |
| deploy_tasks_to_stg: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_to_stg_start_slack, release ] | |
| name: Deploy tasks to staging | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| services: [ | |
| 'parcel-importer-grb', | |
| 'parcel-snapshot-verifier' | |
| ] | |
| steps: | |
| - name: Deploy tasks | |
| env: | |
| BUILD_URL: ${{ vars.VBR_AWS_BUILD_API_DEVOPS }}/${{matrix.services}} | |
| STATUS_URL: ${{ vars.VBR_AWS_BUILD_STATUS_API_DEVOPS }}/${{matrix.services}} | |
| uses: informatievlaanderen/awscurl-polling-action/polling-action@main | |
| with: | |
| environment: stg | |
| version: ${{ needs.release.outputs.version }} | |
| status-url: $STATUS_URL | |
| deploy-url: $BUILD_URL | |
| access-key: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| secret-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| deploy-target: 'ecs_scheduled_task' | |
| interval: 2 | |
| domain: 'basisregisters' | |
| project: 'basisregisters' | |
| - name: Deploy tasks output | |
| shell: bash | |
| run: | | |
| echo build-uuid: ${{ steps.awscurl-polling-action.outputs.build-uuid }} | |
| echo Status: ${{ steps.awscurl-polling-action.outputs.status }} | |
| echo ${{ steps.awscurl-polling-action.outputs.final-message }} | |
| deploy_lambda_to_stg: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_tasks_to_stg, deploy_services_to_stg, release ] | |
| name: Deploy lambda to staging | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: CD Lambda(s) Configure credentials | |
| uses: aws-actions/[email protected] | |
| with: | |
| aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| aws-region: ${{ secrets.VBR_AWS_REGION_PRD }} | |
| - name: Promote Lambda(s) | |
| uses: Informatievlaanderen/build-pipeline/.github/actions/deploy-lambda-v4@main | |
| with: | |
| function-name: par-sqsbackofficefunction | |
| deploy-url: ${{ vars.VBR_AWS_DEPLOY_LAMBDA_DEVOPS_BASEURL }} | |
| access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }} | |
| secret-access-key-id: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }} | |
| region: ${{ secrets.VBR_AWS_REGION_PRD }} | |
| version: ${{ needs.release.outputs.version }} | |
| environment: stg | |
| deploy_to_stg_finish_slack: | |
| if: github.repository_owner == 'Informatievlaanderen' | |
| needs: [ deploy_lambda_to_stg ] | |
| name: Deploy to staging finished | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Parse repository name | |
| run: echo REPOSITORY_NAME=$(echo ""$GITHUB_REPOSITORY"" | awk -F / '{print $2}' | sed -e ""s/:refs//"") >> $GITHUB_ENV | |
| shell: bash | |
| - name: Notify deployment finished | |
| uses: slackapi/[email protected] | |
| with: | |
| channel-id: '#team-dinosaur-dev' | |
| slack-message: Deployment of parcel-registry to staging has finished | |
| env: | |
| SLACK_BOT_TOKEN: ${{ secrets.VBR_SLACK_BOT_TOKEN }} | |
| SLACK_CHANNEL: ${{ secrets.VBR_NOTIFIER_CHANNEL_NAME }} | |
| REPOSITORY_NAME: ${{ env.REPOSITORY_NAME }} |