name: Fission CI on: push: branches: - main - '!dependabot/**' paths: - "**.go" - "charts/**" - "test/**" - go.mod - go.sum pull_request: branches: - main paths: - "**.go" - "charts/**" - "test/**" - go.mod - go.sum env: HELM_VERSION: v3.16.4 KIND_VERSION: v0.26.0 KIND_CLUSTER_NAME: kind permissions: contents: read concurrency: group: fission-ci-${{ github.ref }} cancel-in-progress: true jobs: # Job to run change detection integration-test: runs-on: ${{ matrix.os }} if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} strategy: fail-fast: false matrix: kindversion: ["v1.28.15", "v1.30.8", "v1.32.0"] os: [ubuntu-24.04] steps: - name: Harden Runner uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: setup go uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: "go.mod" cache: true - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: fission/examples path: examples - name: Helm installation uses: Azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0 with: version: ${{ env.HELM_VERSION }} - name: Kind Cluster uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0 with: node_image: kindest/node:${{ matrix.kindversion }} version: ${{ env.KIND_VERSION }} cluster_name: ${{ env.KIND_CLUSTER_NAME }} config: kind.yaml - name: Configuring and testing the Installation run: | kubectl cluster-info --context kind-${{ env.KIND_CLUSTER_NAME }} kubectl get nodes sudo apt-get install -y apache2-utils kubectl config use-context kind-${{ env.KIND_CLUSTER_NAME }} kubectl config view - name: Helm chart lint run: | helm lint charts/fission-all/ - name: Install Skaffold run: | curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.14.0/skaffold-linux-amd64 sudo install skaffold /usr/local/bin/ skaffold version - name: Install GoReleaser uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1 with: install-only: true version: "~> v2" - name: Setup Prometheus Stack run: | helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update kubectl create ns monitoring helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring \ --version 45.28.0 --set grafana.enabled=false --set alertmanager.enabled=false - name: Build and Install Fission CLI run: | make debug-vars make build-fission-cli sudo make install-fission-cli sudo chmod +x /usr/local/bin/fission - name: Build and Install Fission timeout-minutes: 10 run: | kubectl create ns fission make create-crds SKAFFOLD_PROFILE=kind-ci make skaffold-deploy - name: Port-forward fission components run: | kubectl port-forward svc/router 8888:80 -nfission & - name: Get fission version timeout-minutes: 10 run: | fission version - name: Integration tests timeout-minutes: 90 run: ./test/kind_CI.sh - name: Collect Fission Dump timeout-minutes: 5 if: ${{ always() }} run: | command -v fission && fission support dump - name: Kind export logs timeout-minutes: 10 if: ${{ always() }} run: | kind export logs --name ${{ env.KIND_CLUSTER_NAME }} kind-logs - name: Backup prometheus data timeout-minutes: 10 if: ${{ always() }} run: | TRACE=1 ./hack/backup-prometheus.sh - name: Archive fission dump timeout-minutes: 10 if: ${{ failure() || cancelled() }} uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: fission-dump-${{ github.run_id }}-${{ matrix.kindversion }} path: fission-dump/*.zip retention-days: 5 - name: Archive prometheus dump timeout-minutes: 10 if: ${{ always() }} uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: prom-dump-${{ github.run_id }}-${{ matrix.kindversion }} path: /tmp/prometheus/* retention-days: 5 - name: Archive kind logs timeout-minutes: 10 if: ${{ always() }} uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }} path: kind-logs/* retention-days: 5 # Job to ensure backward compatibility if function and builder pods are created # inside functionNamespace and builderNamespace integration-test-old: runs-on: ${{ matrix.os }} if: ${{ contains(github.event.pull_request.labels.*.name, 'run-old-ci') }} strategy: fail-fast: false matrix: kindversion: ["v1.19.16"] os: [ubuntu-24.04] steps: - name: Harden Runner uses: step-security/harden-runner@4d991eb9b905ef189e4c376166672c3f2f230481 # v2.11.0 with: egress-policy: audit - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: setup go uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # v5.3.0 with: go-version-file: "go.mod" cache: true - name: Checkout sources uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: repository: fission/examples path: examples - name: Helm installation uses: Azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # v4.3.0 with: version: ${{ env.HELM_VERSION }} - name: Kind Cluster uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # v1.12.0 with: node_image: kindest/node:${{ matrix.kindversion }} version: ${{ env.KIND_VERSION }} cluster_name: ${{ env.KIND_CLUSTER_NAME }} config: kind.yaml - name: Configuring and testing the Installation run: | kubectl cluster-info --context kind-${{ env.KIND_CLUSTER_NAME }} kubectl get nodes sudo apt-get install -y apache2-utils kubectl config use-context kind-${{ env.KIND_CLUSTER_NAME }} kubectl config view - name: Helm chart lint run: | helm lint charts/fission-all/ - name: Install Skaffold run: | curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.14.0/skaffold-linux-amd64 sudo install skaffold /usr/local/bin/ skaffold version - name: Install GoReleaser uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1 with: install-only: true version: "~> v2" - name: Setup Prometheus Stack run: | helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update kubectl create ns monitoring helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring \ --version 45.28.0 --set grafana.enabled=false --set alertmanager.enabled=false - name: Build and Install Fission CLI run: | make debug-vars make build-fission-cli sudo make install-fission-cli sudo chmod +x /usr/local/bin/fission - name: Build and Install Fission timeout-minutes: 10 run: | kubectl create ns fission make create-crds SKAFFOLD_PROFILE=kind-ci-old make skaffold-deploy - name: Port-forward fission components run: | kubectl port-forward svc/router 8888:80 -nfission & - name: Get fission version timeout-minutes: 10 run: | fission version - name: Integration tests timeout-minutes: 90 run: | export FUNCTION_NAMESPACE=fission-function export BUILDER_NAMESPACE=fission-builder ./test/kind_CI.sh - name: Collect Fission Dump timeout-minutes: 5 if: ${{ always() }} run: | command -v fission && fission support dump - name: Kind export logs timeout-minutes: 10 if: ${{ always() }} run: | kind export logs --name kind kind-logs - name: Backup prometheus data timeout-minutes: 10 if: ${{ always() }} run: | TRACE=1 ./hack/backup-prometheus.sh - name: Archive fission dump timeout-minutes: 10 if: ${{ failure() || cancelled() }} uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: fission-dump-${{ github.run_id }}-${{ matrix.kindversion }} path: fission-dump/*.zip retention-days: 5 - name: Archive prometheus dump timeout-minutes: 10 if: ${{ always() }} uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: prom-dump-${{ github.run_id }}-${{ matrix.kindversion }} path: /tmp/prometheus/* retention-days: 5 - name: Archive kind logs timeout-minutes: 10 if: ${{ always() }} uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }} path: kind-logs/* retention-days: 5