name: Build and Test on: push: branches: - disable pull_request: branches: - disable jobs: build: runs-on: k8s-runner-00 env: REGISTRY: registry.staging IMAGE_NAME: ${{ gitea.repository }} IMAGE_TAG: ${{ gitea.sha }} steps: - name: "Checkout repository" uses: actions/checkout@v4 - id: generator name: "Generate Dockerfile & Manifest K8S" uses: ardipc/devops-generator@v1.0.2 with: name: "hello-app" language: "node" - name: "Print Output Docker" id: output run: | echo "${{ steps.generator.outputs.docker }}" > Dockerfile - name: "Create buildkitd.toml" run: | cat < buildkitd.toml [registry."registry.staging"] http = true insecure = true EOF - name: "Set up Buildx builder" run: | BUILDER_NAME="builder-$(date +%s)" echo "BUILDER_NAME=$BUILDER_NAME" >> $GITEA_ENV docker buildx create \ --use \ --name $BUILDER_NAME \ --driver docker-container \ --config buildkitd.toml - name: "Build & Push Docker" run: | docker buildx build \ --builder $BUILDER_NAME \ -t $REGISTRY/$IMAGE_NAME:$IMAGE_TAG \ --push . - name: "Cleanup builder" if: always() run: docker buildx rm $BUILDER_NAME || true - name: Set image name id: export run: | echo "image=registry.bigdata.pens.ac.id/$IMAGE_NAME:$IMAGE_TAG" >> $GITEA_OUTPUT outputs: image: ${{ steps.export.outputs.image }} deploy: runs-on: k8s-runner-00 needs: build env: IMAGE_NAME: ${{ gitea.repository }} DIGEST_IMAGE: ${{ needs.build.outputs.image }} steps: - name: "Checkout repository" uses: actions/checkout@v4 - name: "Generate Dockerfile" run: curl -o k8s.yml https://n8n.mceasy.cloud/webhook/generator/manifest?type=k8s - name: "Replace APP_NAME" run: | NAME=$(echo "$IMAGE_NAME" | sed 's/\//-/g') sed -i "s|APP_NAME|$NAME|g" k8s.yml sed -i "s|IMAGE_NAME|$DIGEST_IMAGE|g" k8s.yml cat k8s.yml - name: "Set kubeconfig" run: | mkdir -p /root/.kube echo "${{ vars.KUBECONFIG_PA_DEVOPS }}" > /root/.kube/config - name: "Deploy to Cluster" run: | cat /root/.kube/config kubectl apply -f k8s.yml --validate=false