66 - ' *.*.*-india'
77 - ' *.*.*-ire'
88 - ' *.*.*-staging'
9-
109jobs :
11- docker :
12- runs-on : ubuntu-latest
10+ setup :
11+ runs-on : ubuntu-latest
12+ outputs :
13+ repository_name : ${{ steps.setup.outputs.repository_name }}
1314 steps :
14- - name : Set variables
15+ - name : Setup outputs
16+ id : setup
1517 run : |
16- TAG="$( echo "${GITHUB_REF}" | cut -d'/' -f3 )"
17- if grep -qs -e '^.*.*-india' <<< "${TAG}" ; then
18- echo "Found environment: INDIA - ${TAG}"
19- echo "MANIFESTS_ENVIRONMENT=mumbai" | tee -a "${GITHUB_ENV}"
20- elif grep -qs -e '^.*.*-staging' <<< "${TAG}" ; then
21- echo "Found environment: STAGING - ${TAG}"
22- echo "MANIFESTS_ENVIRONMENT=mumbai-staging" | tee -a "${GITHUB_ENV}"
23- elif grep -qs -e '^.*.*-ire' <<< "${TAG}" ; then
24- echo "Found environment: IRELAND - ${TAG}"
25- echo "MANIFESTS_ENVIRONMENT=ireland" | tee -a "${GITHUB_ENV}"
26- else
27- echo 'Not a valid tag. Skipping...'
28- exit 1
29- fi
30-
31- echo "TAG=$TAG" | tee -a "${GITHUB_ENV}"
32- VERSION="${TAG}"
33- echo "VERSION=${VERSION}" | tee -a "${GITHUB_ENV}"
34- echo "COMMIT_SHA=$GITHUB_SHA" | tee -a "${GITHUB_ENV}"
35- echo "IMAGE_TAG=${{ secrets.ECR }}/rp-archiver:${TAG}" | tee -a "${GITHUB_ENV}"
36- echo "IMAGE_SOURCE_URL=https://github.com/Ilhasoft/rp-archiver" | tee -a "${GITHUB_ENV}"
37- echo "MANIFESTS_REPOSITORY=weni-ai/kubernetes-manifests-platform" | tee -a "${GITHUB_ENV}"
38- echo "MANIFESTS_APPLICATION=rapidpro/archiver" | tee -a "${GITHUB_ENV}"
39- echo "MANIFESTS_PATCH_TARGET=deployment.json" | tee -a "${GITHUB_ENV}"
40-
41- - name : Check out the repo
42- uses : actions/checkout@v3
43- with :
44- ref : " ${{env.GITHUB_SHA}}"
45-
46- - name : Set up QEMU
47- uses : docker/setup-qemu-action@v2
48-
49- - name : Set up Docker Buildx
50- uses : docker/setup-buildx-action@v2
51-
52- - name : Login to ECR
53- uses : docker/login-action@v2
54- with :
55- registry : ${{ secrets.ECR }}
56- username : ${{ secrets.AWS_ACCESS_KEY_ID_SHARED }}
57- password : ${{ secrets.AWS_SECRET_ACCESS_KEY_SHARED }}
58-
59- - name : Build and push - Rapidpro archiver in Shared Image
60- uses : docker/build-push-action@v3
61- with :
62- context : .
63- labels : |
64- tag=${{env.TAG}}
65- commit=${{env.COMMIT_SHA}}
66- repository=${{env.IMAGE_SOURCE_URL}}
67- file : docker/Dockerfile
68- push : true
69- tags : " ${{env.IMAGE_TAG}}"
70- no-cache : true
71-
72- - name : Check out Kubernetes Manifests
73- uses : actions/checkout@master
74- with :
75- ref : main
76- repository : " ${{ env.MANIFESTS_REPOSITORY }}"
77- token : " ${{ secrets.DEVOPS_GITHUB_PERMANENT_TOKEN }}"
78- path : ./kubernetes-manifests/
79-
80- - name : Update image on deployment
81- run : |
82- which jq > /dev/null 2>&1 || ( sudo apt update ; sudo apt install -y jq )
83- # Dep: coreutils
84- verlte() {
85- [ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ]
86- }
87- verlt(){
88- [ "$1" = "$2" ] && return 1 || verlte $1 $2
89- }
90- export PROJECT_DIR="${{ env.MANIFESTS_APPLICATION }}"
91- ENV_DIR="kubernetes-manifests/${{ env.MANIFESTS_APPLICATION }}/${MANIFESTS_ENVIRONMENT}"
92- for e in ${ENV_DIR}; do
93- echo "Update ${e}:"
94- if [ ! -d "${e}" ] ; then
95- echo "${e}: Does not exist, skipping"
96- elif [ ! -r "${e}/kustomization.yaml" ] ; then
97- echo "${e}/kustomization.yaml: Does not readable, skipping"
98- elif [ ! -r "${e}/${{ env.MANIFESTS_PATCH_TARGET }}" ] ; then
99- echo "${e}/${{ env.MANIFESTS_PATCH_TARGET }}: Does not readable, skipping"
100- else
101- OLD_IMAGE=$(
102- cat "${e}/${{ env.MANIFESTS_PATCH_TARGET }}" \
103- | jq '.[] | select(.path == "/spec/template/spec/containers/0/image") | .value'
104- )
105- echo "Old image to replace: ${OLD_IMAGE}"
106- OLD_VERSION=$(
107- echo "${OLD_IMAGE}" \
108- | sed s'/^.*[v:]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/'g \
109- | head -n1
110- )
111- echo "Old image version to compare: ${OLD_VERSION}<=${{env.VERSION}}"
112- if verlte "${OLD_VERSION}" "${VERSION}" || [[ ! "${OLD_VERSION}" =~ [0-9]+\.[0-9]+\.[0-9]+ ]] ; then
113- echo 'New configurations:'
114- new_configuration=$(
115- cat "${e}/${{ env.MANIFESTS_PATCH_TARGET }}" \
116- | jq '(..|select(.path == "/spec/template/spec/containers/0/image")?) += {value: "'"${{env.IMAGE_TAG}}"'"}'
117- )
118- echo "${new_configuration}"
119- echo "${new_configuration}" > "${e}/${{ env.MANIFESTS_PATCH_TARGET }}"
120- else
121- echo "Version in file is greater than build, skipping update yaml"
122- fi
123- fi
124- done
125-
126- - name : Commit & Push changes
127- uses : actions-js/push@master
128- with :
129- github_token : " ${{ secrets.DEVOPS_GITHUB_PERMANENT_TOKEN }}"
130- repository : " ${{ env.MANIFESTS_REPOSITORY }}"
131- directory : ./kubernetes-manifests/
132- branch : main
133- message : " From Rapidpro Archiver in Shared (Push Tag ${{ env.MANIFESTS_ENVIRONMENT }})"
134-
18+ export GITHUB_REPOSITORY_NAME="${GITHUB_REPOSITORY#$GITHUB_REPOSITORY_OWNER/}"
19+ {
20+ echo "repository_name=${GITHUB_REPOSITORY_NAME}"
21+ } | tee -a "${GITHUB_OUTPUT}"
22+
23+ {
24+ echo "### Workflow Outputs"
25+ echo "| Variable | Description |"
26+ echo "| --------------- | --------------- |"
27+ echo "| repository_name | Repository name |"
28+ } | tee -a "${GITHUB_STEP_SUMMARY}"
29+
30+ call-workflow :
31+ uses : weni-ai/actions-workflows/.github/workflows/reusable-workflow.yaml@main
32+ needs :
33+ - setup
34+ with :
35+ image_repository : rp-archiver
36+ dockerfile : " docker/Dockerfile"
37+ target_repository : weni-ai/kubernetes-manifests-platform
38+ target_application : rapidpro/archiver
39+ target_patch_file : deployment.json
40+ secrets : inherit
0 commit comments