147 lines
5 KiB
YAML
147 lines
5 KiB
YAML
# Ref: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
build_service:
|
|
description: 'Name of a single service to build(in small letters). "all" to build everything'
|
|
required: false
|
|
default: 'false'
|
|
push:
|
|
branches:
|
|
- dev
|
|
paths:
|
|
- backend/**
|
|
|
|
name: Build and deploy workers
|
|
|
|
jobs:
|
|
deploy:
|
|
name: Deploy
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
# We need to diff with old commit
|
|
# to see which workers got changed.
|
|
fetch-depth: 2
|
|
# ref: staging
|
|
|
|
- name: Docker login
|
|
run: |
|
|
docker login ${{ secrets.OSS_REGISTRY_URL }} -u ${{ secrets.OSS_DOCKER_USERNAME }} -p "${{ secrets.OSS_REGISTRY_TOKEN }}"
|
|
|
|
- uses: azure/k8s-set-context@v1
|
|
with:
|
|
method: kubeconfig
|
|
kubeconfig: ${{ secrets.OSS_KUBECONFIG }} # Use content of kubeconfig in secret.
|
|
id: setcontext
|
|
|
|
# Caching docker images
|
|
# - uses: satackey/action-docker-layer-caching@v0.0.11
|
|
# # Ignore the failure of a step and avoid terminating the job.
|
|
# continue-on-error: true
|
|
|
|
|
|
- name: Build, tag
|
|
id: build-image
|
|
env:
|
|
DOCKER_REPO: ${{ secrets.OSS_REGISTRY_URL }}
|
|
IMAGE_TAG: ${{ github.sha }}
|
|
ENVIRONMENT: staging
|
|
run: |
|
|
#
|
|
# TODO: Check the container tags are same, then skip the build and deployment.
|
|
#
|
|
# Build a docker container and push it to Docker Registry so that it can be deployed to Kubernetes cluster.
|
|
#
|
|
# Getting the images to build
|
|
#
|
|
set -x
|
|
touch /tmp/images_to_build.txt
|
|
tmp_param=${{ github.event.inputs.build_service }}
|
|
build_param=${tmp_param:-'false'}
|
|
case ${build_param} in
|
|
false)
|
|
{
|
|
git diff --name-only HEAD HEAD~1 | grep -E "backend/cmd|backend/services" | grep -vE ^ee/ | cut -d '/' -f3
|
|
|
|
git diff --name-only HEAD HEAD~1 | grep -E "backend/pkg|backend/internal" | grep -vE ^ee/ | cut -d '/' -f3 | uniq | while read -r pkg_name ; do
|
|
grep -rl "pkg/$pkg_name" backend/services backend/cmd | cut -d '/' -f3
|
|
done
|
|
} | uniq > /tmp/images_to_build.txt
|
|
;;
|
|
all)
|
|
ls backend/cmd > /tmp/images_to_build.txt
|
|
;;
|
|
*)
|
|
echo ${{github.event.inputs.build_service }} > /tmp/images_to_build.txt
|
|
;;
|
|
esac
|
|
|
|
[[ $(cat /tmp/images_to_build.txt) != "" ]] || (echo "Nothing to build here"; exit 1)
|
|
#
|
|
# Pushing image to registry
|
|
#
|
|
cd backend
|
|
for image in $(cat /tmp/images_to_build.txt);
|
|
do
|
|
echo "Bulding $image"
|
|
PUSH_IMAGE=1 bash -x ./build.sh skip $image
|
|
echo "::set-output name=image::$DOCKER_REPO/$image:$IMAGE_TAG"
|
|
done
|
|
|
|
- name: Deploying to kuberntes
|
|
env:
|
|
IMAGE_TAG: ${{ github.sha }}
|
|
run: |
|
|
#
|
|
# Deploying image to environment.
|
|
#
|
|
cd scripts/helmcharts/
|
|
|
|
## Update secerts
|
|
sed -i "s#openReplayContainerRegistry.*#openReplayContainerRegistry: \"${{ secrets.OSS_REGISTRY_URL }}\"#g" vars.yaml
|
|
sed -i "s/postgresqlPassword: \"changeMePassword\"/postgresqlPassword: \"${{ secrets.OSS_PG_PASSWORD }}\"/g" vars.yaml
|
|
sed -i "s/accessKey: \"changeMeMinioAccessKey\"/accessKey: \"${{ secrets.OSS_MINIO_ACCESS_KEY }}\"/g" vars.yaml
|
|
sed -i "s/secretKey: \"changeMeMinioPassword\"/secretKey: \"${{ secrets.OSS_MINIO_SECRET_KEY }}\"/g" vars.yaml
|
|
sed -i "s/jwt_secret: \"SetARandomStringHere\"/jwt_secret: \"${{ secrets.OSS_JWT_SECRET }}\"/g" vars.yaml
|
|
sed -i "s/domainName: \"\"/domainName: \"${{ secrets.OSS_DOMAIN_NAME }}\"/g" vars.yaml
|
|
|
|
set -x
|
|
echo > /tmp/image_override.yaml
|
|
mkdir /tmp/helmcharts
|
|
mv openreplay/charts/ingress-nginx /tmp/helmcharts/
|
|
mv openreplay/charts/quickwit /tmp/helmcharts/
|
|
## Update images
|
|
for image in $(cat /tmp/images_to_build.txt);
|
|
do
|
|
mv openreplay/charts/$image /tmp/helmcharts/
|
|
cat <<EOF>>/tmp/image_override.yaml
|
|
${image}:
|
|
image:
|
|
# We've to strip off the -ee, as helm will append it.
|
|
tag: ${IMAGE_TAG}
|
|
EOF
|
|
done
|
|
ls /tmp/helmcharts
|
|
rm -rf openreplay/charts/*
|
|
ls openreplay/charts
|
|
mv /tmp/helmcharts/* openreplay/charts/
|
|
ls openreplay/charts
|
|
|
|
cat /tmp/image_override.yaml
|
|
|
|
# Deploy command
|
|
helm template openreplay -n app openreplay -f vars.yaml -f /tmp/image_override.yaml --set ingress-nginx.enabled=false --set skipMigration=true | kubectl apply -f -
|
|
|
|
# - name: Debug Job
|
|
# if: ${{ failure() }}
|
|
# uses: mxschmitt/action-tmate@v3
|
|
# env:
|
|
# DOCKER_REPO: ${{ secrets.OSS_REGISTRY_URL }}
|
|
# IMAGE_TAG: ${{ github.sha }}
|
|
# ENVIRONMENT: staging
|
|
#
|