Skip to content

Release

Release #119

Workflow file for this run

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@v3
with:
persist-credentials: false
- name: Setup Node.js
uses: actions/[email protected]
- 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: streetname-registry
build-target: Containerize_ApiBackOffice
image-file: sr-api-backoffice-image.tar
image-name: api-backoffice
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.BackOffice
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-api-legacy:
name: Build Api Legacy
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: streetname-registry
build-target: Containerize_ApiLegacy
image-file: sr-api-legacy-image.tar
image-name: api-legacy
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.Legacy
semver: ${{ needs.set-release-version.outputs.version }}
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: streetname-registry
build-target: Containerize_ApiOslo
image-file: sr-api-oslo-image.tar
image-name: api-oslo
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.Oslo
semver: ${{ needs.set-release-version.outputs.version }}
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: streetname-registry
build-target: Containerize_ApiExtract
image-file: sr-api-extract-image.tar
image-name: api-extract
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.Extract
semver: ${{ needs.set-release-version.outputs.version }}
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: streetname-registry
build-target: Containerize_Projector
image-file: sr-projector-image.tar
image-name: projector
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Projector
semver: ${{ needs.set-release-version.outputs.version }}
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: streetname-registry
build-target: Containerize_ProjectionsBackOffice
image-file: sr-projections-backoffice-image.tar
image-name: projections-backoffice
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Projections.BackOffice
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-projections-syndication:
name: Build Projections Syndication
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: streetname-registry
build-target: Containerize_ProjectionsSyndication
image-file: sr-projections-syndication-image.tar
image-name: projections-syndication
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Projections.Syndication
semver: ${{ needs.set-release-version.outputs.version }}
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: streetname-registry
build-target: Containerize_Consumer
image-file: sr-consumer-image.tar
image-name: consumer
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Consumer
semver: ${{ needs.set-release-version.outputs.version }}
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: streetname-registry
build-target: Containerize_Producer
image-file: sr-producer-image.tar
image-name: producer
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Producer
semver: ${{ needs.set-release-version.outputs.version }}
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: streetname-registry
build-target: Containerize_ProducerSnapshotOslo
image-file: sr-producer-snapshot-oslo-image.tar
image-name: producer-snapshot-oslo
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Producer.Snapshot.Oslo
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-migrator-streetname:
name: Build Migrator 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: streetname-registry
build-target: Containerize_MigratorStreetName
image-file: sr-migrator-streetname-image.tar
image-name: migrator-streetname
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Migrator.StreetName
semver: ${{ needs.set-release-version.outputs.version }}
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: streetname-registry
build-target: Containerize_SnapshotVerifier
image-file: sr-snapshot-verifier-image.tar
image-name: snapshot-verifier
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Snapshot.Verifier
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-consumer-read-postal:
name: Build Consumer Read 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: streetname-registry
build-target: Containerize_ConsumerReadPostal
image-file: sr-consumer-read-postal-image.tar
image-name: consumer-read-postal
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Consumer.Read.Postal
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
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.StreetNameRegistry.Api.BackOffice
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.BackOffice
semver: ${{ needs.set-release-version.outputs.version }}
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.StreetNameRegistry.Api.BackOffice.Abstractions
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.BackOffice.Abstractions
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
pack-api-legacy:
name: Pack Api Legacy
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.StreetNameRegistry.Api.Legacy
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.Legacy
semver: ${{ needs.set-release-version.outputs.version }}
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.StreetNameRegistry.Api.Oslo
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.Oslo
semver: ${{ needs.set-release-version.outputs.version }}
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.StreetNameRegistry.Api.Extract
test-project: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.Extract
semver: ${{ needs.set-release-version.outputs.version }}
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: StreetNameRegistry.Tests
build-project: StreetNameRegistry.Api.BackOffice.Handlers.Lambda
semver: ${{ needs.set-release-version.outputs.version }}
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-legacy
, pack-api-oslo
, pack-api-extract
, build-api-backoffice
, build-api-legacy
, build-api-oslo
, build-api-extract
, build-projector
, build-projections-backoffice
, build-projections-syndication
, build-consumer
, build-producer
, build-producer-snapshot-oslo
, build-migrator-streetname
, build-lambda-backoffice
, build-snapshot-verifier
, build-consumer-read-postal]
outputs:
version: ${{ steps.set-version.outputs.version }}
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
persist-credentials: false
- name: Cache NPM
uses: actions/cache@v3
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@v3
- name: Setup Python
uses: actions/setup-python@v3
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 install --legacy-peer-deps
- 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@v3
continue-on-error: false
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.BackOffice-${{ needs.set-release-version.outputs.version }}
path: dist/nuget/
- name: Download NuGet Api BackOffice Abstractions
uses: actions/download-artifact@v3
continue-on-error: false
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.BackOffice.Abstractions-${{ needs.set-release-version.outputs.version }}
path: dist/nuget/
- name: Download NuGet Api Legacy
uses: actions/download-artifact@v3
continue-on-error: false
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.Legacy-${{ needs.set-release-version.outputs.version }}
path: dist/nuget/
- name: Download NuGet Api Oslo
uses: actions/download-artifact@v3
continue-on-error: false
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.Oslo-${{ needs.set-release-version.outputs.version }}
path: dist/nuget/
- name: Download NuGet Api Extract
uses: actions/download-artifact@v3
continue-on-error: false
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.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@v3
continue-on-error: false
with:
name: lambda-backoffice-${{ needs.release.outputs.version }}
path: ~/
- name: Configure AWS credentials (Test)
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_TST }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_TST }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Login to Amazon ECR (Test)
uses: aws-actions/[email protected]
- name: Push Lambda functions to S3 Test
shell: bash
run: |
echo Push Lambda functions to S3 Test
echo aws s3 cp ~/lambda.zip s3://196194905350-vbr-test-lam-sr-sqsbackoffice/$SEMVER/lambda.zip
aws s3 cp ~/lambda.zip s3://196194905350-vbr-test-lam-sr-sqsbackoffice/$SEMVER/lambda.zip
env:
SEMVER: ${{ needs.release.outputs.version }}
- name: Configure AWS credentials (Staging)
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.VBR_AWS_REGION }}
- name: Login to Amazon ECR (Staging)
uses: aws-actions/[email protected]
- name: Push Lambda functions to S3 Staging
shell: bash
run: |
echo Push Lambda functions to S3 Staging
echo aws s3 cp ~/lambda.zip s3://s3-vbr-stg-basisregisters-lam-sr-sqsbackofficehandlerfunction/$SEMVER/lambda.zip
aws s3 cp ~/lambda.zip s3://s3-vbr-stg-basisregisters-lam-sr-sqsbackofficehandlerfunction/$SEMVER/lambda.zip
env:
SEMVER: ${{ needs.release.outputs.version }}
- name: Configure AWS credentials (New Production)
uses: aws-actions/configure-aws-credentials@v1-node16
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/[email protected]
- 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-sr-sqsbackoffice/$SEMVER/lambda.zip
aws s3 cp ~/lambda.zip s3://077849980894-vbr-prd-lam-sr-sqsbackoffice/$SEMVER/lambda.zip
env:
SEMVER: ${{ needs.release.outputs.version }}
- name: Configure AWS credentials (Production)
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_PRD }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_PRD }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Login to Amazon ECR (Production)
uses: aws-actions/[email protected]
- name: Push Lambda functions to S3 Production
shell: bash
run: |
echo Push Lambda functions to S3 Production
echo aws s3 cp ~/lambda.zip s3://s3-vbr-prd-basisregisters-lam-sr-sqsbackofficehandlerfunction/$SEMVER/lambda.zip
aws s3 cp ~/lambda.zip s3://s3-vbr-prd-basisregisters-lam-sr-sqsbackofficehandlerfunction/$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@v3
- name: Setup .NET Core
uses: actions/setup-dotnet@v2
with:
dotnet-version: ${{ secrets.VBR_DOTNET_VERSION }}
- name: .NET version
shell: bash
run: dotnet --info
- name: Download NuGet package api-backoffice
uses: actions/download-artifact@v3
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.BackOffice-${{ needs.release.outputs.version }}
path: ~/
- name: Download NuGet package api-backoffice-abstractions
uses: actions/download-artifact@v3
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.BackOffice.Abstractions-${{ needs.release.outputs.version }}
path: ~/
- name: Download NuGet package api-legacy
uses: actions/download-artifact@v3
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.Legacy-${{ needs.release.outputs.version }}
path: ~/
- name: Download NuGet package api-oslo
uses: actions/download-artifact@v3
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.Oslo-${{ needs.release.outputs.version }}
path: ~/
- name: Download NuGet package api-extract
uses: actions/download-artifact@v3
with:
name: nuget-Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.Extract-${{ needs.release.outputs.version }}
path: ~/
- name: Publish packages to NuGet
shell: bash
run: |
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.BackOffice.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.BackOffice.Abstractions.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.Legacy.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.StreetNameRegistry.Api.Oslo.$SEMVER.nupkg --source nuget.org --api-key $NUGET_API_KEY
dotnet nuget push ~/Be.Vlaanderen.Basisregisters.StreetNameRegistry.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@v3
- 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@v3
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@v3
env:
cache-name: cache-pip
with:
path: ~/.cache/pip
key: ${{ runner.os }}-build-${{ env.cache-name }}
- name: Setup Python
uses: actions/setup-python@v3
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: StreetName
# JIRA_PROJECT: GAWR
# JIRA_VERSION: ${{ needs.release.outputs.version }}
push_images_to_test:
if: needs.release.outputs.version != 'none'
needs: [ release ]
name: Push images to Test
runs-on: ubuntu-latest
strategy:
matrix:
image: [
'api-backoffice'
, 'api-legacy'
, 'api-oslo'
, 'api-extract'
, 'projector'
, 'projections-syndication'
, 'projections-backoffice'
, 'consumer'
, 'producer'
, 'producer-snapshot-oslo'
, 'migrator-streetname'
, 'snapshot-verifier'
]
steps:
- name: Configure AWS credentials (Test)
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_TST }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_TST }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Login to Amazon ECR (Test)
uses: aws-actions/[email protected]
# Download artifact
- name: Download artifact
uses: actions/download-artifact@v3
continue-on-error: false
with:
name: ${{ matrix.image }}-${{ needs.release.outputs.version }}
path: ~/
# Load artifact
- name: Load artifact
shell: bash
run: |
echo sr-$IMAGE-image.tar
docker image load -i ~/sr-$IMAGE-image.tar
env:
IMAGE: ${{ matrix.image }}
- name: Push artifacts to ECR Test
shell: bash
run: |
echo $IMAGE:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/streetname-registry/$IMAGE:$SEMVER
env:
BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
IMAGE: ${{ matrix.image }}
SEMVER: ${{ needs.release.outputs.version }}
WORKSPACE: ${{ github.workspace }}
push_images_to_staging:
if: needs.release.outputs.version != 'none'
needs: [ release ]
name: Push images to Staging
runs-on: ubuntu-latest
strategy:
matrix:
image: [
'api-backoffice'
, 'api-legacy'
, 'api-oslo'
, 'api-extract'
, 'projector'
, 'projections-syndication'
, 'projections-backoffice'
, 'consumer'
, 'producer'
, 'producer-snapshot-oslo'
, 'migrator-streetname'
, 'snapshot-verifier'
]
steps:
- name: Configure AWS credentials (Staging)
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Login to Amazon ECR (Staging)
uses: aws-actions/[email protected]
# Download artifact
- name: Download artifact
uses: actions/download-artifact@v3
continue-on-error: false
with:
name: ${{ matrix.image }}-${{ needs.release.outputs.version }}
path: ~/
# Load artifact
- name: Load artifact
shell: bash
run: |
echo sr-$IMAGE-image.tar
docker image load -i ~/sr-$IMAGE-image.tar
env:
IMAGE: ${{ matrix.image }}
- name: Push artifacts to ECR Staging
shell: bash
run: |
echo $IMAGE:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/streetname-registry/$IMAGE:$SEMVER $BUILD_DOCKER_REGISTRY/streetname-registry/$IMAGE:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/streetname-registry/$IMAGE:$SEMVER
env:
BUILD_DOCKER_REGISTRY_TST: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY }}
IMAGE: ${{ matrix.image }}
SEMVER: ${{ needs.release.outputs.version }}
WORKSPACE: ${{ github.workspace }}
push_images_to_newproduction:
if: needs.release.outputs.version != 'none'
needs: [ release ]
name: Push images to New Production
runs-on: ubuntu-latest
strategy:
matrix:
image: [
'api-backoffice'
, 'api-legacy'
, 'api-oslo'
, 'api-extract'
, 'projector'
, 'projections-syndication'
, 'projections-backoffice'
, 'consumer'
, 'producer'
, 'producer-snapshot-oslo'
, 'migrator-streetname'
, 'snapshot-verifier'
]
steps:
- name: Configure AWS credentials (New Production)
uses: aws-actions/configure-aws-credentials@v1-node16
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/[email protected]
# Download artifact
- name: Download artifact
uses: actions/download-artifact@v3
continue-on-error: false
with:
name: ${{ matrix.image }}-${{ needs.release.outputs.version }}
path: ~/
# Load artifact
- name: Load artifact
shell: bash
run: |
echo sr-$IMAGE-image.tar
docker image load -i ~/sr-$IMAGE-image.tar
env:
IMAGE: ${{ matrix.image }}
- name: Push artifacts to ECR New Production
shell: bash
run: |
echo $IMAGE:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/streetname-registry/$IMAGE:$SEMVER $BUILD_DOCKER_REGISTRY_NEWPRD/streetname-registry/$IMAGE:$SEMVER
docker push $BUILD_DOCKER_REGISTRY_NEWPRD/streetname-registry/$IMAGE:$SEMVER
env:
BUILD_DOCKER_REGISTRY_TST: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
BUILD_DOCKER_REGISTRY_NEWPRD: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_NEWPRD }}
IMAGE: ${{ matrix.image }}
SEMVER: ${{ needs.release.outputs.version }}
WORKSPACE: ${{ github.workspace }}
push_images_to_production:
if: needs.release.outputs.version != 'none'
needs: [ release ]
name: Push images to Production
runs-on: ubuntu-latest
strategy:
matrix:
image: [
'api-backoffice'
, 'api-legacy'
, 'api-oslo'
, 'api-extract'
, 'projector'
, 'projections-syndication'
, 'projections-backoffice'
, 'consumer'
, 'producer'
, 'producer-snapshot-oslo'
, 'migrator-streetname'
]
steps:
- name: Configure AWS credentials (Production)
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_PRD }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_PRD }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Login to Amazon ECR (Production)
uses: aws-actions/[email protected]
# Download artifact
- name: Download artifact
uses: actions/download-artifact@v3
continue-on-error: false
with:
name: ${{ matrix.image }}-${{ needs.release.outputs.version }}
path: ~/
# Load artifact
- name: Load artifact
shell: bash
run: |
echo sr-$IMAGE-image.tar
docker image load -i ~/sr-$IMAGE-image.tar
env:
IMAGE: ${{ matrix.image }}
- name: Push artifacts to ECR Production
shell: bash
run: |
echo $IMAGE:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/streetname-registry/$IMAGE:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/streetname-registry/$IMAGE:$SEMVER
docker push $BUILD_DOCKER_REGISTRY_PRD/streetname-registry/$IMAGE:$SEMVER
env:
BUILD_DOCKER_REGISTRY_TST: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
BUILD_DOCKER_REGISTRY_PRD: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_PRD }}
IMAGE: ${{ matrix.image }}
SEMVER: ${{ needs.release.outputs.version }}
WORKSPACE: ${{ github.workspace }}
deploy_to_test_start_slack:
if: github.repository_owner == 'Informatievlaanderen'
needs: [ push_images_to_test, upload-lambda ]
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 streetname-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_to_test:
if: github.repository_owner == 'Informatievlaanderen'
needs: [ push_images_to_test, release ]
name: Deploy to test
runs-on: ubuntu-latest
strategy:
matrix:
services: [
'streetname-registry-api'
, 'streetname-registry-projections'
, 'streetname-registry-producer'
, 'streetname-registry-producer-snapshot-oslo'
, 'streetname-registry-projections-backoffice'
, 'streetname-registry-snapshot-verifier'
]
steps:
- name: Deploy services
env:
BUILD_URL: ${{ secrets.VBR_AWS_BUILD_API }}/${{matrix.services}}
STATUS_URL: ${{ secrets.VBR_AWS_BUILD_STATUS_API }}/${{matrix.services}}
uses: informatievlaanderen/awscurl-polling-action/polling-action@main
with:
environment: test
version: ${{ needs.release.outputs.version }}
status-url: $STATUS_URL
deploy-url: $BUILD_URL
access-key: ${{ secrets.VBR_AWS_BUILD_USER_ACCESS_KEY_ID }}
secret-key: ${{ secrets.VBR_AWS_BUILD_USER_SECRET_ACCESS_KEY }}
region: eu-west-1
interval: 2
- 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_lambda_to_test:
if: github.repository_owner == 'Informatievlaanderen'
needs: [ deploy_to_test, release ]
name: Deploy lambda to test
runs-on: ubuntu-latest
steps:
- name: CD Lambda(s) Configure credentials
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_TST }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_TST }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Prepare Lambda(s)
shell: bash
run: |
echo aws s3 cp s3://196194905350-vbr-test-lam-sr-sqsbackoffice/$VERSION/lambda.zip s3://196194905350-vbr-test-lam-sr-sqsbackoffice/lambda.zip --copy-props none
aws s3 cp s3://196194905350-vbr-test-lam-sr-sqsbackoffice/$VERSION/lambda.zip s3://196194905350-vbr-test-lam-sr-sqsbackoffice/lambda.zip --copy-props none
env:
VERSION: ${{ needs.release.outputs.version }}
- name: Promote Lambda(s)
shell: bash
run: |
echo pulling awscurl docker image
docker pull ghcr.io/okigan/awscurl:latest
echo docker run --rm okigan/awscurl --access_key $ACCESS_KEY_ID --secret_key $SECRET_ACCESS_KEY_ID --region $REGION -X POST -d '{ "functionName": "sr-sqsbackofficefunction", "project": "basisregisters", "domain": "basisregisters" }' $PROMOTEURL/test
docker run --rm okigan/awscurl --access_key $ACCESS_KEY_ID --secret_key $SECRET_ACCESS_KEY_ID --region $REGION -X POST -d '{ "functionName": "sr-sqsbackofficefunction", "project": "basisregisters", "domain": "basisregisters" }' $PROMOTEURL/test
env:
ACCESS_KEY_ID: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_TST }}
SECRET_ACCESS_KEY_ID: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_TST }}
REGION: ${{ secrets.VBR_AWS_REGION_PRD }}
PROMOTEURL: ${{ secrets.VBR_AWS_PROMOTE_LAMBDA_BASEURL }}
deploy_to_test_finish_slack:
if: github.repository_owner == 'Informatievlaanderen'
needs: [ deploy_lambda_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 streetname-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_staging_start_slack:
if: github.repository_owner == 'Informatievlaanderen'
needs: [ push_images_to_staging, deploy_to_test_finish_slack ]
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 streetname-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_to_staging:
if: github.repository_owner == 'Informatievlaanderen'
needs: [ push_images_to_staging, deploy_to_staging_start_slack, release ]
name: Deploy to staging
runs-on: ubuntu-latest
strategy:
matrix:
services: [
'streetname-registry-api'
, 'streetname-registry-projections'
, 'streetname-registry-backoffice-api'
, 'streetname-registry-consumer'
, 'streetname-registry-producer'
, 'streetname-registry-migrator-streetname'
, 'streetname-registry-producer-snapshot-oslo'
, 'streetname-registry-projections-backoffice'
, 'streetname-registry-snapshot-verifier'
]
steps:
- name: CD services
env:
BUILD_URL: ${{ secrets.VBR_AWS_BUILD_API }}/${{matrix.services}}
STATUS_URL: ${{ secrets.VBR_AWS_BUILD_STATUS_API }}/${{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_BUILD_USER_ACCESS_KEY_ID }}
secret-key: ${{ secrets.VBR_AWS_BUILD_USER_SECRET_ACCESS_KEY }}
region: eu-west-1
interval: 2
- name: output CD services
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_staging:
if: github.repository_owner == 'Informatievlaanderen'
needs: [ deploy_to_staging, release ]
name: Deploy lambda to staging
runs-on: ubuntu-latest
steps:
- name: CD Lambda(s) Configure credentials
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Prepare Lambda(s)
shell: bash
run: |
echo aws s3 cp s3://s3-vbr-stg-basisregisters-lam-sr-sqsbackofficehandlerfunction/$VERSION/lambda.zip s3://s3-vbr-stg-basisregisters-lam-sr-sqsbackofficehandlerfunction/lambda.zip --copy-props none
aws s3 cp s3://s3-vbr-stg-basisregisters-lam-sr-sqsbackofficehandlerfunction/$VERSION/lambda.zip s3://s3-vbr-stg-basisregisters-lam-sr-sqsbackofficehandlerfunction/lambda.zip --copy-props none
env:
VERSION: ${{ needs.release.outputs.version }}
- name: Promote Lambda(s)
shell: bash
run: |
echo pulling awscurl docker image
docker pull ghcr.io/okigan/awscurl:latest
echo docker run --rm okigan/awscurl --access_key $ACCESS_KEY_ID --secret_key $SECRET_ACCESS_KEY_ID --region $REGION -X POST -d '{ "functionName": "sr-sqsbackofficehandlerfunction", "project": "basisregisters", "domain": "basisregisters" }' $PROMOTEURL/stg
docker run --rm okigan/awscurl --access_key $ACCESS_KEY_ID --secret_key $SECRET_ACCESS_KEY_ID --region $REGION -X POST -d '{ "functionName": "sr-sqsbackofficehandlerfunction", "project": "basisregisters", "domain": "basisregisters" }' $PROMOTEURL/stg
env:
ACCESS_KEY_ID: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_TST }}
SECRET_ACCESS_KEY_ID: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_TST }}
REGION: ${{ secrets.VBR_AWS_REGION_PRD }}
PROMOTEURL: ${{ secrets.VBR_AWS_PROMOTE_LAMBDA_BASEURL }}
deploy_to_staging_finish_slack:
if: github.repository_owner == 'Informatievlaanderen'
needs: [ deploy_lambda_to_staging ]
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 streetname-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 }}