name: Deploy Golang App to Kubernetes Cluster on: push: branches: - dev jobs: build: name: Build and push image runs-on: ubuntu-latest container: image: ghcr.io/catthehacker/ubuntu:act-latest steps: - name: Check out repository code uses: actions/checkout@v3 - name: Get short SHA id: get-short-sha run: | id=$(echo ${{ github.sha }} | cut -c 1-7) echo "id=$id" >> $GITHUB_ENV - name: Login to registry uses: docker/login-action@v3 with: registry: git.winteraccess.id username: ${{ vars.REGISTRY_USER }} password: ${{ secrets.REGISTRY_TOKEN }} - name: Build and push to registry uses: docker/build-push-action@v5 with: context: . file: deploy/docker/Dockerfile push: true tags: | git.winteraccess.id/winter-access/backend_nam:dev-${{ env.id }} git.winteraccess.id/winter-access/backend_nam:dev git.winteraccess.id/winter-access/backend_nam:latest deploy: name: Deploy to Kubernetes Cluster runs-on: ubuntu-latest needs: - build container: image: ghcr.io/catthehacker/ubuntu:act-latest steps: - name: Check out repository code uses: actions/checkout@v3 - name: Get short SHA id: get-short-sha run: | id=$(echo ${{ github.sha }} | cut -c 1-7) echo "id=$id" >> $GITHUB_ENV - name: Create Kubeconfig run: | mkdir -p $HOME/.kube echo "${{ secrets.KUBECONFIG }}" > $HOME/.kube/config - name: Setup Kubectl uses: azure/setup-kubectl@v4 - name: Set the Kubernetes context uses: azure/k8s-set-context@v2 with: method: service-account k8s-url: ${{ vars.KUBE_URL }} k8s-secret: ${{ secrets.KUBE_SECRET }} - name: Deploy to Kubernetes cluster uses: azure/k8s-deploy@v5 with: action: deploy namespace: nam-backend-dev manifests: | deploy/kubernetes/dev.yaml images: | git.winteraccess.id/winter-access/backend_nam:dev-${{ env.id }}