Skip to content

CI deploy prod

CI deploy prod #2

Workflow file for this run

name: CI deploy prod
on:
workflow_dispatch:
branches:
- main
permissions:
users:
- peara
inputs:
version:
description: 'Specify which version to bump (major, minor, patch)'
required: true
type: string
default: 'patch'
jobs:
lint:
if: github.actor == 'peara'
uses: ./.github/workflows/lint.yml
secrets: inherit
test:
if: github.actor == 'peara'
uses: ./.github/workflows/test.yml
secrets: inherit
build:
if: github.actor == 'peara'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get the previous Git tag
id: get_version
run: |
# Get the most recent tag (previous tag of the current commit)
PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD^)
# If there is no previous tag, default to 1.0.0
if [ -z "$PREVIOUS_TAG" ]; then
echo "No previous tag found, defaulting to version 1.0.0"
PREVIOUS_TAG="1.0.0"
fi
echo "Previous tag: $PREVIOUS_TAG"
CURRENT_VERSION=$(echo $PREVIOUS_TAG | sed 's/^.*://g')
echo "version=$CURRENT_VERSION" >> $GITHUB_ENV
- name: Increment version based on input
id: increment_version
run: |
VERSION=${{ env.version }}
if [ "${{ github.event.inputs.version }}" == "major" ]; then
VERSION=$(echo $VERSION | awk -F. -v OFS=. '{$1+=1; $2=0; $3=0; print}')
elif [ "${{ github.event.inputs.version }}" == "minor" ]; then
VERSION=$(echo $VERSION | awk -F. -v OFS=. '{$2+=1; $3=0; print}')
elif [ "${{ github.event.inputs.version }}" == "patch" ]; then
VERSION=$(echo $VERSION | awk -F. -v OFS=. '{$3+=1; print}')
else
echo "Invalid version input! Use 'major', 'minor', or 'patch'."
exit 1
fi
echo "New version: $VERSION"
echo "new_version=$VERSION" >> $GITHUB_ENV
- name: Tag commit
uses: tvdias/github-tagger@v0.0.1
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
tag: "${{ env.new_version }}"
- name: Set environment variable
run: |
echo CONTAINER_RELEASE_IMAGE=ghcr.io/aura-nw/erascope:${{ env.new_version }} >> $GITHUB_ENV
- name: Build the Docker image and push it to the registry
env:
GITHUB_USERNAME: ${{ github.actor }}
GITHUB_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
run: |
./ci/build.sh
build-hasura-metadata:
runs-on: [ubuntu-latest]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set environment variable
run: |
SHORT_SHA_COMMIT=$(git rev-parse --short HEAD)
echo CONTAINER_RELEASE_IMAGE=ghcr.io/aura-nw/horoscope-hasura:${GITHUB_REF_NAME}_${SHORT_SHA_COMMIT} >> $GITHUB_ENV
- name: Check hasura changes
id: NUMBER_CHANGES
run: |
STATUS=`git diff HEAD^ HEAD hasura`
NUMBER_CHANGES=${#STATUS}
echo $NUMBER_CHANGES
echo NUMBER_CHANGES=$NUMBER_CHANGES >> $GITHUB_OUTPUT
- name: Build and push
if: ${{steps.NUMBER_CHANGES.outputs.NUMBER_CHANGES != 0}}
uses: docker/build-push-action@v4
with:
file: Dockerfile.hasura
context: .
cache-from: type=gha
cache-to: type=gha,mode=max
push: true
tags: |
${{ env.CONTAINER_RELEASE_IMAGE }}
outputs:
NUMBER_CHANGES: ${{ steps.NUMBER_CHANGES.outputs.NUMBER_CHANGES }}
update-manifest:
needs: [lint, test, build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: imranismail/setup-kustomize@v2
- name: Set environment variable
run: |
echo CONTAINER_RELEASE_IMAGE=ghcr.io/aura-nw/erascope:${{ env.new_version }} >> $GITHUB_ENV
echo REPO_MANIFEST_NAME=gitops-prod >> $GITHUB_ENV
echo REPO_MANIFEST_URL=github.com/aura-nw/gitops-prod.git >> $GITHUB_ENV
echo REPO_MANIFEST_BRANCH=main >> $GITHUB_ENV
echo REPO_MANIFEST_ENV_MAIN=./clusters/k8s-xstaxy/horoscope-v2/horoscope-crawl-xstaxy >> $GITHUB_ENV
echo REPO_MANIFEST_TAG_IMAGE=image_erascope >> $GITHUB_ENV
- name: Update manifest
env:
PERSONAL_ACCESS_TOKEN: ${{ secrets.REGISTRY_PASSWORD }}
run: |
./ci/updateManifest.sh
update-manifest-hasura:
runs-on: [ubuntu-latest]
needs: [build-hasura-metadata]
if: ${{needs.build-hasura-metadata.outputs.NUMBER_CHANGES != 0}}
steps:
- uses: actions/checkout@v3
- uses: imranismail/setup-kustomize@v2
- name: Set environment variable
run: |
SHORT_SHA_COMMIT=$(git rev-parse --short HEAD)
echo CONTAINER_RELEASE_IMAGE=ghcr.io/aura-nw/horoscope-hasura:${GITHUB_REF_NAME}_${SHORT_SHA_COMMIT} >> $GITHUB_ENV
echo REPO_MANIFEST_NAME=gitops-prod >> $GITHUB_ENV
echo REPO_MANIFEST_URL=github.com/aura-nw/gitops-prod.git >> $GITHUB_ENV
echo REPO_MANIFEST_BRANCH=main >> $GITHUB_ENV
echo REPO_MANIFEST_ENV_MAIN=./clusters/k8s-xstaxy/horoscope-v2/horoscope-crawl-xstaxy >> $GITHUB_ENV
echo REPO_MANIFEST_TAG_IMAGE=image_hasura >> $GITHUB_ENV
- name: Update manifest
env:
PERSONAL_ACCESS_TOKEN: ${{ secrets.REGISTRY_PASSWORD }}
run: |
./ci/updateManifest.sh