Skip to content

Commit

Permalink
Add Staging in build-rp-archiver-push-tag-shared.yaml
Browse files Browse the repository at this point in the history
  • Loading branch information
marcelloale authored and Robi9 committed Sep 27, 2023
1 parent 5dc6928 commit 3983fb2
Show file tree
Hide file tree
Showing 2 changed files with 224 additions and 0 deletions.
131 changes: 131 additions & 0 deletions .github/workflows/build-rp-archiver-push-tag-shared.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
name: Build Archiver in Shared (Push Tag)

on:
push:
tags:
- '*.*.*-develop'

jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set variables
run: |
TAG="$( echo "${GITHUB_REF}" | cut -d'/' -f3 )"
if grep -qs -e '^.*.*-develop' <<< "${TAG}" ; then
echo "Found environment: DEVELOP - ${TAG}"
echo "MANIFESTS_ENVIRONMENT=develop" | tee -a "${GITHUB_ENV}"
elif grep -qs -e '^.*.*-staging' <<< "${TAG}" ; then
echo "Found environment: STAGING - ${TAG}"
echo "MANIFESTS_ENVIRONMENT=staging" | tee -a "${GITHUB_ENV}"
elif grep -qs -e '^.*.*' <<< "${TAG}" ; then
echo "No environment found, assuming: PRODUCTION - ${TAG}"
echo "MANIFESTS_ENVIRONMENT=production" | tee -a "${GITHUB_ENV}"
else
echo 'Not a valid tag. Skipping...'
exit 1
fi
echo "TAG=$TAG" | tee -a "${GITHUB_ENV}"
VERSION="${TAG}"
echo "VERSION=${VERSION}" | tee -a "${GITHUB_ENV}"
echo "COMMIT_SHA=$GITHUB_SHA" | tee -a "${GITHUB_ENV}"
echo "IMAGE_TAG=${{ secrets.ECR }}/rp-archiver:${TAG}" | tee -a "${GITHUB_ENV}"
echo "IMAGE_SOURCE_URL=https://github.com/weni-ai/rp-archiver" | tee -a "${GITHUB_ENV}"
echo "MANIFESTS_REPOSITORY=Ilhasoft/kubernetes-manifests-platform" | tee -a "${GITHUB_ENV}"
echo "MANIFESTS_APPLICATION=weni-flows/archiver" | tee -a "${GITHUB_ENV}"
echo "MANIFESTS_PATCH_TARGET=deployment.json" | tee -a "${GITHUB_ENV}"
- name: Check out the repo
uses: actions/checkout@v3
with:
ref: "${{env.GITHUB_SHA}}"

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Registry
uses: docker/login-action@v2
with:
registry: ${{ secrets.ECR }}
username: ${{ secrets.AWS_ACCESS_KEY_ID_SHARED }}
password: ${{ secrets.AWS_SECRET_ACCESS_KEY_SHARED }}

- name: Build and push - Archiver Image
uses: docker/build-push-action@v3
with:
context: .
labels: |
tag=${{env.TAG}}
commit=${{env.COMMIT_SHA}}
repository=${{env.IMAGE_SOURCE_URL}}
file: docker/Dockerfile
push: true
tags: "${{env.IMAGE_TAG}}"
no-cache: true

- name: Check out Kubernetes Manifests
uses: actions/checkout@master
with:
ref: main
repository: "${{ env.MANIFESTS_REPOSITORY }}"
token: "${{ secrets.DEVOPS_GITHUB_PERMANENT_TOKEN }}"
path: ./kubernetes-manifests/

- name: Update image on deployment
run: |
which jq > /dev/null 2>&1 || ( sudo apt update ; sudo apt install -y jq )
# Dep: coreutils
verlte() {
[ "$1" = "`echo -e "$1\n$2" | sort -V | head -n1`" ]
}
verlt(){
[ "$1" = "$2" ] && return 1 || verlte $1 $2
}
export PROJECT_DIR="${{ env.MANIFESTS_APPLICATION }}"
ENV_DIR="kubernetes-manifests/${{ env.MANIFESTS_APPLICATION }}/${MANIFESTS_ENVIRONMENT}"
for e in ${ENV_DIR}; do
echo "Update ${e}:"
if [ ! -d "${e}" ] ; then
echo "${e}: Does not exist, skipping"
elif [ ! -r "${e}/kustomization.yaml" ] ; then
echo "${e}/kustomization.yaml: Does not readable, skipping"
elif [ ! -r "${e}/${{ env.MANIFESTS_PATCH_TARGET }}" ] ; then
echo "${e}/${{ env.MANIFESTS_PATCH_TARGET }}: Does not readable, skipping"
else
OLD_IMAGE=$(
cat "${e}/${{ env.MANIFESTS_PATCH_TARGET }}" \
| jq '.[] | select(.path == "/spec/template/spec/containers/0/image") | .value'
)
echo "Old image to replace: ${OLD_IMAGE}"
OLD_VERSION=$(
echo "${OLD_IMAGE}" \
| sed s'/^.*[v:]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/'g \
| head -n1
)
echo "Old image version to compare: ${OLD_VERSION}<=${{env.VERSION}}"
if verlte "${OLD_VERSION}" "${VERSION}" || [[ ! "${OLD_VERSION}" =~ [0-9]+\.[0-9]+\.[0-9]+ ]] ; then
echo 'New configurations:'
new_configuration=$(
cat "${e}/${{ env.MANIFESTS_PATCH_TARGET }}" \
| jq '(..|select(.path == "/spec/template/spec/containers/0/image")?) += {value: "'"${{env.IMAGE_TAG}}"'"}'
)
echo "${new_configuration}"
echo "${new_configuration}" > "${e}/${{ env.MANIFESTS_PATCH_TARGET }}"
else
echo "Version in file is greater than build, skipping update yaml"
fi
fi
done
- name: Commit & Push changes
uses: actions-js/push@master
with:
github_token: "${{ secrets.DEVOPS_GITHUB_PERMANENT_TOKEN }}"
repository: "${{ env.MANIFESTS_REPOSITORY }}"
directory: ./kubernetes-manifests/
branch: main
message: "From Archiver Build (Push Tag ${{ env.MANIFESTS_ENVIRONMENT }})"

93 changes: 93 additions & 0 deletions .github/workflows/build-rp-archiver-push-tag-sp-india-ire.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: Build Archiver in SP, India and Ireland (Push Tag)

on:
push:
tags:
- '*.*.*-staging'
- '*.*.*'

jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Set variables
run: |
TAG="$( echo "${GITHUB_REF}" | cut -d'/' -f3 )"
if grep -qs -e '^.*.*-develop' <<< "${TAG}" ; then
echo "Found environment: DEVELOP - ${TAG}"
echo "ENVIRONMENT=develop" | tee -a "${GITHUB_ENV}"
exit 1 # stop action
elif grep -qs -e '^.*.*-staging' <<< "${TAG}" ; then
echo "Found environment: STAGING - ${TAG}"
echo "ENVIRONMENT=staging" | tee -a "${GITHUB_ENV}"
elif grep -qs -e '^.*.*' <<< "${TAG}" ; then
echo "No environment found, assuming: PRODUCTION - ${TAG}"
echo "ENVIRONMENT=production" | tee -a "${GITHUB_ENV}"
else
echo 'Not a valid tag. Skipping...'
exit 1
fi
echo "TAG=$TAG" | tee -a "${GITHUB_ENV}"
VERSION="${TAG}"
echo "VERSION=${VERSION}" | tee -a "${GITHUB_ENV}"
echo "COMMIT_SHA=$GITHUB_SHA" | tee -a "${GITHUB_ENV}"
if [[ "${TAG}" == *"-india"* ]]; then
echo "IMAGE_TAG=${{ secrets.ECR_INDIA }}/archiver:${TAG}" | tee -a "${GITHUB_ENV}"
elif [[ "${TAG}" == *"-ire"* ]]; then
echo "IMAGE_TAG=${{ secrets.ECR_IRE }}/rp-archiver-rapidpro:${TAG}" | tee -a "${GITHUB_ENV}"
else
echo "IMAGE_TAG=${{ secrets.ECR_SP }}/push-archiver:${TAG}" | tee -a "${GITHUB_ENV}"
fi
echo "IMAGE_SOURCE_URL=https://github.com/weni-ai/rp-archiver" | tee -a "${GITHUB_ENV}"
echo "MANIFESTS_REPOSITORY=Ilhasoft/kubernetes-manifests-platform" | tee -a "${GITHUB_ENV}"
echo "MANIFESTS_APPLICATION=weni-flows/archiver" | tee -a "${GITHUB_ENV}"
echo "MANIFESTS_PATCH_TARGET=deployment.json" | tee -a "${GITHUB_ENV}"
- name: Check out the repo
uses: actions/checkout@v3
with:
ref: "${{env.GITHUB_SHA}}"

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Registry India
if: ${{ contains(env.TAG, '-india') }}
uses: docker/login-action@v2
with:
registry: ${{ secrets.ECR_INDIA }}
username: ${{ secrets.AWS_ACCESS_KEY_ID_INDIA }}
password: ${{ secrets.AWS_SECRET_ACCESS_KEY_INDIA }}

- name: Login to Registry Ireland
if: ${{ contains(env.TAG, '-ire') }}
uses: docker/login-action@v2
with:
registry: ${{ secrets.ECR_IRE }}
username: ${{ secrets.AWS_ACCESS_KEY_ID_IRE }}
password: ${{ secrets.AWS_SECRET_ACCESS_KEY_IRE }}

- name: Login to Registry SP
if: ${{ !contains(env.TAG, '-india') && !contains(env.TAG, '-ire') }}
uses: docker/login-action@v2
with:
registry: ${{ secrets.ECR_SP }}
username: ${{ secrets.AWS_ACCESS_KEY_ID_SP }}
password: ${{ secrets.AWS_SECRET_ACCESS_KEY_SP }}

- name: Build and push - Archiver Image
uses: docker/build-push-action@v3
with:
context: .
labels: |
tag=${{env.TAG}}
commit=${{env.COMMIT_SHA}}
repository=${{env.IMAGE_SOURCE_URL}}
file: docker/Dockerfile
push: true
tags: "${{env.IMAGE_TAG}}"
no-cache: true

0 comments on commit 3983fb2

Please sign in to comment.