Skip to content

Commit

Permalink
Updating gitops workflows (#253)
Browse files Browse the repository at this point in the history
  • Loading branch information
francav authored May 7, 2024
2 parents f4de429 + e3fdc41 commit 4149cde
Show file tree
Hide file tree
Showing 2 changed files with 369 additions and 0 deletions.
203 changes: 203 additions & 0 deletions .github/workflows/_disabled_deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
name: deploy(disabled)

on:
workflow_dispatch:

env:
REGISTRY: ghcr.io
REPOSITORY_OWNER: wkspower
KEYCLOAK_URL: https://login.wkspower.co
WKS_API_URL: https://api.wkspower.co
WKS_EMAIL_API_URL: https://api.wkspower.co/inbound
WKS_STORAGE_API_URL: https://api.wkspower.co

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- uses: actions/checkout@v3

- name: Setup necessary env vars
run: |
version=${GITHUB_REF#"refs/tags/"}
major_minor=$(echo ${version} | sed -e 's/^refs\/heads\///')
sha_short=$(echo ${GITHUB_SHA} | cut -c 1-8)
echo "BUILD_VERSION=$major_minor-$sha_short" >> $GITHUB_ENV
- name: Set up jdk 18
uses: actions/setup-java@v3
with:
java-version: '18'
distribution: 'temurin'

- name: Set up maven
uses: stCarolas/[email protected]
with:
maven-version: 3.8.2

- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build all for backend api
run: mvn -B package --file apps/java/pom.xml

- name: Install dependencies for case-portal
run: yarn --cwd case-portal install

- name: Build for case-portal
run: REACT_APP_KEYCLOAK_URL=${{ env.KEYCLOAK_URL }} REACT_APP_API_URL=${{ env.WKS_API_URL }} REACT_APP_STORAGE_URL=${{ env.WKS_STORAGE_API_URL }} yarn --cwd case-portal build

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

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

- name: Build and push Docker image for storage-api
uses: docker/build-push-action@v2
with:
context: ./storage-api
platforms: linux/amd64,linux/arm64
file: storage-api/Dockerfile
push: true
tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/storage-api:${{ env.BUILD_VERSION }}"

- name: Build and push Docker image for opa
uses: docker/build-push-action@v2
with:
context: ./opa
platforms: linux/amd64,linux/arm64
file: opa/Dockerfile
push: true
tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa:${{ env.BUILD_VERSION }}"

- name: Build and push Docker image for c7-external-tasks
uses: docker/build-push-action@v2
with:
context: ./c7-external-tasks
platforms: linux/amd64,linux/arm64
file: c7-external-tasks/Dockerfile
push: true
tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks:${{ env.BUILD_VERSION }}"

- name: Build and push Docker image for case-engine-rest-api
uses: docker/build-push-action@v2
with:
context: ./case-engine-rest-api
platforms: linux/amd64,linux/arm64
file: case-engine-rest-api/Dockerfile
push: true
tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api:${{ env.BUILD_VERSION }}"

- name: Build and push Docker image for demo-data-loader
uses: docker/build-push-action@v2
with:
context: ./demo-data-loader
platforms: linux/amd64,linux/arm64
file: demo-data-loader/Dockerfile
push: true
tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader:${{ env.BUILD_VERSION }}"

- name: Build and push Docker image for case-portal
uses: docker/build-push-action@v2
with:
context: ./case-portal
platforms: linux/amd64,linux/arm64
file: case-portal/deployments/Dockerfile
push: true
tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal:${{ env.BUILD_VERSION }}"

deploy:
runs-on: ubuntu-latest
needs: [build]
permissions:
contents: read
packages: write

steps:
- uses: actions/checkout@v3
with:
repository: wkspower/wks-gitops
path: wks-gitops
token: ${{ secrets.GH_PAT }}

- name: Setup necessary env vars
run: |
version=${GITHUB_REF#"refs/tags/"}
major_minor=$(echo ${version} | sed -e 's/^refs\/heads\///')
sha_short=$(echo ${GITHUB_SHA} | cut -c 1-8)
echo "BUILD_VERSION=$major_minor-$sha_short" >> $GITHUB_ENV
- uses: supplypike/setup-bin@v3
with:
uri: 'https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.0.0/kustomize_v5.0.0_linux_amd64.tar.gz'
name: 'kustomize'
version: '5.0.0'

- name: Update kubernetes resources with new tag to Local Environment
run: |
cd wks-gitops/apps
cd opa/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa:${{ env.BUILD_VERSION }}
cd ../../
cd case-engine-rest-api/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api:${{ env.BUILD_VERSION }}
cd ../../
cd demo-data-loader/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader:${{ env.BUILD_VERSION }}
cd ../../
cd c7-external-tasks/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks:${{ env.BUILD_VERSION }}
cd ../../
cd case-portal-client/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal:${{ env.BUILD_VERSION }}
cd ../../
- name: Update kubernetes resources with new tag to Staging Environment
run: |
cd wks-gitops/apps
cd storage-api/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/storage-api=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/storage-api:${{ env.BUILD_VERSION }}
cd ../../
cd opa/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa:${{ env.BUILD_VERSION }}
cd ../../
cd case-engine-rest-api/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api:${{ env.BUILD_VERSION }}
cd ../../
cd demo-data-loader/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader:${{ env.BUILD_VERSION }}
cd ../../
cd c7-external-tasks/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks:${{ env.BUILD_VERSION }}
cd ../../
cd case-portal-client/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal:${{ env.BUILD_VERSION }}
cd ../../
- name: New tag release for continuous delivery
run: |
cd wks-gitops
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git commit -am "Release docker tag"
git push
166 changes: 166 additions & 0 deletions .github/workflows/gitops_update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
name: deploy(disabled)

on:
workflow_dispatch:

env:
REGISTRY: ghcr.io
REPOSITORY_OWNER: wkspower
WEBSOCKET_ENABLED: true
TOPIC_CASE_CREATE: case-create
TOPIC_CREATE_HUMAN_TASK: human-task-create
NOVU_ENABLED: true
KEYCLOAK_URL_LOCAL: http://login.wkspower.local
WKS_API_URL_LOCAL: http://api.wkspower.local
WKS_STORAGE_API_URL_LOCAL: http://api.wkspower.local/storage
WEBSOCKET_URL_LOCAL: ws://ws.wkspower.local
NOVU_PUBLISHER_API_URL_LOCAL: http://novu.wkspower.local

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- uses: actions/checkout@v3

- name: Set up jdk 18
uses: actions/setup-java@v3
with:
java-version: "18"
distribution: "temurin"

- name: Set up maven
uses: stCarolas/[email protected]
with:
maven-version: 3.8.2

- name: Install dependencies for case-portal
run: yarn --cwd apps/react/case-portal install

- name: Build for case-portal
env:
NODE_OPTIONS: "--max_old_space_size=4096"
run: |
export REACT_APP_KEYCLOAK_URL="${{ env.KEYCLOAK_URL_LOCAL }}"
export REACT_APP_API_URL="${{ env.WKS_API_URL_LOCAL }}"
export REACT_APP_STORAGE_URL="${{ env.WKS_STORAGE_API_URL_LOCAL }}"
export REACT_APP_WEBSOCKETS_ENABLED="${{ env.WEBSOCKET_ENABLED }}"
export REACT_APP_WEBSOCKETS_URL="${{ env.WEBSOCKET_URL_LOCAL }}"
export REACT_APP_WEBSOCKETS_CASE_CREATED="${{ env.TOPIC_CASE_CREATE }}"
export REACT_APP_WEBSOCKETS_HUMAN_TASK_CREATED="${{ env.TOPIC_CREATE_HUMAN_TASK }}"
export REACT_APP_NOVU_ENABLED="${{ env.NOVU_ENABLED }}"
export REACT_APP_NOVU_PUBLISHER_API_URL="${{ env.NOVU_PUBLISHER_API_URL_LOCAL }}"
yarn --cwd apps/react/case-portal build
- name: Extract tag name
id: extract_tag
run: echo "::set-output name=tag::$(echo ${GITHUB_REF#refs/tags/})"

- name: Log in to the Container registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

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

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

- name: Build and push Docker image for case-portal
uses: docker/build-push-action@v2
with:
context: ./apps/react/case-portal
platforms: linux/amd64,linux/arm64
file: apps/react/case-portal/deployments/Dockerfile
push: true
tags: "${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal-local:${{ steps.extract_tag.outputs.tag }}"

deploy:
runs-on: ubuntu-latest
needs: [build]
permissions:
contents: read
packages: write

steps:
- uses: actions/checkout@v3
with:
repository: wkspower/wks-gitops
path: wks-gitops
token: ${{ secrets.GH_PAT }}

- name: Extract tag name
id: extract_tag
run: echo "::set-output name=tag::$(echo ${GITHUB_REF#refs/tags/})"

- uses: supplypike/setup-bin@v3
with:
uri: 'https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.0.0/kustomize_v5.0.0_linux_amd64.tar.gz'
name: 'kustomize'
version: '5.0.0'

- name: Update kubernetes resources with new tag to Local Environment
run: |
cd wks-gitops/apps
cd opa/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd case-engine-rest-api/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd demo-data-loader/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd c7-external-tasks/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd case-portal/local
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal-local=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal-local:${{ steps.extract_tag.outputs.tag }}
cd ../../
- name: Update kubernetes resources with new tag to Staging Environment
run: |
cd wks-gitops/apps
cd storage-api/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/storage-api=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/storage-api:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd opa/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/opa:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd case-engine-rest-api/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-engine-rest-api:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd demo-data-loader/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/demo-data-loader:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd c7-external-tasks/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/c7-external-tasks:${{ steps.extract_tag.outputs.tag }}
cd ../../
cd case-portal-client/staging
kustomize edit set image ${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal-local=${{ env.REGISTRY }}/${{ env.REPOSITORY_OWNER }}/case-portal-local:${{ steps.extract_tag.outputs.tag }}
cd ../../
- name: New tag release for continuous delivery
run: |
cd wks-gitops
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git commit -am "Release docker tag"
git push

0 comments on commit 4149cde

Please sign in to comment.