Release #308
This file contains 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 }}/address-registry | |
image-file: ar-api-backoffice-image.tar | |
image-name: api-backoffice | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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 }}/address-registry | |
image-file: ar-api-oslo-image.tar | |
image-name: api-oslo | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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 }}/address-registry | |
image-file: ar-api-extract-image.tar | |
image-name: api-extract | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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 }}/address-registry | |
image-file: ar-projector-image.tar | |
image-name: projector | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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 }}/address-registry | |
image-file: ar-projections-last-changed-list-console-image.tar | |
image-name: projections-last-changed-list-console | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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 }}/address-registry | |
image-file: ar-projections-backoffice-image.tar | |
image-name: projections-backoffice | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.Projections.BackOffice | |
semver: ${{ needs.set-release-version.outputs.version }} | |
dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
secrets: inherit | |
build-consumer: | |
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 }}/address-registry | |
image-file: ar-consumer-image.tar | |
image-name: consumer | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.Consumer | |
semver: ${{ needs.set-release-version.outputs.version }} | |
dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
secrets: inherit | |
build-consumer-read-municipality: | |
name: Build Consumer Municipality | |
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 }}/address-registry | |
image-file: ar-consumer-read-municipality-image.tar | |
image-name: consumer-read-municipality | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.Consumer.Read.Municipality | |
semver: ${{ needs.set-release-version.outputs.version }} | |
dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
secrets: inherit | |
build-consumer-read-streetname: | |
name: Build Consumer StreetName | |
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 }}/address-registry | |
image-file: ar-consumer-read-streetname-image.tar | |
image-name: consumer-read-streetname | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.Consumer.Read.StreetName | |
semver: ${{ needs.set-release-version.outputs.version }} | |
dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
secrets: inherit | |
build-consumer-read-postal: | |
name: Build Consumer Postal | |
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 }}/address-registry | |
image-file: ar-consumer-read-postal-image.tar | |
image-name: consumer-read-postal | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.Consumer.Read.Postal | |
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 }}/address-registry | |
image-file: ar-producer-image.tar | |
image-name: producer | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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 }}/address-registry | |
image-file: ar-producer-snapshot-oslo-image.tar | |
image-name: producer-snapshot-oslo | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.Producer.Snapshot.Oslo | |
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 }}/address-registry | |
image-file: ar-snapshot-verifier-image.tar | |
image-name: snapshot-verifier | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.Snapshot.Verifier | |
semver: ${{ needs.set-release-version.outputs.version }} | |
dotnet-version: ${{ vars.VBR_DOTNET_VERSION_8 }} | |
secrets: inherit | |
build-cache-warmer: | |
runs-on: ubuntu-latest | |
needs: [ set-release-version ] | |
steps: | |
- name: Checkout Code | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Containerize | |
shell: bash | |
run: docker build . --no-cache --tag $TAG --build-arg BUILD_NUMBER=$SEMVER | |
working-directory: src/AddressRegistry.CacheWarmer | |
env: | |
TAG: ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/address-registry/cache-warmer:${{ needs.set-release-version.outputs.version }} | |
SEMVER: ${{ needs.set-release-version.outputs.version }} | |
- name: Show images | |
shell: bash | |
run: docker images | |
- name: Save Image | |
if: ${{ needs.set-release-version.outputs.version }} != 'none' | |
shell: bash | |
run: docker image save ${{ vars.VBR_DEVOPS_DOCKER_REGISTRY }}/address-registry/cache-warmer:${{ needs.set-release-version.outputs.version }} -o ~/ar-cache-warmer-image.tar | |
- name: Upload image | |
if: ${{ needs.set-release-version.outputs.version }} != 'none' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cache-warmer-${{ needs.set-release-version.outputs.version }} | |
path: ~/ar-cache-warmer-image.tar | |
pack-api-backoffice: | |
name: Pack Api BackOffice | |
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.AddressRegistry.Api.BackOffice | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.Api.BackOffice | |
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.AddressRegistry.Api.BackOffice.Abstractions | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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.AddressRegistry.Api.Oslo | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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.AddressRegistry.Api.Extract | |
test-project: AddressRegistry.Tests | |
build-project: AddressRegistry.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: AddressRegistry.Tests | |
build-project: AddressRegistry.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, | |
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, | |
build-consumer-read-municipality, | |
build-consumer-read-postal, | |
build-consumer-read-streetname, | |
build-producer, | |
build-producer-snapshot-oslo, | |
build-cache-warmer, | |
build-lambda-backoffice, | |
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 | |
uses: actions/download-artifact@v4 | |
continue-on-error: false | |
with: | |
name: nuget-Be.Vlaanderen.Basisregisters.AddressRegistry.Api.BackOffice-${{ needs.set-release-version.outputs.version }} | |
path: dist/nuget/ | |
- name: Download NuGet Api BackOffice Abstractions | |
uses: actions/download-artifact@v4 | |
continue-on-error: false | |
with: | |
name: nuget-Be.Vlaanderen.Basisregisters.AddressRegistry.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.AddressRegistry.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.AddressRegistry.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 (DevOps) | |
uses: aws-actions/configure-aws-credentials@v4.0.2 | |
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://s3-vbr-lam-ar-sqsbackofficefunction-362233117987/$SEMVER/lambda.zip | |
aws s3 cp ~/lambda.zip s3://s3-vbr-lam-ar-sqsbackofficefunction-362233117987/$SEMVER/lambda.zip | |
env: | |
SEMVER: ${{ needs.release.outputs.version }} | |
- name: Configure AWS credentials (New Production) | |
uses: aws-actions/configure-aws-credentials@v4.0.2 | |
with: | |
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_NEWPRD }} | |
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_NEWPRD }} | |
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }} | |
- name: Login to Amazon ECR (New Production) | |
uses: aws-actions/amazon-ecr-login@v2 | |
- name: Push Lambda functions to S3 New Production | |
shell: bash | |
run: | | |
echo Push Lambda functions to S3 New Production | |
echo aws s3 cp ~/lambda.zip s3://077849980894-vbr-prd-lam-ar-sqsbackoffice/$SEMVER/lambda.zip | |
aws s3 cp ~/lambda.zip s3://077849980894-vbr-prd-lam-ar-sqsbackoffice/$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 | |
uses: actions/download-artifact@v4 | |
with: | |
name: nuget-Be.Vlaanderen.Basisregisters.AddressRegistry.Api.BackOffice-${{ needs.release.outputs.version }} | |
path: ~/ | |
- name: Download NuGet package api-backoffice-abstractions | |
uses: actions/download-artifact@v4 | |
with: | |
name: nuget-Be.Vlaanderen.Basisregisters.AddressRegistry.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.AddressRegistry.Api.Oslo-${{ needs.release.outputs.version }} | |
path: ~/ | |
- name: Download NuGet package api-extract | |
uses: actions/download-artifact@v4 | |
with: | |
name: nuget-Be.Vlaanderen.Basisregisters.AddressRegistry.Api.Extract-${{ needs.release.outputs.version }} | |
path: ~/ | |
- name: Publish packages to NuGet | |
shell: bash | |
run: | | |
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.AddressRegistry.Api.BackOffice.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY | |
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.AddressRegistry.Api.BackOffice.Abstractions.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY | |
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.AddressRegistry.Api.Oslo.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY | |
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.AddressRegistry.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: Address | |
# 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' | |
, 'consumer-read-municipality' | |
, 'consumer-read-streetname' | |
, 'consumer-read-postal' | |
, 'producer' | |
, 'producer-snapshot-oslo' | |
, 'cache-warmer' | |
, 'snapshot-verifier' | |
] | |
steps: | |
- name: Configure AWS credentials | |
uses: aws-actions/configure-aws-credentials@v4.0.2 | |
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 mr-$IMAGE-image.tar | |
docker image load -i ~/ar-$IMAGE-image.tar | |
env: | |
IMAGE: ${{ matrix.image }} | |
- name: Push artifacts to ECR | |
shell: bash | |
run: | | |
echo $IMAGE:$SEMVER | |
docker push $BUILD_DOCKER_REGISTRY/address-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 ] | |
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/slack-github-action@v1.26.0 | |
with: | |
channel-id: '#team-dinosaur-dev' | |
slack-message: Deployment of address-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: [ | |
'address-api', | |
'address-backoffice-api', | |
'address-consumer', | |
'address-consumer-municipality', | |
'address-consumer-streetname', | |
'address-consumer-postal', | |
'address-producer', | |
'address-producer-snapshot-oslo', | |
'address-projections', | |
'address-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 to tasks test | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
services: [ | |
'address-cache-warmer', | |
'address-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/configure-aws-credentials@v4.0.2 | |
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@main | |
with: | |
function-name: ar-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_services_to_test, deploy_tasks_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/slack-github-action@v1.26.0 | |
with: | |
channel-id: '#team-dinosaur-dev' | |
slack-message: Deployment of address-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_new_staging_start_slack: | |
if: github.repository_owner == 'Informatievlaanderen' | |
needs: [ deploy_to_test_finish_slack ] | |
name: Deploy to new 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/slack-github-action@v1.26.0 | |
with: | |
channel-id: '#team-dinosaur-dev' | |
slack-message: Deployment of address-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_new_staging: | |
if: github.repository_owner == 'Informatievlaanderen' | |
needs: [ deploy_to_new_staging_start_slack, release ] | |
name: Deploy services to new staging | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
services: [ | |
'address-api', | |
'address-backoffice-api', | |
'address-consumer', | |
'address-consumer-municipality', | |
'address-consumer-streetname', | |
'address-consumer-postal', | |
'address-producer', | |
'address-producer-snapshot-oslo', | |
'address-projections', | |
'address-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_new_staging: | |
if: github.repository_owner == 'Informatievlaanderen' | |
needs: [ deploy_to_new_staging_start_slack, release ] | |
name: Deploy to tasks new staging | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
services: [ | |
'address-cache-warmer', | |
'address-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_new_staging: | |
if: github.repository_owner == 'Informatievlaanderen' | |
needs: [ deploy_services_to_new_staging, deploy_tasks_to_new_staging, release ] | |
name: Deploy lambda to new staging | |
runs-on: ubuntu-latest | |
steps: | |
- name: CD Lambda(s) Configure credentials | |
uses: aws-actions/configure-aws-credentials@v4.0.2 | |
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@main | |
with: | |
function-name: ar-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_new_staging_finish_slack: | |
if: github.repository_owner == 'Informatievlaanderen' | |
needs: [ deploy_lambda_to_new_staging ] | |
name: Deploy to new 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/slack-github-action@v1.26.0 | |
with: | |
channel-id: '#team-dinosaur-dev' | |
slack-message: Deployment of address-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 }} |