Trigger deployment to test and prod Openshift environnment by Image stream re-tagging and labelling pod #41
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Used to trigger deployment to test and prod Openshift environnment by Image stream re-tagging and labelling pod | |
name: Trigger deployment to test and prod Openshift environnment by Image stream re-tagging and labelling pod | |
on: | |
workflow_dispatch: | |
inputs: | |
app: | |
description: 'App Name (bc-paris-api)' | |
required: true | |
default: 'bc-paris-api' | |
imageSourceEnv: | |
description: 'Image Source Env' | |
required: true | |
default: 'dev' | |
imageTargetEnv: | |
description: 'Target Release Env' | |
required: true | |
jobs: | |
oc-image-tagging: | |
runs-on: ubuntu-20.04 | |
environment: ${{ github.event.inputs.imageTargetEnv }} | |
steps: | |
- name: Git Checkout | |
uses: actions/checkout@v2 | |
# Get the version number which is prefixed with the Github release branches in format release/{version} | |
- name: Get Release Version | |
run: | | |
branch=${GITHUB_REF##*/} | |
version=$(echo $branch | cut -d "/" -f2-) | |
echo "releaseVersion=$version" >> $GITHUB_ENV | |
# Get Git latest short Sha# from the release branch used. This Sha# will be used in image tagging as well as DC Pod labelling. | |
- name: Get git commit short sha | |
id: sha | |
run: | | |
shortSha=$(echo $(git rev-parse --short HEAD) | cut -c1-7) | |
echo "gitsha=$shortSha" >> $GITHUB_ENV | |
# Prints vital release paramters used | |
- name: Print Release Variables | |
run: | | |
echo "Release Application: ${{ github.event.inputs.app }}" | |
echo "Release Environment: ${{ github.event.inputs.imageTargetEnv }}" | |
echo "Release Version: ${{ env.releaseVersion }}" | |
echo "Release Git Sha: ${{env.gitsha}}" | |
#Login to Openshift using OC Tools SA and Token for image stream tagging changes - Silver | |
- name: Authenticate OC Tools SA - Silver | |
uses: redhat-actions/oc-login@v1 | |
env: | |
OPENSHIFT_NAMESPACE: ${{secrets.OPENSHIFT_TOOLS_NAMESPACE_SILVER}} | |
OPENSHIFT_USER: ${{secrets.OPENSHIFT_SA_ENV_DEPLOYER_NAME}} | |
with: | |
openshift_server_url: ${{secrets.OPENSHIFT_SERVER_URL_SILVER}} | |
openshift_token: ${{secrets.OPENSHIFT_SA_ENV_DEPLOYER_TOKEN}} | |
namespace: ${{secrets.OPENSHIFT_TOOLS_NAMESPACE_SILVER}} | |
# Re-Tag latest dev (source) image to other env to trigger openshift deployment via DeploymentConfig | |
# It also creates a tag with release version number to use it in case of rollback. | |
- name: Retag image to release env and version - Silver | |
env: | |
appName: ${{ github.event.inputs.app }} | |
imageSourceEnv: ${{ github.event.inputs.imageSourceEnv }} | |
imageTargetEnv: ${{ github.event.inputs.imageTargetEnv }} | |
openshiftToolsNamespace: ${{secrets.OPENSHIFT_TOOLS_NAMESPACE_SILVER}} | |
openshiftIImageRegistry: ${{secrets.OPENSHIFT_INTERNAL_REPOSITORY}} | |
releaseVersion: ${{ env.releaseVersion }} | |
gitSha: ${{ env.gitsha }} | |
run: | | |
oc tag ${openshiftIImageRegistry}/${openshiftToolsNamespace}/${appName}:${imageSourceEnv} ${appName}:${imageTargetEnv} | |
oc tag ${openshiftIImageRegistry}/${openshiftToolsNamespace}/${appName}:${imageTargetEnv} ${appName}:${releaseVersion}.${gitSha} | |
#Login to Openshift using OC SA and Token of respective env. for Pod labelling - Silver | |
- name: Authenticate OC Env Specific SA - Silver | |
uses: redhat-actions/oc-login@v1 | |
env: | |
OPENSHIFT_NAMESPACE: ${{secrets.OPENSHIFT_LICENSE_PLATE_SILVER}}-${{ github.event.inputs.imageTargetEnv }} | |
OPENSHIFT_USER: ${{secrets.OPENSHIFT_SA_ENV_DEPLOYER_NAME}} | |
with: | |
openshift_server_url: ${{secrets.OPENSHIFT_SERVER_URL_SILVER}} | |
openshift_token: ${{secrets.OPENSHIFT_SA_ENV_DEPLOYER_TOKEN}} | |
namespace: ${OPENSHIFT_NAMESPACE} | |
# Labels the deployment config of the application with release version number to spin up the pods labelled in same version - Silver | |
# - name: Labelling DC to release version - Silver | |
# env: | |
# releaseVersion: ${{ env.releaseVersion }} | |
# appName: ${{ github.event.inputs.app }} | |
# openshiftEnvNamespace: ${{secrets.OPENSHIFT_LICENSE_PLATE_SILVER}}-${{ github.event.inputs.imageTargetEnv }} | |
# run: | | |
# oc patch dc ${appName} -n ${openshiftEnvNamespace} --patch '{"spec":{"template":{"metadata":{"labels":{"version":"${{ env.releaseVersion }}.${{ env.gitsha }}"}}}}}' | |
# # Wait to DC rollout to get completed before proceeding next stage - Silver | |
# - name: Wait for DC rollout - Silver | |
# env: | |
# appName: ${{ github.event.inputs.app }} | |
# openshiftEnvNamespace: ${{secrets.OPENSHIFT_LICENSE_PLATE_SILVER}}-${{ github.event.inputs.imageTargetEnv }} | |
# run: | | |
# oc rollout status -n ${openshiftEnvNamespace} dc/${appName} --watch | |
- name: Labelling Deployment to release version | |
env: | |
releaseVersion: ${{ env.releaseVersion }} | |
appName: ${{ github.event.inputs.app }} | |
openshiftEnvNamespace: ${{secrets.OPENSHIFT_LICENSE_PLATE_SILVER}}-${{ github.event.inputs.env }} | |
run: | | |
oc patch deployment ${appName} -n ${openshiftEnvNamespace} --patch '{"spec":{"template":{"metadata":{"labels":{"version":"${{ env.releaseVersion }}.${{ env.gitsha }}"}}}}}' | |
- name: Wait for Deployment rollout to complete | |
env: | |
appName: ${{ github.event.inputs.app }} | |
openshiftEnvNamespace: ${{secrets.OPENSHIFT_LICENSE_PLATE_SILVER}}-${{ github.event.inputs.env }} | |
run: | | |
oc rollout status -n ${openshiftEnvNamespace} deployment/${appName} --watch |