name: Build and Push MkDocs Docker Image on: push: branches: - main - master paths: - 'Dockerfile' - 'user/**' - 'admin/**' - '.gitea/workflows/**' workflow_dispatch: jobs: build-and-push: runs-on: cth-ubuntu-latest env: REGISTRY: ${{ vars.REGISTRY }} IMAGE: ${{ vars.IMAGE }} IMAGE_NAME: ${{ vars.REGISTRY }}/${{ vars.IMAGE }}:${{ github.sha }} KUBE_CA: ${{ vars.KUBE_CA }} KUBE_SERVER: ${{ vars.KUBE_SERVER }} REGISTRY_USERNAME: ${{ vars.REGISTRY_USERNAME }} NAMESPACE: ${{ vars.NAMESPACE }} DEPLOYMENT_NAME: ${{ vars.DEPLOYMENT_NAME }} CONTAINER: ${{ vars.CONTAINER }} steps: - name: Checkout code uses: https://github.com/actions/checkout@v4 - name: Set up Docker Buildx uses: https://github.com/docker/setup-buildx-action@v3 - name: Log in to Docker registry uses: https://github.com/docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ env.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push id: build-push uses: https://github.com/docker/build-push-action@v5 with: context: . file: Dockerfile push: true tags: '${{ env.IMAGE_NAME }}' - name: Install kubectl run: | curl -LO "https://dl.k8s.io/release/v1.31.0/bin/linux/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl - name: Set up kubeconfig env: KUBE_SERVER: ${{ env.KUBE_SERVER }} # e.g. https:// KUBE_CA: ${{ env.KUBE_CA }} # base64 encoded, or fetched via kubectl config view KUBE_TOKEN: ${{ secrets.KUBE_TOKEN }} # Token generated via 'kubectl create token' run: | mkdir -p ~/.kube cat < ~/.kube/config apiVersion: v1 kind: Config clusters: - name: default-cluster cluster: server: "$KUBE_SERVER" certificate-authority-data: "$KUBE_CA" contexts: - name: default-context context: cluster: default-cluster user: gitea-actions current-context: default-context users: - name: gitea-actions user: token: "$KUBE_TOKEN" EOF - name: Patch Deployment Image env: NAMESPACE: ${{ env.NAMESPACE }} DEPLOYMENT: ${{ env.DEPLOYMENT_NAME }} CONTAINER: ${{ env.CONTAINER }} run: | echo "deploy new tag: $TAG_IMAGE" env kubectl -n ${NAMESPACE} set image deployment/${DEPLOYMENT} ${CONTAINER}=${IMAGE_NAME}