Skip to content

feat: or-1929 push images to test env (ik4) #666

feat: or-1929 push images to test env (ik4)

feat: or-1929 push images to test env (ik4) #666

Workflow file for this run

name: Main
on:
push:
branches: [ main ]
workflow_dispatch:
concurrency: CI
jobs:
analyze-code:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
# needed for Sonar, default is 11 and is decprecated
- name: Set up JDK 17
uses: actions/setup-java@v1
with:
java-version: 17
- 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: Parse repository name
run: echo REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") >> $GITHUB_ENV
shell: bash
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ secrets.VBR_DOTNET_VERSION }}
- name: .NET version
shell: bash
run: dotnet --info
- name: Cache SonarCloud packages
uses: actions/cache@v3
with:
path: ~/sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Restore dotnet tools
shell: bash
run: |
dotnet tool restore
- name: Cache SonarCloud scanner
id: cache-sonar-scanner
uses: actions/cache@v3
with:
path: ./.sonar/scanner
key: ${{ runner.os }}-sonar-scanner
restore-keys: ${{ runner.os }}-sonar-scanner
- name: Install SonarCloud scanner
if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
shell: bash
run: |
mkdir .sonar
mkdir .sonar/scanner
dotnet tool update dotnet-sonarscanner --tool-path ./.sonar/scanner
- name: Start sonar scanner
env:
GITHUB_TOKEN: ${{ secrets.VBR_ACTIONS_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
shell: bash
run: |
./.sonar/scanner/dotnet-sonarscanner begin /k:"Informatievlaanderen_association-registry" /o:"informatievlaanderen" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.dotcover.reportsPaths=dotCover.Output.html
- name: Paket install
shell: bash
run: dotnet paket install
- name: Paket restore
shell: bash
run: dotnet paket restore
- name: Dotnet restore
shell: bash
run: dotnet restore --runtime linux-x64
- name: Dotnet build
shell: bash
run: dotnet build --no-restore
- name: Analyze with sonar scanner
env:
GITHUB_TOKEN: ${{ secrets.VBR_ACTIONS_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
shell: bash
run: |
./.sonar/scanner/dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
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
- name: Setup Node.js
uses: actions/setup-node@v3
- name: Node version
shell: bash
run: node --version
- name: Install NPM dependencies
shell: bash
run: npm install --legacy-peer-deps
- name: Run Semantic Release dry-run
shell: bash
run: npx semantic-release --dry-run
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
GITHUB_TOKEN: ${{ secrets.VBR_ACTIONS_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-acm-api:
name: Build ACM Api
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen'
needs: [ set-release-version ]
with:
build-target: Containerize_AcmApi
image-file: ar-acm-api-image.tar
image-name: acm-api
test-project: AssociationRegistry.Test.Acm.Api
build-project: AssociationRegistry.Acm.Api/
semver: ${{ needs.set-release-version.outputs.version }}
run-docker-acm: true
run-docker-wiremock: false
run-docker-db: true
pre-gen-marten: true
run-docker-elasticsearch: false
secrets: inherit
build-public-api:
name: Build Public Api
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen'
needs: [ set-release-version ]
with:
build-target: Containerize_PublicApi
image-file: ar-public-api-image.tar
image-name: public-api
test-project: AssociationRegistry.Test.Public.Api
build-project: AssociationRegistry.Public.Api/
semver: ${{ needs.set-release-version.outputs.version }}
run-docker-acm: false
run-docker-wiremock: false
run-docker-db: true
pre-gen-marten: false
run-docker-elasticsearch: true
secrets: inherit
build-public-projections:
name: Build Public Projections
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen'
needs: [ set-release-version ]
with:
build-target: Containerize_PublicProjections
image-file: ar-public-projections-image.tar
image-name: public-projections
test-project: AssociationRegistry.Test.Public.Api
build-project: AssociationRegistry.Public.ProjectionHost/
semver: ${{ needs.set-release-version.outputs.version }}
run-docker-acm: false
run-docker-wiremock: false
run-docker-db: true
pre-gen-marten: true
run-docker-elasticsearch: true
secrets: inherit
build-admin-api:
name: Build Admin Api
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen'
needs: [ set-release-version ]
with:
build-target: Containerize_AdminApi
image-file: ar-admin-api-image.tar
image-name: admin-api
test-project: AssociationRegistry.Test.Admin.Api
build-project: AssociationRegistry.Admin.Api/
semver: ${{ needs.set-release-version.outputs.version }}
run-docker-acm: true
run-docker-wiremock: true
run-docker-db: true
run-docker-elasticsearch: true
pre-gen-marten: true
secrets: inherit
build-admin-projections:
name: Build Admin Projections
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen'
needs: [ set-release-version ]
with:
build-target: Containerize_AdminProjections
image-file: ar-admin-projections-image.tar
image-name: admin-projections
test-project: AssociationRegistry.Test.Admin.Api
build-project: AssociationRegistry.Admin.ProjectionHost/
semver: ${{ needs.set-release-version.outputs.version }}
run-docker-acm: true
run-docker-wiremock: true
run-docker-db: true
pre-gen-marten: true
run-docker-elasticsearch: true
secrets: inherit
#
# build-acm-api:
# if: github.repository_owner == 'Informatievlaanderen'
# name: Build ACM Api
# runs-on: ubuntu-latest
# needs: [set-release-version]
#
# steps:
# - name: Check version
# shell: bash
# run: echo $SEMVER
# env:
# SEMVER: ${{ needs.set-release-version.outputs.version }}
#
# - name: Checkout Code
# uses: actions/checkout@v3
#
# - name: Run es container
# shell: bash
# run: |
# docker run -d --name elasticsearch -p 9200:9200 -e ELASTIC_PASSWORD=local_development -e discovery.type=single-node -e xpack.security.transport.ssl.enabled=false docker.elastic.co/elasticsearch/elasticsearch:8.4.3
#
# - name: Run ACM container
# shell: bash
# run: |
# docker run -d --name acm -p 5051:80 -v ${{ github.workspace }}/identityserver:/home/identityserver ghcr.io/informatievlaanderen/identity-server-fake:1284967
#
# - name: Run db container
# shell: bash
# run: |
# docker run -d --name db -p 5432:5432 -e POSTGRES_USER=root -e POSTGRES_PASSWORD=root -e POSTGRES_DB=verenigingsregister postgres:15.0
#
# - 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: Parse repository name
# run: echo REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") >> $GITHUB_ENV
# shell: bash
#
# - name: Setup .NET Core
# uses: actions/setup-dotnet@v3
# with:
# dotnet-version: ${{ secrets.VBR_DOTNET_VERSION }}
#
# - name: .NET version
# shell: bash
# run: dotnet --info
#
# - name: Cache SonarCloud packages
# uses: actions/cache@v3
# with:
# path: ~/sonar/cache
# key: ${{ runner.os }}-sonar
# restore-keys: ${{ runner.os }}-sonar
#
# - name: Restore dotnet tools
# shell: bash
# run: |
# dotnet tool restore
#
# - name: Cache SonarCloud scanner
# id: cache-sonar-scanner
# uses: actions/cache@v3
# with:
# path: ./.sonar/scanner
# key: ${{ runner.os }}-sonar-scanner
# restore-keys: ${{ runner.os }}-sonar-scanner
#
# - name: Install SonarCloud scanner
# if: steps.cache-sonar-scanner.outputs.cache-hit != 'true'
# shell: bash
# run: |
# mkdir .sonar
# mkdir .sonar/scanner
# dotnet tool update dotnet-sonarscanner --tool-path ./.sonar/scanner
#
# - name: Start sonar scanner
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# shell: bash
# run: |
# ./.sonar/scanner/dotnet-sonarscanner begin /k:"Informatievlaanderen_association-registry" /o:"informatievlaanderen" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.cs.dotcover.reportsPaths=dotCover.Output.html
#
# - name: Paket install
# shell: bash
# run: dotnet paket install
#
# - name: Paket restore
# shell: bash
# run: dotnet paket restore
#
# - name: Dotnet restore tests
# shell: bash
# run: dotnet restore test/AssociationRegistry.Test.Acm.Api --runtime linux-x64
#
# - name: Dotnet build tests
# shell: bash
# run: dotnet build --no-restore --runtime 'linux-x64' --self-contained -f net6.0 test/AssociationRegistry.Test.Acm.Api
#
# - name: Run all tests
# run: dotnet test test/AssociationRegistry.Test.Acm.Api
#
# - name: Dotnet restore
# shell: bash
# run: dotnet restore src/AssociationRegistry.Acm.Api/ --runtime linux-x64
#
# - name: Dotnet build
# shell: bash
# run: dotnet build --no-restore --runtime 'linux-x64' --self-contained -f net6.0 src/AssociationRegistry.Acm.Api/
#
# - name: Dotnet publish
# shell: bash
# run: dotnet publish -o dist/AssociationRegistry.Acm.Api/linux --no-build --no-restore --runtime 'linux-x64' --self-contained -f net6.0 src/AssociationRegistry.Acm.Api/
#
# - name: Containerize Acm Api
# shell: bash
# run: CI_BUILD_NUMBER=$SEMVER ./build.sh Containerize_AcmApi
# env:
# BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
# SEMVER: ${{ needs.set-release-version.outputs.version }}
#
# - name: Show images
# shell: bash
# run: docker images
#
# - name: Save Acm Api Image
# if: needs.set-release-version.outputs.version != 'none'
# shell: bash
# run: docker image save $BUILD_DOCKER_REGISTRY/association-registry/acm-api:$SEMVER -o ~/ar-acm-api-image.tar
# env:
# BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
# SEMVER: ${{ needs.set-release-version.outputs.version }}
#
# - name: Upload Acm Api artifact
# if: needs.set-release-version.outputs.version != 'none'
# uses: actions/upload-artifact@v3
# with:
# name: acm-api
# path: ~/ar-acm-api-image.tar
#
# - name: Analyze with sonar scanner
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
# shell: bash
# run: |
# ./.sonar/scanner/dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
#
# - name: Shows logs ACM container
# if: ${{ failure() }}
# shell: bash
# run: |
# docker logs acm
#
# - name: Shows logs elasticsearch container
# if: ${{ failure() }}
# shell: bash
# run: |
# docker logs elasticsearch
#
# - name: Shows logs db container
# if: ${{ failure() }}
# shell: bash
# run: |
# docker logs db
#
release:
if: github.repository_owner == 'Informatievlaanderen'
name: Semantic Release
runs-on: ubuntu-latest
needs: [ build-acm-api, build-public-api, build-public-projections, build-admin-api, build-admin-projections ]
outputs:
version: ${{ steps.set-version.outputs.version }}
steps:
# build
- name: Checkout Code
uses: actions/checkout@v3
- 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: Set up Python
uses: actions/setup-python@v4
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: Generate Token
id: generate_token # Add an ID to this step for reference
run: node .github/build-scripts/generate-token.js
env:
APP_ID: ${{ secrets.MYBOT_APP_ID }}
PRIVATE_KEY: ${{ secrets.MYBOT_PRIVATE_KEY }}
- name: Checkout Code
uses: actions/checkout@v4
with:
token: ${{ steps.generate_token.outputs.installationToken }}
- name: Install NPM dependencies
shell: bash
run: npm install --legacy-peer-deps
- name: Run Semantic Release
shell: bash
run: npx semantic-release
env:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
GITHUB_TOKEN: ${{ secrets.VBR_ACTIONS_TOKEN }}
GIT_COMMIT: ${{ github.sha }}
GIT_USERNAME: ${{ secrets.VBR_ACTIONS_TOKEN }}
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
#
# - name: Configure AWS credentials (Production)
# if: env.RELEASE_VERSION != 'none'
# uses: aws-actions/configure-aws-credentials@v4
# 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)
# if: env.RELEASE_VERSION != 'none'
# uses: aws-actions/amazon-ecr-login@v1
#
# - name: Push to Production
# if: env.RELEASE_VERSION != 'none'
# shell: bash
# run: |
# docker tag $BUILD_DOCKER_REGISTRY/organisation-registry/api:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/api:$SEMVER
# docker push $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/api:$SEMVER
#
# docker tag $BUILD_DOCKER_REGISTRY/organisation-registry/batch-agentschapzorgengezondheidftpdump:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/batch-agentschapzorgengezondheidftpdump:$SEMVER
# docker push $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/batch-agentschapzorgengezondheidftpdump:$SEMVER
#
# docker tag $BUILD_DOCKER_REGISTRY/organisation-registry/batch-vlaanderenbe:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/batch-vlaanderenbe:$SEMVER
# docker push $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/batch-vlaanderenbe:$SEMVER
#
# docker tag $BUILD_DOCKER_REGISTRY/organisation-registry/projections-elasticsearch:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/projections-elasticsearch:$SEMVER
# docker push $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/projections-elasticsearch:$SEMVER
#
# docker tag $BUILD_DOCKER_REGISTRY/organisation-registry/projections-delegations:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/projections-delegations:$SEMVER
# docker push $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/projections-delegations:$SEMVER
#
# docker tag $BUILD_DOCKER_REGISTRY/organisation-registry/projections-reporting:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/projections-reporting:$SEMVER
# docker push $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/projections-reporting:$SEMVER
#
# docker tag $BUILD_DOCKER_REGISTRY/organisation-registry/kbo-mutations:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/kbo-mutations:$SEMVER
# docker push $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/kbo-mutations:$SEMVER
#
# docker tag $BUILD_DOCKER_REGISTRY/organisation-registry/ui:$SEMVER $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/ui:$SEMVER
# docker push $BUILD_DOCKER_REGISTRY_PRD/organisation-registry/ui:$SEMVER
# env:
# BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY }}
# BUILD_DOCKER_REGISTRY_PRD: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_PRD }}
# SEMVER: ${{ env.RELEASE_VERSION }}
# WORKSPACE: ${{ github.workspace }}
publish_to_atlassian:
if: needs.release.outputs.version != 'none'
needs: [ release ]
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: Set up Python
uses: actions/setup-python@v4
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
if: needs.release.outputs.version != 'none'
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
if: needs.release.outputs.version != 'none'
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: Association
JIRA_PROJECT: OR
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
steps:
- name: Configure AWS credentials (Test)
if: needs.release.outputs.version != 'none'
uses: aws-actions/configure-aws-credentials@v4
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)
if: needs.release.outputs.version != 'none'
uses: aws-actions/[email protected]
- name: Download Acm Api artifact
uses: actions/download-artifact@v3
with:
name: acm-api
path: ~/
- name: Load Acm Api image
shell: bash
run: docker image load -i ~/ar-acm-api-image.tar
- name: Download Public Api artifact
uses: actions/download-artifact@v3
with:
name: public-api
path: ~/
- name: Load Public Api image
shell: bash
run: docker image load -i ~/ar-public-api-image.tar
- name: Download Public Projections artifact
uses: actions/download-artifact@v3
with:
name: public-projections
path: ~/
- name: Load Public Projections image
shell: bash
run: docker image load -i ~/ar-public-projections-image.tar
- name: Download Admin Api artifact
uses: actions/download-artifact@v3
with:
name: admin-api
path: ~/
- name: Load Admin Api image
shell: bash
run: docker image load -i ~/ar-admin-api-image.tar
- name: Download Admin Projections artifact
uses: actions/download-artifact@v3
with:
name: admin-projections
path: ~/
- name: Load Admin Projections image
shell: bash
run: docker image load -i ~/ar-admin-projections-image.tar
- name: Push docker images to ECR Test
if: needs.release.outputs.version != 'none'
shell: bash
run: |
echo $SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/acm-api:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/public-api:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/public-projections:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/admin-api:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/admin-projections:$SEMVER
env:
BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
SEMVER: ${{ needs.release.outputs.version }}
WORKSPACE: ${{ github.workspace }}
push_images_to_test_ik4:
if: needs.release.outputs.version != 'none'
needs: [ release ]
name: Push images to Test (IK4)
runs-on: ubuntu-latest
steps:
- name: Configure AWS credentials (Test)
if: needs.release.outputs.version != 'none'
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.VBR_AWS_BUILD_USER_ACCESS_KEY_ID_IK4 }}
aws-secret-access-key: ${{ secrets.VBR_AWS_BUILD_USER_SECRET_ACCESS_KEY_IK4 }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Login to Amazon ECR (Test)
if: needs.release.outputs.version != 'none'
uses: aws-actions/[email protected]
- name: Download Acm Api artifact
uses: actions/download-artifact@v3
with:
name: acm-api
path: ~/
- name: Load Acm Api image
shell: bash
run: docker image load -i ~/ar-acm-api-image.tar
- name: Download Public Api artifact
uses: actions/download-artifact@v3
with:
name: public-api
path: ~/
- name: Load Public Api image
shell: bash
run: docker image load -i ~/ar-public-api-image.tar
- name: Download Public Projections artifact
uses: actions/download-artifact@v3
with:
name: public-projections
path: ~/
- name: Load Public Projections image
shell: bash
run: docker image load -i ~/ar-public-projections-image.tar
- name: Download Admin Api artifact
uses: actions/download-artifact@v3
with:
name: admin-api
path: ~/
- name: Load Admin Api image
shell: bash
run: docker image load -i ~/ar-admin-api-image.tar
- name: Download Admin Projections artifact
uses: actions/download-artifact@v3
with:
name: admin-projections
path: ~/
- name: Load Admin Projections image
shell: bash
run: docker image load -i ~/ar-admin-projections-image.tar
- name: Push docker images to ECR Test
if: needs.release.outputs.version != 'none'
shell: bash
run: |
echo $SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/acm-api:$SEMVER $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-acmapi:$SEMVER
docker push $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-acmapi:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/acm-api:$SEMVER $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-adminapi:$SEMVER
docker push $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-adminapi:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/acm-api:$SEMVER $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-adminprojections:$SEMVER
docker push $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-adminprojections:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/acm-api:$SEMVER $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-publicapi:$SEMVER
docker push $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-publicapi:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/acm-api:$SEMVER $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-publicprojections:$SEMVER
docker push $BUILD_DOCKER_REGISTRY_IK4/verenigingsregister-publicprojections:$SEMVER
env:
BUILD_DOCKER_REGISTRY_IK4: ${{ secrets.BUILD_DOCKER_REGISTRY_IK4 }}
BUILD_DOCKER_REGISTRY_TST: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
SEMVER: ${{ needs.release.outputs.version }}
WORKSPACE: ${{ github.workspace }}
push_images_to_staging:
if: needs.release.outputs.version != 'none'
needs: [ set-release-version, release ]
name: Push images to Staging
runs-on: ubuntu-latest
steps:
- name: Configure AWS credentials (Staging)
if: needs.release.outputs.version != 'none'
uses: aws-actions/configure-aws-credentials@v4
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)
if: needs.release.outputs.version != 'none'
uses: aws-actions/[email protected]
- name: Download Acm Api artifact
uses: actions/download-artifact@v3
with:
name: acm-api
path: ~/
- name: Load Acm Api image
shell: bash
run: docker image load -i ~/ar-acm-api-image.tar
- name: Download Public Api artifact
uses: actions/download-artifact@v3
with:
name: public-api
path: ~/
- name: Load Public Api image
shell: bash
run: docker image load -i ~/ar-public-api-image.tar
- name: Download Public Projections artifact
uses: actions/download-artifact@v3
with:
name: public-projections
path: ~/
- name: Load Public Projections image
shell: bash
run: docker image load -i ~/ar-public-projections-image.tar
- name: Download Admin Api artifact
uses: actions/download-artifact@v3
with:
name: admin-api
path: ~/
- name: Load Admin Api image
shell: bash
run: docker image load -i ~/ar-admin-api-image.tar
- name: Download Admin Projections artifact
uses: actions/download-artifact@v3
with:
name: admin-projections
path: ~/
- name: Load Admin Projections image
shell: bash
run: docker image load -i ~/ar-admin-projections-image.tar
- name: Push docker images to ECR Staging
if: needs.release.outputs.version != 'none'
shell: bash
run: |
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/acm-api:$SEMVER $BUILD_DOCKER_REGISTRY/association-registry/acm-api:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/acm-api:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/public-api:$SEMVER $BUILD_DOCKER_REGISTRY/association-registry/public-api:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/public-api:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/public-projections:$SEMVER $BUILD_DOCKER_REGISTRY/association-registry/public-projections:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/public-projections:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/admin-api:$SEMVER $BUILD_DOCKER_REGISTRY/association-registry/admin-api:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/admin-api:$SEMVER
docker tag $BUILD_DOCKER_REGISTRY_TST/association-registry/admin-projections:$SEMVER $BUILD_DOCKER_REGISTRY/association-registry/admin-projections:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/association-registry/admin-projections:$SEMVER
env:
BUILD_DOCKER_REGISTRY_TST: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY_TST }}
BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY }}
SEMVER: ${{ needs.release.outputs.version }}
WORKSPACE: ${{ github.workspace }}
deploy_test:
if: needs.release.outputs.version != 'none'
needs: [ set-release-version, push_images_to_test, release ]
name: Deploy to Test
runs-on: ubuntu-latest
strategy:
matrix:
services:
[
'association-registry-acm-api',
'association-registry-public-api',
'association-registry-public-projections',
'association-registry-admin-api',
'association-registry-admin-projections',
]
steps:
- name: debug_output
shell: bash
run: |
echo ${{ needs.release.outputs.version }}
- name: CD
if: needs.release.outputs.version != 'none'
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: 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_test_ik4:
if: needs.release.outputs.version != 'none'
needs: [ set-release-version, push_images_to_test_ik4, release ]
name: Deploy to Test (IK4)
runs-on: ubuntu-latest
strategy:
matrix:
services:
[
'association-registry-acm-api',
'association-registry-public-api',
'association-registry-public-projections',
'association-registry-admin-api',
'association-registry-admin-projections',
]
steps:
- name: debug_output
shell: bash
run: |
echo ${{ needs.release.outputs.version }}
- name: CD
if: needs.release.outputs.version != 'none'
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_IK4 }}
secret-key: ${{ secrets.VBR_AWS_BUILD_USER_SECRET_ACCESS_KEY_IK4 }}
region: eu-west-1
interval: 2
- name: 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 }}