Skip to content

script (#13)

script (#13) #59

Workflow file for this run

name: Monorepo pipeline - build and deploy
on:
push:
branches:
- 'main'
- 'release/**'
- 'pre-release/**'
workflow_dispatch:
create:
pull_request:
types:
- opened
- synchronize
- labeled
defaults:
run:
shell: bash
concurrency:
group: push-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
DOCKER_REGISTRY: some-registry
DOCKER_BASE_IMAGE_REGISTRY: some-base-registry
SPINNAKER_URL: www.some-spinnaker-url.com
COMPOSE_HTTP_TIMEOUT: 180
NX_AFFECTED_ALL: ${{ contains(github.event.pull_request.labels.*.name, 'nx-affected-all') }}
jobs:
pre-checks:
name: Check if job should run
runs-on: ubuntu-latest
env:
CREATE_PATTERNS: ^release/
PRE_RELEASE_PATTERN: ^pre-release/
outputs:
NODE_IMAGE_TAG: ${{ steps.git-branch.outputs.NODE_IMAGE_TAG }}
GIT_BRANCH: ${{ steps.git-branch.outputs.GIT_BRANCH }}
GIT_BRANCH_DEPLOY: ${{ steps.git-branch-deploy.outputs.GIT_BRANCH_DEPLOY }}
FEATURE_NAME: ${{ steps.git-branch-deploy.outputs.FEATURE_NAME }}
PRE_CHECK: ${{ steps.should-run.outputs.PRE_CHECK }}
PRE_RELEASE: ${{ steps.should-run.outputs.PRE_RELEASE }}
steps:
- name: Get git branch
id: git-branch
run: |
set -euo pipefail
GIT_BRANCH="${GITHUB_HEAD_REF:-${GITHUB_REF/refs\/heads\//}}"
echo GIT_BRANCH="${GIT_BRANCH}" >> "$GITHUB_OUTPUT"
echo GIT_BRANCH="$GIT_BRANCH" >> "$GITHUB_ENV"
- name: Generate deployment branch name
id: git-branch-deploy
run: |
set -euo pipefail
export GIT_BRANCH_DEPLOY="$GIT_BRANCH"
if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then
if [[ ! ("$GIT_BRANCH_DEPLOY" =~ "feature/") ]]; then
echo "If event is pull request but branch is not prefixed with feature"
GIT_BRANCH_DEPLOY="feature/$GIT_BRANCH_DEPLOY"
fi
echo "Avoid too long resource names"
GIT_BRANCH_DEPLOY="${GIT_BRANCH_DEPLOY:0:50}"
fi
echo GIT_BRANCH_DEPLOY="${GIT_BRANCH_DEPLOY}"
echo GIT_BRANCH_DEPLOY="${GIT_BRANCH_DEPLOY}" >> "$GITHUB_OUTPUT"
echo GIT_BRANCH_DEPLOY="$GIT_BRANCH_DEPLOY"
echo GIT_BRANCH_DEPLOY="$GIT_BRANCH_DEPLOY" >> "$GITHUB_ENV"
echo FEATURE_NAME="$(echo "$GIT_BRANCH_DEPLOY" | cut -d"/" -f2- | tr -cd '[:alnum:]-' | tr '[:upper:]' '[:lower:]' | cut -c1-50)" >> "$GITHUB_OUTPUT"
echo FEATURE_NAME="$(echo "$GIT_BRANCH_DEPLOY" | cut -d"/" -f2- | tr -cd '[:alnum:]-' | tr '[:upper:]' '[:lower:]' | cut -c1-50)"
- name: Check if we want to run workflow
id: should-run
env:
SPINNAKER_WEBHOOK_TOKEN: ${{ secrets.SPINNAKER_WEBHOOK_TOKEN }}
run: |
echo "GITHUB_EVENT_NAME is '$GITHUB_EVENT_NAME'"
echo "PRE_RELEASE=false" >> "$GITHUB_OUTPUT"
if [[ "$GITHUB_EVENT_NAME" == "create" ]]; then
echo "Workflow was created because of branch creation. Branch name is '$GIT_BRANCH'"
for pre_pattern in $(echo "$PRE_RELEASE_PATTERN" | sed "s/,/ /g")
do
echo "Checking branch against pre_release_pattern '$pre_pattern'"
echo "Check if this is a pre-release and if it should generate a feature-deploy"
if [[ "$GIT_BRANCH" =~ $pre_pattern ]]; then
echo "'$GIT_BRANCH' matches 'pre_$pattern', continuing with build"
echo "PRE_CHECK=feature-deploy"
echo "PRE_CHECK=feature-deploy" >> "$GITHUB_OUTPUT"
echo "PRE_RELEASE=true"
echo "PRE_RELEASE=true" >> "$GITHUB_OUTPUT"
exit 0
fi
done
for pattern in $(echo "$CREATE_PATTERNS" | sed "s/,/ /g")
do
echo "Checking branch against pattern '$pattern'"
if [[ "$GIT_BRANCH" =~ $pattern ]]; then
echo "'$GIT_BRANCH' matches '$pattern', continuing with build"
echo "PRE_CHECK=push"
echo "PRE_CHECK=push" >> "$GITHUB_OUTPUT"
exit 0
fi
done
echo "No pattern matches '$GIT_BRANCH', exiting."
exit 0
fi
if [[ "$GITHUB_EVENT_NAME" == "pull_request" ]]; then
if [[ "${{ github.event.action }}" == "labeled" ]]; then
echo "Action is labeled, using label that was applied: '${{ github.event.label.name }}'"
deployFeature="$([[ "${{ github.event.label.name }}" == "deploy-feature" ]] && echo true || echo false )"
echo deployFeature:"$deployFeature"
else
echo "Action is ${{ github.event.action }}, using labels on PR"
deployFeature=${{ contains(github.event.pull_request.labels.*.name, 'deploy-feature') }}
echo deployFeature:"$deployFeature"
fi
if [[ "$deployFeature" == "true" ]]; then
echo "Pull request contains deploy-feature label, continuing with feature deployment"
echo "PRE_CHECK=feature-deploy"
echo "PRE_CHECK=feature-deploy" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "Pull request does not have deploy-feature label, exiting..."
exit 0
fi
for pre_pattern in $(echo "$PRE_RELEASE_PATTERN" | sed "s/,/ /g")
do
echo "Checking branch against pre_release_pattern '$pre_pattern'"
echo "Check if this is a pre-release and if it should generate a feature-deploy"
if [[ "$GIT_BRANCH" =~ $pre_pattern ]]; then
echo "'$GIT_BRANCH' matches 'pre_$pattern', continuing with build"
echo "PRE_CHECK=feature-deploy"
echo "PRE_CHECK=feature-deploy" >> "$GITHUB_OUTPUT"
echo "PRE_RELEASE=true"
echo "PRE_RELEASE=true" >> "$GITHUB_OUTPUT"
exit 0
fi
done
echo "PRE_CHECK=push"
echo "PRE_CHECK=push" >> "$GITHUB_OUTPUT"
# prepare:
# runs-on: ubuntu-latest
# timeout-minutes: 90
# if: needs.pre-checks.outputs.PRE_CHECK
# needs:
# - pre-checks
# env:
# AFFECTED_ALL: ${{ secrets.AFFECTED_ALL }}
# GIT_BRANCH: ${{ needs.pre-checks.outputs.GIT_BRANCH }}
# SERVERSIDE_FEATURES_ON: ''
# outputs:
# CACHE_KEYS: ${{ steps.get-cache.outputs.keys }}
# TEST_CHUNKS: ${{ steps.test_projects.outputs.CHUNKS }}
# DOCKER_TAG: ${{ steps.docker_tags.outputs.DOCKER_TAG }}
# NODE_IMAGE_TAG: ${{ steps.nodejs_image.outputs.NODE_IMAGE_TAG }}
# LAST_GOOD_BUILD_DOCKER_TAG: ${{ steps.git_nx_base.outputs.LAST_GOOD_BUILD_DOCKER_TAG }}
# UNAFFECTED: ${{ steps.unaffected.outputs.UNAFFECTED }}
# BUILD_CHUNKS: ${{ steps.build_map.outputs.BUILD_CHUNKS }}
# IMAGES: ${{ steps.deploy_map.outputs.IMAGES }}
# node-modules-hash: ${{ steps.calculate_node_modules_hash.outputs.node-modules-hash }}
# steps:
# - uses: actions/checkout@v3
# with:
# fetch-depth: 0
# - uses: actions/setup-node@v4
# with:
# node-version-file: 'package.json'
# - name: Setup yarn
# run: corepack enable
# - name: Check node version
# run: |
# set -euo pipefail
# node -v
# ls -l `which node`
# - name: Git refs
# id: git_refs
# run: |
# set -euo pipefail
# if [[ -n "$GITHUB_BASE_REF" ]]
# then
# echo "a PR"
# GIT_BASE_BRANCH="$GITHUB_BASE_REF"
# else
# echo "on main"
# GIT_BASE_BRANCH=main
# fi
# echo GIT_BRANCH="$GIT_BRANCH" >> "$GITHUB_ENV"
# echo "Base branch is '${GIT_BASE_BRANCH}'"
# echo GIT_BASE_BRANCH="$GIT_BASE_BRANCH" >> "$GITHUB_ENV"
# echo "Branch is '${GIT_BRANCH}'"
# - name: Checking out relevant branches for a pre-release
# if: needs.pre-checks.outputs.PRE_CHECK && needs.pre-checks.outputs.PRE_RELEASE == 'true'
# run: |
# echo "Feature Name: '$FEATURE_NAME'"
# echo "sha: '$GITHUB_SHA'"
# git checkout main
# git checkout "$GITHUB_SHA"
# - name: Checking out relevant branches for a PR
# if: needs.pre-checks.outputs.PRE_CHECK && needs.pre-checks.outputs.PRE_CHECK == 'feature-deploy' && !(needs.pre-checks.outputs.PRE_RELEASE == 'true')
# run: |
# set -euo pipefail
# git checkout "$GITHUB_HEAD_REF"
# git checkout "$GITHUB_BASE_REF"
# git checkout "$GITHUB_SHA"
# BASE_SHA="$(git merge-base HEAD "$GITHUB_BASE_REF")"
# HEAD_SHA="$(git merge-base HEAD "$GITHUB_HEAD_REF")"
# echo "Current base SHA is '$BASE_SHA' and head SHA is '$HEAD_SHA'"
# echo "{\"base_sha\": \"$BASE_SHA\", \"head_sha\":\"$HEAD_SHA\"}" > event.json
# - name: Checking out relevant branches for a branch build
# if: ${{ !(needs.pre-checks.outputs.PRE_CHECK && needs.pre-checks.outputs.PRE_CHECK == 'feature-deploy') }}
# run: |
# set -euo pipefail
# git checkout main
# git checkout "$GITHUB_SHA"
# - name: Generate nodejs image tag
# id: nodejs_image
# continue-on-error: false
# run: |
# set -euo pipefail
# export NODE_IMAGE_TAG="$(./scripts/ci/get-node-version.mjs)"
# echo "NODE_IMAGE_TAG: '${NODE_IMAGE_TAG}'"
# echo NODE_IMAGE_TAG="${NODE_IMAGE_TAG}" >> "$GITHUB_OUTPUT"
# echo NODE_IMAGE_TAG="${NODE_IMAGE_TAG}" >> "$GITHUB_ENV"
# echo "**NODE_IMAGE_TAG** '${NODE_IMAGE_TAG}'" >> "$GITHUB_STEP_SUMMARY"
# - name: Generate docker image tag
# id: docker_tags
# run: |
# set -euo pipefail
# export DOCKER_BRANCH_TAG="$(echo "${GIT_BRANCH:0:45}" | tr "/." "-" )"
# SHA="${{ github.event.pull_request.head.sha }}"
# echo "SHA='$SHA' retrieved from event"
# if [[ "$SHA" == "" ]]; then
# SHA="$GITHUB_SHA"
# echo "SHA='$SHA', retrived from action environment"
# fi
# echo "Using SHA='$SHA' as docker tag SHA"
# export DOCKER_TAG="${DOCKER_BRANCH_TAG}_${SHA:0:10}_${GITHUB_RUN_NUMBER}"
# echo "Docker tag will be '${DOCKER_TAG}'"
# echo DOCKER_TAG="${DOCKER_TAG}" >> "$GITHUB_OUTPUT"
# echo DOCKER_TAG="$DOCKER_TAG" >> "$GITHUB_ENV"
# echo "**Monorepo tag:** '${DOCKER_TAG}'" >> "$GITHUB_STEP_SUMMARY"
# - run: |
# echo HEAD="$GITHUB_SHA" >> "$GITHUB_ENV"
# id: git_nx_head
# name: Preparing HEAD tag
# - name: Set Test Everything true
# run: |
# echo "TEST_EVERYTHING=true" >> "$GITHUB_ENV"
# if: github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'test everything')
# - name: Set Test Everything false
# run: echo "TEST_EVERYTHING=false" >> "$GITHUB_ENV"
# if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'test everything')
# - name: yarn install
# run: yarn install
# - name: Preparing BASE tags
# id: git_nx_base
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# HTML_URL: ${{ github.event.pull_request.html_url }}
# run: |
# set -euo pipefail
# if [[ "${{needs.pre-checks.outputs.PRE_CHECK}}" == 'feature-deploy' && "${{needs.pre-checks.outputs.PRE_RELEASE}}" == 'false' ]]; then
# export HEAD_REF="$GITHUB_HEAD_REF"
# export BASE_REF="$GITHUB_BASE_REF"
# export PR_REF="$GITHUB_SHA"
# else
# export HEAD_REF="$GIT_BRANCH"
# export BASE_REF="$GIT_BASE_BRANCH"
# export PR_REF="not used"
# fi
# export WORKFLOW_ID=push
# export SHELL=/usr/bin/bash
# source ./scripts/ci/00_prepare-base-tags.sh $(git merge-base HEAD "$GITHUB_BASE_REF")
# git checkout "$GITHUB_SHA"
# echo "debug2"
# echo BASE="$BASE" >> "$GITHUB_ENV"
# echo LAST_GOOD_BUILD_DOCKER_TAG="${LAST_GOOD_BUILD_DOCKER_TAG}"
# echo LAST_GOOD_BUILD_DOCKER_TAG="${LAST_GOOD_BUILD_DOCKER_TAG}" >> "$GITHUB_OUTPUT"
# - name: set BRANCH env var
# run: |
# echo BRANCH="$GIT_BRANCH"
# echo BRANCH="$GIT_BRANCH" >> "$GITHUB_ENV"
# - name: Prepare test targets
# id: test_projects
# run: |
# set -euo pipefail
# CHUNKS="$(./scripts/ci/generate-chunks.sh test)"
# if [[ "$CHUNKS" != "[]" ]]; then
# echo CHUNKS="{\"projects\":$CHUNKS}"
# echo CHUNKS="{\"projects\":$CHUNKS}" >> "$GITHUB_OUTPUT"
# fi
# - name: Prepare docker build targets
# id: build_map
# run: |
# set -euo pipefail
# CHUNKS="$(./scripts/ci/generate-build-chunks.sh docker-express docker-next docker-static docker-playwright docker-jest)"
# echo "CHUNKS: '$CHUNKS'"
# if [[ "$CHUNKS" != "[]" ]]; then
# echo BUILD_CHUNKS="$CHUNKS"
# echo BUILD_CHUNKS="$CHUNKS" >> "$GITHUB_OUTPUT"
# fi
# - name: Gather unaffected docker images
# id: unaffected
# run: |
# set -euo pipefail
# UNAFFECTED="$(./scripts/ci/list-unaffected.sh docker-next docker-express docker-static docker-playwright docker-jest)"
# echo UNAFFECTED="$UNAFFECTED" >> "$GITHUB_OUTPUT"
# - name: check pre-release
# if: needs.pre-checks.outputs.PRE_RELEASE == 'true'
# run: |
# echo "AFFECTED_ALL=7913-$GIT_BRANCH"
# echo "AFFECTED_ALL=7913-$GIT_BRANCH" >> "$GITHUB_ENV"
# - name: Prepare deployment targets
# id: deploy_map
# if: needs.pre-checks.outputs.PRE_CHECK != 'push'
# run: |
# set -euo pipefail
# export BASE="$(git merge-base HEAD "$GITHUB_BASE_REF")"
# echo $BASE
# CHUNKS="$(./scripts/ci/generate-build-chunks.sh docker-express docker-next docker-static docker-playwright docker-jest)"
# echo "CHUNKS: '$CHUNKS'"
# if [[ "$CHUNKS" != "[]" ]]; then
# echo "IMAGES="$(echo "$CHUNKS" | jq '.[] | fromjson | .projects' -r | tr '\n' ',')"" >> "$GITHUB_OUTPUT"
# fi
# tests:
# needs:
# - prepare
# if: needs.prepare.outputs.TEST_CHUNKS
# runs-on: ubuntu-latest
# env:
# AFFECTED_PROJECTS: ${{ matrix.projects }}
# MAX_JOBS: 1
# strategy:
# fail-fast: false
# matrix: ${{ fromJson(needs.prepare.outputs.TEST_CHUNKS) }}
# steps:
# - uses: actions/checkout@v3
# with:
# fetch-depth: 0
# - uses: actions/setup-node@v4
# with:
# node-version-file: 'package.json'
# - name: Setup yarn
# run: corepack enable
# docker-build:
# needs:
# - pre-checks
# - prepare
# runs-on: ubuntu-latest
# timeout-minutes: 35
# if: needs.prepare.outputs.BUILD_CHUNKS
# env:
# GIT_BRANCH: ${{ needs.pre-checks.outputs.GIT_BRANCH}}
# DOCKER_TAG: ${{ needs.prepare.outputs.DOCKER_TAG}}
# NODE_IMAGE_TAG: ${{ needs.prepare.outputs.NODE_IMAGE_TAG}}
# PUBLISH: true
# strategy:
# fail-fast: false
# matrix:
# chunk: ${{ fromJson(needs.prepare.outputs.BUILD_CHUNKS) }}
# steps:
# - name: Gather apps
# id: gather
# run: |
# set -euo pipefail
# AFFECTED_PROJECTS="$(echo '${{ matrix.chunk }}' | jq -r '.projects')"
# DOCKER_TYPE="$(echo '${{ matrix.chunk }}' | jq -r '.docker_type')"
# echo AFFECTED_PROJECTS="$AFFECTED_PROJECTS" >> "$GITHUB_ENV"
# echo DOCKER_TYPE="$DOCKER_TYPE" >> "$GITHUB_ENV"
# continue-on-error: true
# - uses: actions/checkout@v3
# if: steps.gather.outcome == 'success'
# - uses: actions/setup-node@v4
# with:
# node-version-file: 'package.json'
# if: steps.gather.outcome == 'success'
# - name: Setup yarn
# run: corepack enable
# if: steps.gather.outcome == 'success'
# - name: Prepare Docker build arguments
# id: dockerargs
# if: steps.gather.outcome == 'success'
# env:
# NODE_IMAGE_TAG: ${{ needs.prepare.outputs.NODE_IMAGE_TAG }}
# GIT_COMMIT_SHA: ${{ github.sha }}
# DOCKER_BASE_IMAGE_REGISTRY: ${{ env.DOCKER_BASE_IMAGE_REGISTRY }}
# run: |
# set -x
# # Strip protocol prefix and .git postfix
# SERVER_URL="${{ github.server_url }}/${{ github.repository }}"
# SERVER_URL="${SERVER_URL#*://}"
# SERVER_URL="${SERVER_URL%.git}"
# build_args=(
# --build-arg="DOCKER_IMAGE_REGISTRY=${DOCKER_BASE_IMAGE_REGISTRY}"
# --build-arg="NODE_IMAGE_TAG=${NODE_IMAGE_TAG}"
# --build-arg="GIT_BRANCH=${GIT_BRANCH}"
# --build-arg="GIT_COMMIT_SHA=${GIT_COMMIT_SHA}"
# --build-arg="GIT_REPOSITORY_URL=${SERVER_URL}"
# )
# export EXTRA_DOCKER_BUILD_ARGS="${build_args[*]}"
# echo "EXTRA_DOCKER_BUILD_ARGS=${EXTRA_DOCKER_BUILD_ARGS}" >> "${GITHUB_ENV}"
# - name: Building Docker images
# continue-on-error: true
# id: dockerbuild
# if: steps.gather.outcome == 'success'
# env:
# NODE_IMAGE_TAG: ${{ needs.prepare.outputs.NODE_IMAGE_TAG }}
# GIT_COMMIT_SHA: ${{ github.sha }}
# DOCKER_BASE_IMAGE_REGISTRY: ${{ env.DOCKER_BASE_IMAGE_REGISTRY }}
# run: |
# set -x
# echo "Node image tag is: '${NODE_IMAGE_TAG}'"
# echo "Docker build args are: 'EXTRA_DOCKER_BUILD_ARGS'"
# export EXTRA_DOCKER_BUILD_ARGS
# ./scripts/ci/run-in-parallel.sh "90_${DOCKER_TYPE}"
# - name: Building Docker images Retry
# if: steps.gather.outcome == 'success' && steps.dockerbuild.outcome == 'failure'
# env:
# NODE_IMAGE_TAG: ${{ needs.prepare.outputs.NODE_IMAGE_TAG }}
# GIT_COMMIT_SHA: ${{ github.sha }}
# DOCKER_BASE_IMAGE_REGISTRY: ${{ env.DOCKER_BASE_IMAGE_REGISTRY }}
# run: |
# set -x
# echo "Node image tag is: '${NODE_IMAGE_TAG}'"
# echo "Docker build args are: 'EXTRA_DOCKER_BUILD_ARGS'"
# export EXTRA_DOCKER_BUILD_ARGS
# ./scripts/ci/run-in-parallel.sh "90_${DOCKER_TYPE}"
# helm-docker-build:
# needs:
# - prepare
# - pre-checks
# runs-on: ubuntu-latest
# timeout-minutes: 5
# env:
# FEATURE_NAME: ${{ needs.pre-checks.outputs.FEATURE_NAME }}
# DOCKER_TAG: ${{ needs.prepare.outputs.DOCKER_TAG}}
# GIT_BRANCH: ${{ needs.pre-checks.outputs.GIT_BRANCH }}
# NODE_IMAGE_TAG: ${{ needs.prepare.outputs.NODE_IMAGE_TAG }}
# steps:
# - uses: actions/checkout@v3
# - name: Docker login
# run: ./scripts/ci/docker-login-ecr.sh
# - name: Docker build image
# working-directory: infra
# run: |
# echo Registry is: ${{env.DOCKER_BASE_IMAGE_REGISTRY}}
# echo Image tag is: ${{env.NODE_IMAGE_TAG}}
# export EXTRA_DOCKER_BUILD_ARGS="--build-arg DOCKER_IMAGE_REGISTRY=${{env.DOCKER_BASE_IMAGE_REGISTRY}} --build-arg NODE_IMAGE_TAG=${{env.NODE_IMAGE_TAG}}"
# ./scripts/build-docker-container.sh "$DOCKER_TAG"
# echo "COMMENT<<EOF" >> "$GITHUB_ENV"
# echo "Affected services are: ${{needs.prepare.outputs.IMAGES}}" >> "$GITHUB_ENV"
# docker run --rm "${DOCKER_REGISTRY}helm-config:$DOCKER_TAG" ingress-comment --images=${{needs.prepare.outputs.IMAGES}} --chart=islandis --feature="$FEATURE_NAME" >> "$GITHUB_ENV"
# echo 'EOF' >> "$GITHUB_ENV"
# env:
# PUBLISH: 'true'
# - name: Retag as latest
# if: ${{ env.GIT_BRANCH == 'main' && env.NX_AFFECTED_ALL != 'true' }}
# env:
# UNAFFECTED: helm-config
# LAST_GOOD_BUILD_DOCKER_TAG: ${{ env.DOCKER_TAG }}
# DOCKER_TAG: latest
# run: ./scripts/ci/retag-unaffected.sh "$UNAFFECTED"
# - name: Comment on PR
# if: needs.pre-checks.outputs.PRE_CHECK == 'feature-deploy' && !(needs.pre-checks.outputs.PRE_RELEASE == 'true')
# uses: actions/github-script@v7
# with:
# github-token: ${{ secrets.GITHUB_TOKEN }}
# script: |
# const updateComment = require('./.github/actions/update-comment.js')
# const { COMMENT } = process.env
# await updateComment({github, context, comment: COMMENT})
# retag-unaffected:
# runs-on: ubuntu-latest
# timeout-minutes: 5
# if: ${{ !cancelled() && needs.pre-checks.result == 'success' && needs.prepare.result != 'skipped' }}
# needs:
# - pre-checks
# - docker-build
# - prepare
# env:
# GIT_BRANCH: ${{ needs.pre-checks.outputs.GIT_BRANCH}}
# DOCKER_TAG: ${{ needs.prepare.outputs.DOCKER_TAG}}
# LAST_GOOD_BUILD_DOCKER_TAG: ${{ needs.prepare.outputs.LAST_GOOD_BUILD_DOCKER_TAG}}
# UNAFFECTED: ${{ needs.prepare.outputs.UNAFFECTED}}
# steps:
# - name: Check prepare success
# run: '[[ ${{ needs.prepare.result }} == "success" ]] || exit 1'
# - name: Check docker-build success
# run: '[[ ${{ needs.docker-build.result }} != "failure" ]] || exit 1'
# - uses: actions/checkout@v3
# - name: Retag unaffected Docker images
# run: ./scripts/ci/retag-unaffected.sh "$UNAFFECTED"
# deploy:
# runs-on: ubuntu-latest
# if: ${{ !cancelled() && needs.retag-unaffected.result == 'success' && needs.helm-docker-build.result != 'failure' }}
# needs:
# - retag-unaffected
# - pre-checks
# - prepare
# - helm-docker-build
# env:
# GIT_BRANCH_DEPLOY: ${{ needs.pre-checks.outputs.GIT_BRANCH_DEPLOY }}
# FEATURE_NAME: ${{ needs.pre-checks.outputs.FEATURE_NAME }}
# DOCKER_TAG: ${{ needs.prepare.outputs.DOCKER_TAG }}
# IMAGES: ${{ needs.prepare.outputs.IMAGES }}
# steps:
# - uses: actions/checkout@v3
# - name: Trigger Deployment for service
# run: |
# echo "Sending webhook with branch: '$GIT_BRANCH_DEPLOY'"
# curl "$SPINNAKER_URL/webhooks/webhook/islandis" -H "content-type: application/json" --data-binary @- <<BODY
# {
# "token": "$SPINNAKER_WEBHOOK_TOKEN",
# "branch": "$GIT_BRANCH_DEPLOY",
# "parameters": {
# "docker_tag": "$DOCKER_TAG",
# "feature_name": "$FEATURE_NAME",
# "images": "$IMAGES",
# "pull_request_number": "$(echo "$GITHUB_REF" | cut -d'/' -f3)"
# }
# }
# BODY
# - name: Trigger Deployment for IDS-Services
# env:
# DOCKER_TAG: ${{ needs.prepare.outputs.DOCKER_TAG }}
# GIT_BRANCH_DEPLOY: ${{ needs.pre-checks.outputs.GIT_BRANCH_DEPLOY }}
# SPINNAKER_WEBHOOK_TOKEN: verynæstoken
# GH_PRIVATE_REPO_TOKEN: greattoken
# run: |
# set -euo pipefail
# echo "Deploying with identity-server docker tag:"
# echo "Sending webhook with branch: '$GIT_BRANCH_DEPLOY'"
# push-success:
# runs-on: ubuntu-latest
# if: ${{ !cancelled() }}
# needs:
# - pre-checks
# - retag-unaffected
# - deploy
# - tests
# steps:
# - name: Check retag success
# run: '[[ ${{ needs.retag-unaffected.result }} != "failure" ]] || exit 1'
# - name: Check deploy success
# run: '[[ ${{ needs.deploy.result }} != "failure" ]] || exit 1'
# - name: Check tests success
# run: '[[ ${{ needs.tests.result }} != "failure" ]] || exit 1'
# - name: Announce success
# if: needs.pre-checks.outputs.PRE_CHECK
# run: echo "Build is successful"
# - name: Announce skipped
# if: '!needs.pre-checks.outputs.PRE_CHECK'
# run: echo "Build was skipped"