klip-sdk
Version:
JavaScript SDK to interact with klip App2App requests
155 lines (136 loc) • 7.18 kB
YAML
name: Image patch helm chart
author: Bolt
description: 'This action is used when the CI done.'
inputs:
PAT:
description: ''
required: true
default: ''
GITHUB_SHA:
description: ''
required: true
default: ''
PROJECT:
description: ''
required: true
default: ''
PROJECT_NAME:
description: ''
required: true
default: ''
ENVIRONMENT:
description: ''
required: true
default: ''
IS_STAGING:
description: ''
required: false
default: 'enabled'
outputs:
PR_URL:
description: ''
value: ${{ steps.var.outputs.PR_URL }}
runs:
using: "composite"
steps:
- name: gh auth login
shell: bash
run: |
echo ${{ inputs.PAT }} | gh auth login --with-token
- name: set outputs
id: set-outputs
shell: bash
run: |
echo "ENVIRONMENT=${{ inputs.ENVIRONMENT }}" >> $GITHUB_OUTPUT
echo "IS_STAGING=${{ inputs.IS_STAGING }}" >> $GITHUB_OUTPUT
echo "PROJECT=${{ inputs.PROJECT }}" >> $GITHUB_OUTPUT
echo "PROJECT_NAME=${{ inputs.PROJECT_NAME }}" >> $GITHUB_OUTPUT
- name: deploy staging environments klip, drops (helm chart)
shell: bash
if: |
( steps.set-outputs.outputs.ENVIRONMENT == 'staging' ) && ( steps.set-outputs.outputs.PROJECT_NAME == 'klip' || steps.set-outputs.outputs.PROJECT_NAME == 'klipdrops' )
&& ( steps.set-outputs.outputs.IS_STAGING == 'enabled')
run: |
echo "deploy staging environments"
sed -i -r "s|(tag: )[0-9a-f]+(-.*)?|\1${{ inputs.GITHUB_SHA }}\2|" charts/apps/${{ inputs.PROJECT }}/${{ inputs.PROJECT_NAME }}/helm-chart/values/staging/image.yaml
- name: deploy staging environments klippass, baas, kas, multichain, devops (general)
shell: bash
if: |
( steps.set-outputs.outputs.ENVIRONMENT == 'staging' ) && ( steps.set-outputs.outputs.PROJECT_NAME != 'klip' && steps.set-outputs.outputs.PROJECT_NAME != 'klipdrops')
&& ( steps.set-outputs.outputs.IS_STAGING == 'enabled')
run: |
sed -i -r "s|(tag: )[0-9a-f]+(-.*)?|\1${{ inputs.GITHUB_SHA }}\2|" charts/apps/${{ inputs.PROJECT }}/${{ inputs.PROJECT_NAME }}/values/staging/image.yaml
- name: deploy not staging environments kas, baas, multichain ( dev, qa-2, etc ...)
shell: bash
if: |
( steps.set-outputs.outputs.ENVIRONMENT != 'staging' ) && ( steps.set-outputs.outputs.PROJECT == 'kas' || steps.set-outputs.outputs.PROJECT == 'baas' )
run: |
if [[ ${{ inputs.ENVIRONMENT }} == "qa" ]]; then
sed -i -r "s|(tag: )[0-9a-f]+(-.*)?|\1${{ inputs.GITHUB_SHA }}\2|" charts/apps/${{ inputs.PROJECT }}/${{ inputs.PROJECT_NAME }}/values/qa-2/image.yaml
else
sed -i -r "s|(tag: )[0-9a-f]+(-.*)?|\1${{ inputs.GITHUB_SHA }}\2|" charts/apps/${{ inputs.PROJECT }}/${{ inputs.PROJECT_NAME }}/values/${{ inputs.ENVIRONMENT }}/image.yaml
fi
- name: deploy not staging environments klippass, devops (general) (dev, qa, etc ...)
shell: bash
if: |
( steps.set-outputs.outputs.ENVIRONMENT != 'staging' ) && ( steps.set-outputs.outputs.PROJECT != 'kas' ) && ( steps.set-outputs.outputs.PROJECT != 'baas' ) && ( steps.set-outputs.outputs.PROJECT_NAME != 'klip' )
&& ( steps.set-outputs.outputs.PROJECT_NAME != 'klipdrops' )
run: |
sed -i -r "s|(tag: )[0-9a-f]+(-.*)?|\1${{ inputs.GITHUB_SHA }}\2|" charts/apps/${{ inputs.PROJECT }}/${{ inputs.PROJECT_NAME }}/values/${{ inputs.ENVIRONMENT }}/image.yaml
- name: deploy not staging environments klip, klipdrops (helm chart) (dev, qa, etc ...)
shell: bash
if: |
( steps.set-outputs.outputs.ENVIRONMENT != 'staging' ) && ( steps.set-outputs.outputs.PROJECT_NAME == 'klip' || steps.set-outputs.outputs.PROJECT_NAME == 'klipdrops' )
run: |
sed -i -r "s|(tag: )[0-9a-f]+(-.*)?|\1${{ inputs.GITHUB_SHA }}\2|" charts/apps/${{ inputs.PROJECT }}/${{ inputs.PROJECT_NAME }}/helm-chart/values/${{ inputs.ENVIRONMENT }}/image.yaml
- name: git commit and push
shell: bash
if:
(steps.set-outputs.outputs.ENVIRONMENT != 'staging') || (steps.set-outputs.outputs.ENVIRONMENT == 'staging' && steps.set-outputs.outputs.IS_STAGING == 'enabled')
run: |
git add .
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -m "Update ${{ inputs.PROJECT_NAME }} image tag in ${{ inputs.ENVIRONMENT }}."
git push origin master
echo "git commit and push done"
- name: pr to master step klip, klipdrops
shell: bash
if: |
( steps.set-outputs.outputs.ENVIRONMENT == 'staging' )
&& ( steps.set-outputs.outputs.PROJECT_NAME == 'klip' || steps.set-outputs.outputs.PROJECT_NAME == 'klipdrops' )
run: |
echo "pr to master step"
suffix=`echo $(date +%Y-%m-%d-%H-%M-%S)`
git pull origin master
git checkout -b ${{ inputs.PROJECT_NAME }}-$suffix
sed -i -r "s|(tag: )[0-9a-f]+(-.*)?|\1${{ inputs.GITHUB_SHA }}\2|" charts/apps/${{ inputs.PROJECT }}/${{ inputs.PROJECT_NAME }}/helm-chart/values/prod/image.yaml
git add .
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -m "Update ${{ inputs.PROJECT_NAME }} image tag in Production."
git push origin ${{ inputs.PROJECT_NAME }}-$suffix
pr_url=$(gh pr create --base master --title "There is a deployment request for ${{ inputs.PROJECT_NAME }} version ${{ github.head_ref }}." --body "Update image tag to prod" --head ${{ inputs.PROJECT_NAME }}-$suffix)
echo "PR_URL=$pr_url" >> $GITHUB_OUTPUT
echo "PR_URL: $pr_url"
- name: pr to master step klippass, kas, baas
id: pr-to-master
shell: bash
if: |
( steps.set-outputs.outputs.ENVIRONMENT == 'staging' )
&& ( steps.set-outputs.outputs.PROJECT_NAME != 'klip' && steps.set-outputs.outputs.PROJECT_NAME != 'klipdrops' )
run: |
echo "pr to master step"
suffix=`echo $(date +%Y-%m-%d-%H-%M-%S)`
git pull origin master
git checkout -b ${{ inputs.PROJECT_NAME }}-$suffix
echo suffix=$suffix >> $GITHUB_OUTPUT
sed -i -r "s|(tag: )[0-9a-f]+(-.*)?|\1${{ inputs.GITHUB_SHA }}\2|" charts/apps/${{ inputs.PROJECT }}/${{ inputs.PROJECT_NAME }}/values/prod/image.yaml
git add .
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git commit -m "Update ${{ inputs.PROJECT_NAME }} image tag in Production."
git push origin ${{ inputs.PROJECT_NAME }}-$suffix
pr_url=$(gh pr create --base master --title "There is a deployment request for ${{ inputs.PROJECT_NAME }} version ${{ github.head_ref }}." --body "Update image tag to prod" --head ${{ inputs.PROJECT_NAME }}-$suffix)
echo "PR_URL=$pr_url" >> $GITHUB_OUTPUT
echo "PR_URL: $pr_url"