From 6efdfaf957cbca8754c3c52f9a9f595a32a2695a Mon Sep 17 00:00:00 2001 From: jonas Date: Thu, 13 Mar 2025 11:18:53 +0000 Subject: [PATCH] Add .gitea/workflows/dockerK3s.yaml --- .gitea/workflows/dockerK3s.yaml | 133 ++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 .gitea/workflows/dockerK3s.yaml diff --git a/.gitea/workflows/dockerK3s.yaml b/.gitea/workflows/dockerK3s.yaml new file mode 100644 index 0000000..58b2f26 --- /dev/null +++ b/.gitea/workflows/dockerK3s.yaml @@ -0,0 +1,133 @@ +name: Build, Publish Docker Image, and Deploy to Kubernetes + +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + build_and_push_and_deploy: + runs-on: ubuntu-latest + steps: + # Step 1: Checkout repository + - name: Checkout repository + uses: actions/checkout@v4 + + # Step 2: Check if Dockerfile exists + - name: Check if Dockerfile exists + id: check_dockerfile + run: | + if [ -f "Dockerfile" ]; then + echo "exists=true" >> $GITHUB_ENV + else + echo "exists=false" >> $GITHUB_ENV + fi + + # Step 3: Set repository name as image name + - name: Set repository name as image name + if: env.exists == 'true' + run: echo "IMAGE_NAME=$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV + + # Step 4: Log in to Docker registry + - name: Log in to Docker registry + if: env.exists == 'true' + run: | + echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login git.ionas999.at -u ${{ secrets.REGISTRY_USERNAME }} --password-stdin + + # Step 5: Build Docker image + - name: Build Docker image + if: env.exists == 'true' + run: | + docker build -t git.ionas999.at/${{ env.IMAGE_NAME }}:latest . + + # Step 6: Push Docker image + - name: Push Docker image + if: env.exists == 'true' + run: | + docker push git.ionas999.at/${{ env.IMAGE_NAME }}:latest + + # Step 7: Install kubectl + - name: Install kubectl + run: | + KUBECTL_VERSION=$(curl -s https://dl.k8s.io/release/stable.txt) + curl -LO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl" + chmod +x kubectl + sudo mv kubectl /usr/local/bin/ + kubectl version --client + + # Step 8: Configure kubectl using K3s config + - name: Configure kubectl + run: | + mkdir -p ~/.kube + echo "${{ secrets.K3S_CONFIG }}" > ~/.kube/config + + # Step 9: Generate Kubernetes Deployment and Ingress configuration + - name: Create Kubernetes Deployment and Ingress + run: | + cat > k3s_deployment.yaml <