From 2d831ffdccee4a64c0740efbd87b867dfb5b7c82 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Tue, 5 Jul 2022 09:58:07 +0200 Subject: [PATCH] ci(actions): updated build file for workflow --- .github/workflows/workers-ee.yaml | 87 +++++++++++++++++++------------ .github/workflows/workers.yaml | 85 ++++++++++++++++++------------ 2 files changed, 106 insertions(+), 66 deletions(-) diff --git a/.github/workflows/workers-ee.yaml b/.github/workflows/workers-ee.yaml index e937e6cf8..cc5ad2dac 100644 --- a/.github/workflows/workers-ee.yaml +++ b/.github/workflows/workers-ee.yaml @@ -35,11 +35,16 @@ jobs: kubeconfig: ${{ secrets.EE_KUBECONFIG }} # Use content of kubeconfig in secret. id: setcontext - - name: Build, tag, and Deploy to k8s + # # 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.EE_REGISTRY_URL }} - IMAGE_TAG: ee-${{ github.sha }} + IMAGE_TAG: ${{ github.sha }}-ee ENVIRONMENT: staging run: | # @@ -50,51 +55,69 @@ jobs: # Getting the images to build # set -x - case ${{ github.event.inputs.build_service }} 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 - ;; - default) - echo ${{github.event.inputs.build_service }} > /tmp/images_to_build.txt - ;; - esac - git diff --name-only HEAD HEAD~1 | grep backend/services | cut -d '/' -f3 | uniq > backend/images_to_build.txt - [[ $(cat backend/images_to_build.txt) != "" ]] || (echo "Nothing to build here"; exit 0) + { + 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 + + [[ $(cat /tmp/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); + for image in $(cat /tmp/images_to_build.txt); do echo "Bulding $image" PUSH_IMAGE=1 bash -x ./build.sh ee $image echo "::set-output name=image::$DOCKER_REPO/$image:$IMAGE_TAG" done + - name: Deploying to kuberntes + env: + # We're not passing -ee flag, because helm will add that. + IMAGE_TAG: ${{ github.sha }} + run: | # # Deploying image to environment. # - cd ../scripts/helm/ - sed -i "s#minio_access_key.*#minio_access_key: \"${{ secrets.EE_MINIO_ACCESS_KEY }}\" #g" vars.yaml - sed -i "s#minio_secret_key.*#minio_secret_key: \"${{ secrets.EE_MINIO_SECRET_KEY }}\" #g" vars.yaml - sed -i "s#jwt_secret_key.*#jwt_secret_key: \"${{ secrets.EE_JWT_SECRET }}\" #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); + set -x + cd scripts/helmcharts/ + + ## Update secerts + sed -i "s/postgresqlPassword: \"changeMePassword\"/postgresqlPassword: \"${{ secrets.EE_PG_PASSWORD }}\"/g" vars.yaml + sed -i "s/accessKey: \"changeMeMinioAccessKey\"/accessKey: \"${{ secrets.EE_MINIO_ACCESS_KEY }}\"/g" vars.yaml + sed -i "s/secretKey: \"changeMeMinioPassword\"/secretKey: \"${{ secrets.EE_MINIO_SECRET_KEY }}\"/g" vars.yaml + sed -i "s/jwt_secret: \"SetARandomStringHere\"/jwt_secret: \"${{ secrets.EE_JWT_SECRET }}\"/g" vars.yaml + sed -i "s/domainName: \"\"/domainName: \"${{ secrets.EE_DOMAIN_NAME }}\"/g" vars.yaml + sed -i "s/enterpriseEditionLicense: \"\"/enterpriseEditionLicense: \"${{ secrets.EE_LICENSE_KEY }}\"/g" vars.yaml + + echo > /tmp/image_override.yaml + mkdir /tmp/helmcharts + mv openreplay/charts/ingress-nginx /tmp/helmcharts/ + ## Update images + for image in $(cat /tmp/images_to_build.txt); do - sed -i "s/image_tag:.*/image_tag: \"$IMAGE_TAG\"/g" vars.yaml - # Deploy command - bash openreplay-cli --install $image + mv openreplay/charts/$image /tmp/helmcharts/ + cat <>/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() }} diff --git a/.github/workflows/workers.yaml b/.github/workflows/workers.yaml index 246e1995d..db2f509d5 100644 --- a/.github/workflows/workers.yaml +++ b/.github/workflows/workers.yaml @@ -2,11 +2,6 @@ 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 @@ -38,8 +33,14 @@ jobs: 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, and Deploy to k8s + + - name: Build, tag id: build-image env: DOCKER_REPO: ${{ secrets.OSS_REGISTRY_URL }} @@ -54,50 +55,66 @@ jobs: # Getting the images to build # set -x - case ${{ github.event.inputs.build_service }} 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 - ;; - default) - echo ${{github.event.inputs.build_service }} > /tmp/images_to_build.txt - ;; - esac + { + 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 - [[ $(cat backend/images_to_build.txt) != "" ]] || (echo "Nothing to build here"; exit 0) + [[ $(cat /tmp/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); + 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/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); + cd scripts/helmcharts/ + + ## Update secerts + 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 + + echo > /tmp/image_override.yaml + mkdir /tmp/helmcharts + mv openreplay/charts/ingress-nginx /tmp/helmcharts/ + ## Update images + for image in $(cat /tmp/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 + mv openreplay/charts/$image /tmp/helmcharts/ + cat <>/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() }}