Skip to content

Promote Release Artefacts Pipeline #9

Promote Release Artefacts Pipeline

Promote Release Artefacts Pipeline #9

name: Promote Release Artefacts Pipeline
# checkov:skip=CKV_GHA_7:Workflow dispatch inputs are required for manual triggering with environment selection
on:
workflow_dispatch:
# checkov:skip=CKV_GHA_7:Inputs reviewed and approved
inputs:
release_tag:
description: "Specify the release candidate tag to be used for promotion (e.g. v1.1.0-rc.1)"
required: true
type: string
permissions:
contents: write
id-token: write
jobs:
validate-release-tag:
name: "Check format of input release tag"
runs-on: ubuntu-latest
steps:
- name: "Validate release tag"
id: validate
run: |
RELEASE_TAG="${{ inputs.release_tag }}"
if [[ ! $RELEASE_TAG =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-rc\.[0-9]+)?$ ]]; then
echo "Invalid release tag format: $RELEASE_TAG"
exit 1
else
echo "Release tag format is valid: $RELEASE_TAG"
fi
metadata:
name: "Get CI/CD metadata"
needs:
- validate-release-tag
uses: ./.github/workflows/metadata.yaml
with:
ref: ${{ inputs.release_tag }}
promote-release:
name: "Promote artefacts for release ${{ inputs.release_tag }}"
needs:
- metadata
uses: ./.github/workflows/promote-artefacts.yaml
with:
repo_name: ${{ needs.metadata.outputs.reponame }}
artefact_promotion_type: "release"
type: app
release_tag: ${{ inputs.release_tag }}
secrets: inherit
slack-notifications:
name: "Send Notification to Slack"
needs:
- validate-release-tag
- metadata
- promote-release
if: always()
uses: ./.github/workflows/slack-notifications.yaml
with:
env: mgmt
secrets: inherit