name: Fission CI upgrade 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-upgrade-test-${{ github.ref }} cancel-in-progress: true jobs: upgrade-test: runs-on: ${{ matrix.os }} if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} strategy: fail-fast: false matrix: kindversion: ["v1.28.15"] os: [ubuntu-24.04] steps: - name: Harden Runner uses: step-security/harden-runner@cb605e52c26070c328afc4562f0b4ada7618a84e # v2.10.4 with: egress-policy: audit - name: Checkout action 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: Setup Helm uses: Azure/setup-helm@fe7b79cd5ee1e45176fcad797de68ecaf3ca4814 # v4.2.0 with: version: ${{ env.HELM_VERSION }} - name: Setup 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 }} - name: Install GoReleaser uses: goreleaser/goreleaser-action@90a3faa9d0182683851fbfa97ca1a2cb983bfca3 # v6.2.1 with: install-only: true version: "~> v2" - name: Setup kubectl & fetch node information run: | kubectl cluster-info --context kind-${{ env.KIND_CLUSTER_NAME }} kubectl get nodes kubectl get storageclasses.storage.k8s.io kubectl config use-context kind-${{ env.KIND_CLUSTER_NAME }} kubectl config set-context --current --namespace=default kubectl config view - name: Dump system info run: | source ./test/upgrade_test/fission_objects.sh dump_system_info - name: Install and configure previous stable fission run: | source ./test/upgrade_test/fission_objects.sh install_stable_release \ && create_fission_objects \ && test_fission_objects - name: Upgrade fission to latest run: | source ./test/upgrade_test/fission_objects.sh build_docker_images \ && kind_image_load \ && install_current_release \ && install_fission_cli - name: Test previously created fission objects with new release timeout-minutes: 10 run: | source ./test/upgrade_test/fission_objects.sh test_fission_objects - name: Collect Fission Dump if: ${{ always() }} run: | command -v fission && fission support dump - name: Kind export logs if: ${{ always() }} run: | kind export logs --name ${{ env.KIND_CLUSTER_NAME }} kind-logs - name: Archive fission dump if: ${{ failure() || cancelled() }} uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: fission-dump-${{ github.run_id }}-${{ matrix.kindversion }} path: fission-dump/*.zip retention-days: 5 - name: Archive kind logs if: ${{ always() }} uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }} path: kind-logs/* retention-days: 5