Skip to content

Commit 3bc9eb0

Browse files
authored
Merge pull request #40 from sivanaikk/patch/versions
Feat: added github actions CI
2 parents 859a491 + b981d2e commit 3bc9eb0

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

.github/workflows/docker-image.yml

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# This github workflow will automatically update docker image tags of onboarding-server-depl in the datakaveri/iudx-deployment repository files, whenever docker image is pushed to ghcr.io/datakaveri/onboarding-server-depl .Based on tag it will update the master/latest branch (if its 1.0.2-alpha-) or 1.0.1 stable branch (if its 1.0.1-)
2+
name: Update Onboarding server docker image tags
3+
4+
# This trigger will run the workflow whenever a new package is published to the registry
5+
on:
6+
registry_package:
7+
types: [published]
8+
9+
# This is needed to read the registry packages
10+
permissions:
11+
packages: read
12+
13+
jobs:
14+
15+
build:
16+
runs-on: ubuntu-20.04
17+
18+
steps:
19+
- uses: actions/checkout@v3
20+
with:
21+
repository: datakaveri/iudx-deployment
22+
# Jenkins token to perform git operations
23+
token: "${{ secrets.JENKINS_UPDATE }}"
24+
fetch-depth: 0
25+
26+
# This step updates the Onboarding server docker image tags
27+
- name: Update Onboarding server docker image tags
28+
env:
29+
GH_TOKEN: ${{ secrets.JENKINS_UPDATE}}
30+
run: |
31+
# Get the latest version of 1.0.1 and 1.0.2-alpha tags from the container registry using GitHub API
32+
export newtag1_0_1=`(head -n 1 <(curl -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/orgs/datakaveri/packages/container/onboarding-server-depl/versions | jq ' .[].metadata.container.tags[0]' | grep 1.0.1 | grep -v alpha | sed -e 's/^"//' -e 's/"$//'))`
33+
export newtag1_0_2=`(head -n 1 <(curl -H "Accept: application/vnd.github+json" -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" https://api.github.com/orgs/datakaveri/packages/container/onboarding-server-depl/versions | jq ' .[].metadata.container.tags[0]' | grep 1.0.2-alpha | sed -e 's/^"//' -e 's/"$//'))`
34+
35+
# Get the old tags from the YAML files
36+
export oldtag1_0_2=`yq -r .services.onboarding-server.image Docker-Swarm-deployment/single-node/onboarding-server/onboarding-server-stack.yaml | cut -d : -f 2`
37+
git checkout 1.0.1
38+
export oldtag1_0_1=$(yq -r .services.onboarding-server.image Docker-Swarm-deployment/single-node/onboarding-server/onboarding-server-stack.yaml | cut -d : -f 2)
39+
40+
# Set Git user
41+
git config --global user.name 'jenkins-datakaveri'
42+
git config --global user.email "[email protected]"
43+
44+
45+
# Update the YAML files and create a new branch for each tag update
46+
if [ "$newtag1_0_1" != "$oldtag1_0_1" ]
47+
then
48+
git checkout -b onboarding-server-1.0.1-automatic-updates/$newtag1_0_1
49+
50+
# Uses sed to find and replace $oldtag1_0_1 with $newtag1_0_1 in Docker-Swarm-deployment/single-node/onboarding-server/onboarding-server-stack.yaml file
51+
sed -i s/$oldtag1_0_1/$newtag1_0_1/g Docker-Swarm-deployment/single-node/onboarding-server/onboarding-server-stack.yaml
52+
53+
# Exports the current version of the application from K8s-deployment/Charts/onboarding-server/Chart.yaml file
54+
export oldappversion=`yq -r .version K8s-deployment/Charts/onboarding-server/Chart.yaml`
55+
56+
# Uses awk to increment the version number in K8s-deployment/Charts/onboarding-server/Chart.yaml file
57+
export newappversion=`yq -r .version K8s-deployment/Charts/onboarding-server/Chart.yaml | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}' `
58+
59+
# Uses sed to find and replace $oldappversion with $newappversion in K8s-deployment/Charts/onboarding-server/Chart.yaml and K8s-deployment/Charts/onboarding-server/values.yaml files
60+
sed -i s/$oldappversion/$newappversion/g K8s-deployment/Charts/onboarding-server/Chart.yaml
61+
sed -i s/$oldtag1_0_1/$newtag1_0_1/g K8s-deployment/Charts/onboarding-server/values.yaml
62+
git add Docker-Swarm-deployment/single-node/onboarding-server/onboarding-server-stack.yaml K8s-deployment/Charts/onboarding-server/values.yaml K8s-deployment/Charts/onboarding-server/Chart.yaml
63+
git commit --allow-empty -m "updated onboarding server docker image tag to $newtag1_0_1"
64+
git push --set-upstream origin onboarding-server-1.0.1-automatic-updates/$newtag1_0_1
65+
66+
# Creates a new pull request on the datakaveri/iudx-deployment repository with the base branch 1.0.1
67+
gh pr create -R datakaveri/iudx-deployment --base 1.0.1 --fill
68+
fi
69+
70+
if [ "$newtag1_0_2" != "$oldtag1_0_2" ]
71+
then
72+
git checkout master
73+
git checkout -b onboarding-server-automatic-updates/$newtag1_0_2
74+
75+
# Uses sed to find and replace $oldtag1_0_2 with $newtag1_0_2 in Docker-Swarm-deployment/single-node/onboarding-server/onboarding-server-stack.yaml file
76+
sed -i s/$oldtag1_0_2/$newtag1_0_2/g Docker-Swarm-deployment/single-node/onboarding-server/onboarding-server-stack.yaml
77+
78+
# Exports the current version of the application from K8s-deployment/Charts/onboarding-server/Chart.yaml file
79+
export oldappversion=`yq -r .version K8s-deployment/Charts/onboarding-server/Chart.yaml`
80+
81+
# Uses awk to increment the version number in K8s-deployment/Charts/onboarding-server/Chart.yaml file
82+
export newappversion=`yq -r .version K8s-deployment/Charts/onboarding-server/Chart.yaml | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}' `
83+
84+
# Uses sed to find and replace $oldappversion with $newappversion in K8s-deployment/Charts/onboarding-server/Chart.yaml and K8s-deployment/Charts/onboarding-server/values.yaml files
85+
sed -i s/$oldappversion/$newappversion/g K8s-deployment/Charts/onboarding-server/Chart.yaml
86+
sed -i s/$oldtag1_0_2/$newtag1_0_2/g K8s-deployment/Charts/onboarding-server/values.yaml
87+
git add Docker-Swarm-deployment/single-node/onboarding-server/onboarding-server-stack.yaml K8s-deployment/Charts/onboarding-server/values.yaml K8s-deployment/Charts/onboarding-server/Chart.yaml
88+
git commit --allow-empty -m "updated onboarding server docker image tag to $newtag1_0_2"
89+
git push --set-upstream origin onboarding-server-automatic-updates/$newtag1_0_2
90+
91+
# Creates a new pull request on the datakaveri/iudx-deployment repository with the base branch master
92+
gh pr create -R datakaveri/iudx-deployment --base master --fill
93+
fi

0 commit comments

Comments
 (0)