name: Build and Deploy (internal) on: push: branches: - main workflow_dispatch: {} env: REGISTRY_HOST: git.ivanch.me REGISTRY_USERNAME: ivanch IMAGE: ${{ env.REGISTRY_HOST }}/ivanch/transmission-manager KUBE_CONFIG: ${{ secrets.KUBE_CONFIG }} jobs: build_transmission_manager: name: Build Transmission Manager Image runs-on: ubuntu-arm64 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 SSH key for haven run: | mkdir -p ~/.ssh echo "${{ secrets.SSH_KEY_DOCKERBUILD }}" > ~/.ssh/id_ed25519 chmod 600 ~/.ssh/id_ed25519 ssh-keyscan docker-build.haven >> ~/.ssh/known_hosts - name: Set up haven Docker Buildx builder run: | docker buildx create \ --name docker-build-haven \ --driver docker \ --use \ docker-build.haven docker buildx inspect docker-build-haven --bootstrap - name: Build and Push Multi-Arch Image uses: docker/build-push-action@v6 with: push: true context: . builder: docker-build-haven platforms: linux/amd64,linux/arm64 tags: | ${{ env.IMAGE }}:latest deploy_transmission_manager: name: Deploy Transmission Manager (internal) runs-on: ubuntu-arm64 needs: build_transmission_manager 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 deploy echo "$KUBE_CONFIG" > kubeconfig.yaml env: KUBE_CONFIG: ${{ env.KUBE_CONFIG }} - name: Check connection to cluster run: | cd deploy kubectl --kubeconfig=kubeconfig.yaml cluster-info - name: Rollout restart run: | cd deploy kubectl --kubeconfig=kubeconfig.yaml rollout restart deployment transmission-manager -n media