diff --git a/.github/workflows/build-deploy-k8s-test-hetzner.yml b/.github/workflows/build-deploy-k8s-test-hetzner.yml new file mode 100644 index 0000000..2aa4846 --- /dev/null +++ b/.github/workflows/build-deploy-k8s-test-hetzner.yml @@ -0,0 +1,57 @@ +name: Build, Migrate & Deploy to Test on Hetzner + +on: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: 'Checkout GitHub Action' + uses: actions/checkout@v4.1.7 + + - name: 'Login into ACR' + uses: azure/docker-login@v2 + with: + login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }} + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: 'Build & Push image' + run: | + docker build -f Dockerfile . -t ${{ secrets.REGISTRY_LOGIN_SERVER }}/alkemio-virtual-contributor-ingest-space:${{ github.sha }} -t ${{ secrets.REGISTRY_LOGIN_SERVER }}/alkemio-virtual-contributor-ingest-space:latest + docker push ${{ secrets.REGISTRY_LOGIN_SERVER }}/alkemio-virtual-contributor-ingest-space:${{ github.sha }} + + deploy: + runs-on: ubuntu-latest + steps: + - name: 'Checkout GitHub Action' + uses: actions/checkout@v4.1.7 + + - name: Install Kubectl + uses: azure/setup-kubectl@v4.0.0 + with: + version: 'v1.27.6' # Ensure this matches the version used in your cluster + + - name: Set up Kubeconfig for Hetzner k3s + run: | + mkdir -p $HOME/.kube # Ensure the .kube directory exists + echo "${{ secrets.KUBECONFIG_SECRET_HETZNER_TEST }}" > $HOME/.kube/config + chmod 600 $HOME/.kube/config + + - name: Create Image Pull Secret + run: | + kubectl create secret docker-registry alkemio-virtual-contributor-ingest-space-secret \ + --docker-server=${{ secrets.REGISTRY_LOGIN_SERVER }} \ + --docker-username=${{ secrets.REGISTRY_USERNAME }} \ + --docker-password=${{ secrets.REGISTRY_PASSWORD }} \ + --dry-run=client -o yaml | kubectl apply -f - + + - uses: Azure/k8s-deploy@v5.0.0 + with: + manifests: | + manifests/25-genai-deployment-dev.yaml + images: | + ${{ secrets.REGISTRY_LOGIN_SERVER }}/alkemio-virtual-contributor-ingest-space:${{ github.sha }} + imagepullsecrets: | + alkemio-virtual-contributor-ingest-space-secret