on: push: branches: [ main ] jobs: build-and-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: benjlevesque/short-sha@v3.0 id: short-sha with: length: 10 - name: Set up kpack-cli env: KPACK_CLI_VERSION: "0.13.0" working-directory: /tmp run: | mkdir kp-binaries curl -L "https://github.com/buildpacks-community/kpack-cli/releases/download/v${KPACK_CLI_VERSION}/kp-linux-amd64-${KPACK_CLI_VERSION}" -o kp-binaries/kp-linux-amd64-${KPACK_CLI_VERSION} curl -LO "https://github.com/buildpacks-community/kpack-cli/releases/download/v${KPACK_CLI_VERSION}/kp-linux-amd64-${KPACK_CLI_VERSION}.sha256" sha256sum -c kp-linux-amd64-${KPACK_CLI_VERSION}.sha256 || exit 1 sudo mv kp-binaries/kp-linux-amd64-${KPACK_CLI_VERSION} /usr/local/bin/kp sudo chmod +x /usr/local/bin/kp kp version - name: Set up kubectl uses: azure/setup-kubectl@v4 - name: Configure (kubectl) env: KUBE_CA_DATA: ${{ secrets.KUBE_CA_DATA }} KUBE_USER_TOKEN: ${{ secrets.KUBE_USER_TOKEN }} run: | KUBECONFIG=$(mktemp) tee "${KUBECONFIG}" <> $GITHUB_ENV - name: Check kubernetes connection env: KUBE_CA_DATA: ${{ secrets.KUBE_CA_DATA }} KUBE_USER_TOKEN: ${{ secrets.KUBE_USER_TOKEN }} run: | echo "Kubernetes connection config (KUBECONFIG): ${KUBECONFIG}" cat ${KUBECONFIG} CACERT=$(mktemp) echo "${KUBE_CA_DATA}" | base64 -d > ${CACERT} curl -k -I https://kubernetes.default.svc/ || exit 0 curl --cacert ${CACERT} --header "Authorization: Bearer ${KUBE_USER_TOKEN}" -X GET https://kubernetes.default.svc/api kubectl get pod -A - name: Update kpack image env: SHA: ${{ github.sha }} SHORT_SHA: ${{ steps.short-sha.outputs.sha }} run: | kp image patch tutorial-image --replace-additional-tag "ghcr.io/hvg-dev/php-test:sha-${SHORT_SHA}" --git-revision "${SHA}" -n test-builder - name: Wait for build to complete run: | BUILD=$(kubectl -n test-builder get image tutorial-image -o jsonpath='{.status.buildCounter}') BUILD_REF=$(kubectl -n test-builder get image tutorial-image -o jsonpath='{.status.latestBuildRef}') kp build logs tutorial-image -n test-builder --build ${BUILD} kp build status tutorial-image -n test-builder -b $BUILD if [ "$(kubectl -n test-builder get build $BUILD_REF -o jsonpath='{.status.conditions[0].status}')" != "True" ]; then exit 1; fi # - name: Update Kubernetes deployment # run: | # kubectl set image deployment/my-app my-app=/:${{ github.sha }}