name: Haven Notify Build and Deploy on: push: branches: - main paths: - 'haven-notify/**' - '.gitea/workflows/**' workflow_dispatch: {} env: REGISTRY_HOST: git.ivanch.me REGISTRY_USERNAME: ivanch IMAGE_NOTIFY: ${{ env.REGISTRY_HOST }}/ivanch/haven-notify KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} jobs: build_haven_notify: name: Build Haven Notify Image runs-on: ubuntu-22.04 steps: - name: Check out repository uses: actions/checkout@v2 - name: Log in to Container Registry run: | echo "${{ secrets.REGISTRY_PASSWORD }}" \ | docker login "${{ env.REGISTRY_HOST }}" \ -u "${{ env.REGISTRY_USERNAME }}" \ --password-stdin - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and Push Multi-Arch Image uses: docker/build-push-action@v6 with: push: true context: haven-notify platforms: linux/amd64,linux/arm64 tags: | ${{ env.IMAGE_NOTIFY }}:latest deploy_haven_notify: name: Deploy Haven Notify (internal) runs-on: ubuntu-amd64 needs: build_haven_notify steps: - name: Check KUBE_CONFIG validity run: | if [ -z "${KUBE_CONFIG}" ] || [ "${KUBE_CONFIG}" = "" ] || [ "${KUBE_CONFIG// }" = "" ]; then echo "KUBE_CONFIG is not set or is empty." exit 1 fi - name: Check out repository uses: actions/checkout@v2 - name: Download and install dependencies run: | apt-get update -y apt-get install -y curl curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" install -m 0755 kubectl /usr/local/bin/kubectl kubectl version --client - name: Set up kubeconfig run: | cd haven-notify/deploy echo "$KUBE_CONFIG" > kubeconfig.yaml env: KUBE_CONFIG: ${{ env.KUBE_CONFIG }} - name: Check connection to cluster run: | cd haven-notify/deploy kubectl --kubeconfig=kubeconfig.yaml cluster-info - name: Apply haven-notify deployment run: | cd haven-notify/deploy kubectl --kubeconfig=kubeconfig.yaml apply -f haven-notify.yaml - name: Rollout restart haven-notify run: | cd haven-notify/deploy kubectl --kubeconfig=kubeconfig.yaml rollout restart deployment/haven-notify