name: CI/CD Pipeline on: push: branches: - main tags: - 'v*' pull_request: branches: - main env: REGISTRY: gitea.anvil.it.com IMAGE_NAME: ${{ gitea.repository }} jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Build image run: | docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} . docker tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} \ ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - name: Tag version if: startsWith(gitea.ref, 'refs/tags/v') run: | VERSION=${GITEA_REF#refs/tags/} docker tag ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} \ ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${VERSION} - name: Login to Registry if: gitea.event_name != 'pull_request' run: | docker login ${{ env.REGISTRY }} \ -u ${{ gitea.actor }} \ -p ${{ secrets.REGISTRY_TOKEN }} - name: Push image if: gitea.event_name != 'pull_request' run: | docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - name: Push version tag if: startsWith(gitea.ref, 'refs/tags/v') run: | VERSION=${GITEA_REF#refs/tags/} docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${VERSION} deploy: runs-on: ubuntu-latest needs: build if: gitea.event_name != 'pull_request' steps: - name: Checkout uses: actions/checkout@v4 - name: Setup kubeconfig run: | mkdir -p ~/.kube echo "${{ secrets.KUBE_CONFIG }}" | base64 -d > ~/.kube/config chmod 600 ~/.kube/config - name: Apply manifests run: | kubectl apply -f k8s/configmap.yaml -f k8s/service.yaml -f k8s/deployment.yaml - name: Update image run: | kubectl set image deployment/cfb-manager \ cfb-manager=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ gitea.sha }} - name: Wait for rollout run: | kubectl rollout status deployment/cfb-manager --timeout=120s