Skip to content

Commit bee7aac

Browse files
committed
add reusable-workflow for archiever
1 parent 0b9daba commit bee7aac

File tree

1 file changed

+29
-123
lines changed

1 file changed

+29
-123
lines changed

.github/workflows/build-rp-archiver-push-tag-india-ire-shared.yaml

Lines changed: 29 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -6,129 +6,35 @@ on:
66
- '*.*.*-india'
77
- '*.*.*-ire'
88
- '*.*.*-staging'
9-
109
jobs:
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

Comments
 (0)