Skip to content

fix: or-1394 place property as last in doc #823

fix: or-1394 place property as last in doc

fix: or-1394 place property as last in doc #823

Workflow file for this run

name: CI/CD
on:
push:
branches: [ main ]
workflow_dispatch:
concurrency: CI
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
- name: Setup Node.js
uses: ./.github/actions/setup-nodejs
- 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 }}
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
test:
if: github.repository_owner == 'Informatievlaanderen'
name: Test
runs-on: ubuntu-latest
needs: [ set-release-version ]
services:
sqlserver:
image: mcr.microsoft.com/mssql/server:latest
env:
ACCEPT_EULA: Y
SA_PASSWORD: E@syP@ssw0rd
MSSQL_TCP_PORT: 21433
ports:
- 21433:21433
acm:
image: ghcr.io/informatievlaanderen/acmidm:1.253.0
ports:
- 5050:80
wiremock:
image: ghcr.io/informatievlaanderen/wiremock:main
ports:
- 8080:8080
opensearch:
image: opensearchproject/opensearch:1.1.0
env:
discovery.type: single-node
DISABLE_SECURITY_PLUGIN: true
ports:
- 9200:9200
- 9600:9600
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup .NET Core
uses: ./.github/actions/setup-dotnet
- name: Parse repository name
run: echo REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") >> $GITHUB_ENV
shell: bash
- name: Test Solution
shell: bash
run: ./build.sh Test_Solution
build-api:
name: Build api
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ test, set-release-version ]
with:
build-target: Containerize_Api
build-project: OrganisationRegistry.Api
image-file: api.tar
image-name: api
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-agentschapzorgengezondheidftpdump:
name: Build batch-agentschapzorgengezondheidftpdump
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ test, set-release-version ]
with:
build-target: Containerize_AgentschapZorgEnGezondheid
build-project: OrganisationRegistry.AgentschapZorgEnGezondheid.FtpDump
image-file: batch-agentschapzorgengezondheidftpdump.tar
image-name: batch-agentschapzorgengezondheidftpdump
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-vlaanderenbe:
name: Build batch-vlaanderenbe
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ test, set-release-version ]
with:
build-target: Containerize_VlaanderenBeNotifier
build-project: OrganisationRegistry.VlaanderenBeNotifier
image-file: batch-vlaanderenbe.tar
image-name: batch-vlaanderenbe
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-projections-elasticsearch:
name: Build elasticsearch projections
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ test, set-release-version ]
with:
build-target: Containerize_ElasticSearch
build-project: OrganisationRegistry.ElasticSearch.Projections
image-file: projections-elasticsearch.tar
image-name: projections-elasticsearch
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-projections-delegations:
name: Build delegations
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ test, set-release-version ]
with:
build-target: Containerize_Delegations
build-project: OrganisationRegistry.Projections.Delegations
image-file: projections-delegations.tar
image-name: projections-delegations
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-projections-reporting:
name: Build reporting
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ test, set-release-version ]
with:
build-target: Containerize_Reporting
build-project: OrganisationRegistry.Projections.Reporting
image-file: projections-reporting.tar
image-name: projections-reporting
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-kbo-mutations:
name: Build kbo-mutations
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ test, set-release-version ]
with:
build-target: Containerize_KboMutations
build-project: OrganisationRegistry.KboMutations
image-file: kbo-mutations.tar
image-name: kbo-mutations
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-rebuilder:
name: Build rebuilder
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ test, set-release-version ]
with:
build-target: Containerize_Rebuilder
build-project: OrganisationRegistry.Rebuilder
image-file: rebuilder.tar
image-name: rebuilder
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-ui:
name: Build site
uses: ./.github/workflows/build-site-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ set-release-version ]
with:
build-target: Containerize_Site
image-file: ui.tar
image-name: ui
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
build-acm-idm:
name: Build acm idm
uses: ./.github/workflows/build-image.yml
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
needs: [ set-release-version ]
with:
build-target: Containerize_AcmIdm
build-project: IdentityServer
image-file: acmidm.tar
image-name: acmidm
semver: ${{ needs.set-release-version.outputs.version }}
secrets: inherit
release:
if: github.repository_owner == 'Informatievlaanderen' && needs.set-release-version.outputs.version != 'none'
name: Release
runs-on: ubuntu-latest
needs:
- build-api
- build-agentschapzorgengezondheidftpdump
- build-vlaanderenbe
- build-projections-elasticsearch
- build-projections-delegations
- build-projections-reporting
- build-kbo-mutations
- build-rebuilder
- build-ui
- set-release-version
outputs:
version: ${{ needs.set-release-version.outputs.version }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup nodejs
uses: ./.github/actions/setup-nodejs
- name: Generate Token
id: generate-token # Add an ID to this step for reference
run: node .github/generate-token.js
env:
APP_ID: ${{ secrets.MYBOT_APP_ID }}
PRIVATE_KEY: ${{ secrets.MYBOT_PRIVATE_KEY }}
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
- name: Checkout Code
uses: actions/checkout@v4
with:
token: ${{ env.installationToken }}
- name: Parse repository name
run: echo REPOSITORY_NAME=$(echo "$GITHUB_REPOSITORY" | awk -F / '{print $2}' | sed -e "s/:refs//") >> $GITHUB_ENV
shell: bash
- 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 }}
GITHUB_TOKEN: ${{ env.installationToken }}
GIT_COMMIT: ${{ github.sha }}
GIT_USERNAME: ${{ env.installationToken }}
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 }}
IGNORE_ES_TESTS: FALSE
- 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: Debug Output
shell: bash
run: |
echo 'BEGIN VERSION'
echo ${{ steps.set-version.outputs.version }}
echo 'END VERSION'
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@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: Setup Python
uses: ./.github/actions/setup-python
- name: Cache Paket
uses: ./.github/actions/cache-paket
- 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_devops:
if: needs.release.outputs.version != 'none'
needs: [ release ]
name: Push images to DevOps
runs-on: ubuntu-latest
strategy:
matrix:
image: [
'api',
'batch-agentschapzorgengezondheidftpdump',
'batch-vlaanderenbe',
'projections-elasticsearch',
'projections-delegations',
'projections-reporting',
'kbo-mutations',
'ui'
]
steps:
- name: Configure AWS credentials (DevOps)
uses: aws-actions/[email protected]
with:
aws-access-key-id: ${{ secrets.VBR_AWS_ACCESS_KEY_ID_DEVOPS }}
aws-secret-access-key: ${{ secrets.VBR_AWS_SECRET_ACCESS_KEY_DEVOPS }}
aws-region: ${{ secrets.VBR_AWS_REGION_PRD }}
- name: Login to Amazon ECR
uses: aws-actions/amazon-ecr-login@v2
- name: Download artifact
uses: actions/download-artifact@v4
continue-on-error: false
with:
name: ${{ matrix.image }}
path: ~/artifacts
- name: Show images
shell: bash
run: docker images
- name: Load artifact
shell: bash
run: |
docker image load -i ~/artifacts/$IMAGE.tar
env:
IMAGE: ${{ matrix.image }}
- name: Show images
shell: bash
run: docker images
- name: Push artifacts to ECR
shell: bash
run: |
echo $IMAGE:$SEMVER
docker push $BUILD_DOCKER_REGISTRY/organisation-registry/$IMAGE:$SEMVER
env:
BUILD_DOCKER_REGISTRY: ${{ secrets.VBR_DEVOPS_DOCKER_REGISTRY }}
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',
'batch-agentschapzorgengezondheidftpdump',
'batch-vlaanderenbe',
'projections-elasticsearch',
'projections-delegations',
'projections-reporting',
'kbo-mutations',
'ui'
]
steps:
- name: Configure AWS credentials (Staging)
if: needs.release.outputs.version != 'none'
uses: aws-actions/[email protected]
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
uses: aws-actions/amazon-ecr-login@v2
- name: Download artifact
uses: actions/download-artifact@v4
continue-on-error: false
with:
name: ${{ matrix.image }}
path: ~/artifacts
- name: Show images
shell: bash
run: docker images
- name: Load artifact
shell: bash
run: |
docker image load -i ~/artifacts/$IMAGE.tar
env:
IMAGE: ${{ matrix.image }}
- name: Show images
shell: bash
run: docker images
- name: Push artifacts to ECR
shell: bash
run: |
echo $IMAGE:$SEMVER
docker image tag $SOURCE_DOCKER_REGISTRY/organisation-registry/$IMAGE:$SEMVER $DESTINATION_DOCKER_REGISTRY/organisation-registry/$IMAGE:$SEMVER
docker push $DESTINATION_DOCKER_REGISTRY/organisation-registry/$IMAGE:$SEMVER
env:
SOURCE_DOCKER_REGISTRY: ${{ secrets.VBR_DEVOPS_DOCKER_REGISTRY }}
DESTINATION_DOCKER_REGISTRY: ${{ secrets.VBR_BUILD_DOCKER_REGISTRY }}
IMAGE: ${{ matrix.image }}
SEMVER: ${{ needs.release.outputs.version }}
WORKSPACE: ${{ github.workspace }}
deploy_staging:
if: needs.release.outputs.version != 'none'
needs: [ release, push_images_to_staging ]
name: Deploy to Staging
runs-on: ubuntu-latest
strategy:
matrix:
image: [
'organisation-registry-api',
'organisation-registry-delegations',
'organisation-registry-elasticsearch',
'organisation-registry-kbomutations',
'organisation-registry-reporting',
'organisation-registry-ui',
'organisation-registry-vlaanderenbe',
'organisation-registry-zorgengezondheid',
'organisation-registry-rebuilder'
]
steps:
- name: CD
id: awscurl-polling-action
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: ${{ github.event.inputs.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 }}
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_staging_services:
if: needs.release.outputs.version != 'none'
needs: [ release, push_images_to_devops ]
name: Deploy to Staging NEW
runs-on: ubuntu-latest
strategy:
matrix:
services:
[
'organisation-api',
'organisation-elasticsearch',
'organisation-rebuilder',
'organisation-ui',
]
steps:
- name: CD
id: awscurl-polling-action
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: ${{ github.event.inputs.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 }}
interval: 2
deploy-target: 'agb_ecs_service'
domain: 'basisregisters'
project: 'basisregisters'
- 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_staging_scheduledtasks:
if: needs.release.outputs.version != 'none'
needs: [ release, push_images_to_devops ]
name: Deploy to Staging NEW
runs-on: ubuntu-latest
strategy:
matrix:
services:
[
'organisation-delegations',
'organisation-kbomutations',
'organisation-reporting',
'organisation-vlaanderenbe',
'organisation-zorgengezondheid',
]
steps:
- name: CD
id: awscurl-polling-action
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: ${{ github.event.inputs.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 }}
interval: 2
deploy-target: 'ecs_scheduled_task'
domain: 'basisregisters'
project: 'basisregisters'
- 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 }}
# - name: Publish to NuGet
# shell: bash
# run: |
# node packages/Be.Vlaanderen.Basisregisters.Build.Pipeline/Content/ci-nuget.js dist/nuget/$LIBNAME.Api.$SEMVER.nupkg
# env:
# LIBNAME: Be.Vlaanderen.Basisregisters.OrganisationRegistry
# SEMVER: ${{ needs.release.outputs.version }}
# NUGET_HOST: ${{ secrets.NUGET_HOST }}
# NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}