From aef9c7531a6396e2e73a998a0b143cf38981ed0f Mon Sep 17 00:00:00 2001 From: Tamas Levai Date: Sun, 6 Oct 2024 14:17:27 +0200 Subject: [PATCH] Add CI/CD workflow --- .github/workflows/deploy-gke.yaml | 72 +++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 .github/workflows/deploy-gke.yaml diff --git a/.github/workflows/deploy-gke.yaml b/.github/workflows/deploy-gke.yaml new file mode 100644 index 0000000..2251acb --- /dev/null +++ b/.github/workflows/deploy-gke.yaml @@ -0,0 +1,72 @@ +name: Build and Deploy to GKE + +on: + workflow_dispatch: + push: + branches: + - '*' + +env: + GKE_CLUSTER: webrtc-observer + GKE_ZONE: us-east1-c + +jobs: + setup-build-publish-deploy: + name: Setup, Build, Publish, and Deploy + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_TOKEN }} + + - name: Build images + run: |- + cd webapp + docker build \ + --tag docker.io/levaitamas/webrtc-observer-webapp \ + --build-arg host="wss://webrtc-observer.org:9081" \ + . + cd ../media-server + docker build \ + --tag docker.io/levaitamas/webrtc-observer-mediaserver \ + . + + - name: Push images + run: |- + docker tag \ + docker.io/levaitamas/webrtc-observer-webapp \ + docker.io/levaitamas/webrtc-observer-webapp:$GITHUB_SHA + docker push --all-tags docker.io/levaitamas/webrtc-observer-webapp + docker tag \ + docker.io/levaitamas/webrtc-observer-mediaserver \ + docker.io/levaitamas/webrtc-observer-mediaserver:$GITHUB_SHA + docker push --all-tags docker.io/levaitamas/webrtc-observer-mediaserver + + - name: Authenticate on GKE + id: auth + uses: google-github-actions/auth@v2 + with: + credentials_json: '${{ secrets.GKE_SA_KEY }}' + + - name: Get GKE Credentials + id: get-credentials + uses: google-github-actions/get-gke-credentials@v2 + with: + cluster_name: ${{ env.GKE_CLUSTER }} + location: ${{ env.GKE_ZONE }} + + - name: Set up Helm + uses: azure/setup-helm@v4 + + - name: Deploy on GKE + run: | + helm install webrtc-observer-org charts/webrtc-observer-org \ + --set webapp.image=docker.io/levaitamas/webrtc-observer-webapp:$GITHUB_SHA \ + --set mediaserver.image=docker.io/levaitamas/webrtc-observer-mediaserver:$GITHUB_SHA \