Skip to content

Commit a625f4e

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

File tree

1 file changed

+28
-121
lines changed

1 file changed

+28
-121
lines changed

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

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