85 lines
2.7 KiB
YAML
85 lines
2.7 KiB
YAML
# Ref: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
|
|
|
|
on:
|
|
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
|
|
|
|
- name: Build, tag, and Deploy to k8s
|
|
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
|
|
#
|
|
git diff --name-only HEAD HEAD~1 | grep backend/services | grep -vE ^ee/ | cut -d '/' -f3 | uniq > backend/images_to_build.txt
|
|
[[ $(cat backend/images_to_build.txt) != "" ]] || (echo "Nothing to build here"; exit 0)
|
|
#
|
|
# Pushing image to registry
|
|
#
|
|
cd backend
|
|
for image in $(cat 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
|
|
|
|
#
|
|
# Deploying image to environment.
|
|
#
|
|
cd ../scripts/helm/
|
|
sed -i "s#minio_access_key.*#minio_access_key: \"${{ secrets.OSS_MINIO_ACCESS_KEY }}\" #g" vars.yaml
|
|
sed -i "s#minio_secret_key.*#minio_secret_key: \"${{ secrets.OSS_MINIO_SECRET_KEY }}\" #g" vars.yaml
|
|
sed -i "s#domain_name.*#domain_name: \"foss.openreplay.com\" #g" vars.yaml
|
|
sed -i "s#kubeconfig.*#kubeconfig_path: ${KUBECONFIG}#g" vars.yaml
|
|
for image in $(cat ../../backend/images_to_build.txt);
|
|
do
|
|
sed -i "s/image_tag:.*/image_tag: \"$IMAGE_TAG\"/g" vars.yaml
|
|
# Deploy command
|
|
bash kube-install.sh --app $image
|
|
done
|
|
|
|
# - name: Debug Job
|
|
# if: ${{ failure() }}
|
|
# uses: mxschmitt/action-tmate@v3
|
|
# env:
|
|
# DOCKER_REPO: ${{ secrets.OSS_REGISTRY_URL }}
|
|
# IMAGE_TAG: ${{ github.sha }}
|
|
# ENVIRONMENT: staging
|
|
#
|