From 294ff5bb19e8deab8a144dcb4306df73284d2a63 Mon Sep 17 00:00:00 2001 From: Sanket Sudake Date: Tue, 6 Sep 2022 17:30:21 +0530 Subject: [PATCH] Optimize Github action workflows for Go version identification (#2533) Signed-off-by: Sanket Sudake Signed-off-by: Sanket Sudake --- .github/workflows/codeql.yaml | 9 +- .github/workflows/lint-dashboards.yaml | 6 +- .github/workflows/lint.yaml | 58 +++++------ .github/workflows/push_pr.yaml | 24 +++-- .github/workflows/release.yaml | 79 ++++++++------- .github/workflows/upgrade_test.yaml | 132 ++++++++++++------------- cmd/builder/main.go | 2 +- 7 files changed, 147 insertions(+), 163 deletions(-) diff --git a/.github/workflows/codeql.yaml b/.github/workflows/codeql.yaml index cb208af4..bd97d0d5 100644 --- a/.github/workflows/codeql.yaml +++ b/.github/workflows/codeql.yaml @@ -27,12 +27,11 @@ jobs: - name: Check out code uses: actions/checkout@v3 - - uses: actions/cache@v3 + - name: setup go + uses: actions/setup-go@v3 with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- + go-version-file: "go.mod" + cache: true - name: Initialize CodeQL uses: github/codeql-action/init@v2 diff --git a/.github/workflows/lint-dashboards.yaml b/.github/workflows/lint-dashboards.yaml index d9b768cc..ea7e209e 100644 --- a/.github/workflows/lint-dashboards.yaml +++ b/.github/workflows/lint-dashboards.yaml @@ -18,14 +18,14 @@ jobs: runs-on: ubuntu-latest steps: + - name: Check out code + uses: actions/checkout@v3 + - name: Set up Go uses: actions/setup-go@v3 with: go-version: 1.18.5 - - name: Check out code - uses: actions/checkout@v3 - - name: Install dashboard linter run: | go get github.com/grafana/dashboard-linter diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index cdc65314..9c053272 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -5,67 +5,57 @@ on: branches: - main paths: - - '**.go' + - "**.go" - go.mod - go.sum pull_request: branches: - main paths: - - '**.go' + - "**.go" - go.mod - go.sum workflow_dispatch: +env: + GOLANGCI_LINT_VERSION: v1.49.0 + GOLANGCI_LINT_TIMEOUT: 5m + jobs: lint: runs-on: ubuntu-latest steps: - - name: Set up Go - uses: actions/setup-go@v3 - with: - go-version: 1.19 - - name: Check out code uses: actions/checkout@v3 - - uses: actions/cache@v3 + - name: Set up Go + uses: actions/setup-go@v3 with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- + go-version-file: "go.mod" + cache: true - name: Verify dependencies run: | go mod verify go mod download - LINT_VERSION=1.48.0 - curl -fsSL https://github.com/golangci/golangci-lint/releases/download/v${LINT_VERSION}/golangci-lint-${LINT_VERSION}-linux-amd64.tar.gz | \ - tar xz --strip-components 1 --wildcards \*/golangci-lint - mkdir -p bin && mv golangci-lint bin/ + - name: Run golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + version: ${{ env.GOLANGCI_LINT_VERSION }} + args: --timeout=${{ env.GOLANGCI_LINT_TIMEOUT }} - - name: Run checks + - name: Detect git changes + if: always() run: | - STATUS=0 - assert-nothing-changed() { - local diff - "$@" >/dev/null || return 1 - if ! diff="$(git diff -U1 --color --exit-code)"; then - printf '\e[31mError: running `\e[1m%s\e[22m` results in modifications that you must check into version control:\e[0m\n%s\n\n' "$*" "$diff" >&2 - git checkout -- . - STATUS=1 - fi - } - - assert-nothing-changed go fmt ./... - assert-nothing-changed go mod tidy - - bin/golangci-lint run --out-format=github-actions --timeout=5m || STATUS=$? - - exit $STATUS + if [[ $(git diff --stat) != '' ]]; then + echo -e '❌ \033[0;31m. Fix lint changes.\033[0m' + git diff --color + exit 1 + else + echo '✔ No issues detected. Have a nice day :-)' + fi - name: Run unit tests run: ./hack/runtests.sh diff --git a/.github/workflows/push_pr.yaml b/.github/workflows/push_pr.yaml index ac1206df..1139161a 100644 --- a/.github/workflows/push_pr.yaml +++ b/.github/workflows/push_pr.yaml @@ -21,6 +21,10 @@ on: - go.sum workflow_dispatch: +env: + HELM_VERSION: v3.9.0 + KIND_VERSION: v0.14.0 + jobs: # Job to run change detection integration-test: @@ -31,13 +35,14 @@ jobs: kindversion: ["v1.19.16", "v1.20.15", "v1.21.12"] os: [ubuntu-latest] steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: setup go uses: actions/setup-go@v3 with: - go-version: 1.19 - - - name: Checkout sources - uses: actions/checkout@v3 + go-version-file: "go.mod" + cache: true - name: Checkout sources uses: actions/checkout@v3 @@ -45,23 +50,16 @@ jobs: repository: fission/examples path: examples - - uses: actions/cache@v3 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Helm installation uses: Azure/setup-helm@v3 with: - version: v3.3.4 + version: ${{ env.HELM_VERSION }} - name: Kind Clutser uses: engineerd/setup-kind@v0.5.0 with: image: kindest/node:${{ matrix.kindversion }} - version: v0.14.0 + version: ${{ env.KIND_VERSION }} config: kind.yaml - name: Configuring and testing the Installation diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index ef39d3b0..7b49fc28 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -6,7 +6,6 @@ on: - v2.** env: - GO_VERSION: 1.19 KIND_VERSION: v0.14.0 KIND_NODE_IMAGE_TAG: v1.19.16 @@ -14,50 +13,50 @@ jobs: create-draft-release: runs-on: ubuntu-latest steps: - - name: Setup go - uses: actions/setup-go@v3 - with: - go-version: ${{ env.GO_VERSION }} + - name: Check out code + uses: actions/checkout@v3 + with: + fetch-depth: 0 - - name: Check out code - uses: actions/checkout@v3 - with: - fetch-depth: 0 + - name: Setup go + uses: actions/setup-go@v3 + with: + go-version-file: "go.mod" + cache: true - - name: Get the version - id: get_version - run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} + - name: Get the version + id: get_version + run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} - - name: Install GoReleaser - uses: goreleaser/goreleaser-action@v3 - with: - install-only: true + - name: Install GoReleaser + uses: goreleaser/goreleaser-action@v3 + with: + install-only: true + - name: Kind Clutser + uses: engineerd/setup-kind@v0.5.0 + with: + image: kindest/node:${{ env.KIND_NODE_IMAGE_TAG }} + version: ${{ env.KIND_VERSION }} + config: kind.yaml - - name: Kind Clutser - uses: engineerd/setup-kind@v0.5.0 - with: - image: kindest/node:${{ env.KIND_NODE_IMAGE_TAG }} - version: ${{ env.KIND_VERSION }} - config: kind.yaml + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + - name: Docker Login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Docker Login - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v3 + with: + version: latest + args: release + env: + GORELEASER_CURRENT_TAG: ${{ steps.get_version.outputs.VERSION }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DOCKER_CLI_EXPERIMENTAL: "enabled" - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v3 - with: - version: latest - args: release - env: - GORELEASER_CURRENT_TAG: ${{ steps.get_version.outputs.VERSION }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - DOCKER_CLI_EXPERIMENTAL: "enabled" - - #ToDo - Verify and upload releases \ No newline at end of file + #ToDo - Verify and upload releases diff --git a/.github/workflows/upgrade_test.yaml b/.github/workflows/upgrade_test.yaml index 3ba95f25..f8d77cb5 100644 --- a/.github/workflows/upgrade_test.yaml +++ b/.github/workflows/upgrade_test.yaml @@ -5,98 +5,96 @@ on: branches: - main paths: - - '**.go' - - 'charts/**' - - 'test/**' + - "**.go" + - "charts/**" + - "test/**" - go.mod - go.sum pull_request: branches: - main paths: - - '**.go' - - 'charts/**' - - 'test/**' + - "**.go" + - "charts/**" + - "test/**" - go.mod - go.sum workflow_dispatch: +env: + HELM_VERSION: v3.9.0 + KIND_VERSION: v0.14.0 + jobs: upgrade-test: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - kindimage : [ 'kindest/node:v1.19.16' ] - os: [ ubuntu-latest ] + kindimage: ["kindest/node:v1.19.16"] + os: [ubuntu-latest] steps: - - name: Setup go - uses: actions/setup-go@v3 - with: - go-version: 1.19 + - name: Checkout action sources + uses: actions/checkout@v3 - - name: Checkout action sources - uses: actions/checkout@v3 + - name: Setup go + uses: actions/setup-go@v3 + with: + go-version-file: "go.mod" + cache: true - - uses: actions/cache@v3 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- + - name: Setup Helm + uses: Azure/setup-helm@v3 + with: + version: ${{ env.HELM_VERSION }} - - name: Setup Helm - uses: Azure/setup-helm@v3 - with: - version: v3.3.4 + - name: Setup Kind Clutser + uses: engineerd/setup-kind@v0.5.0 + with: + image: ${{ matrix.kindimage }} + version: ${{ env.KIND_VERSION }} - - name: Setup Kind Clutser - uses: engineerd/setup-kind@v0.5.0 - with: - image: ${{ matrix.kindimage }} - version: v0.14.0 + - name: Install GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + install-only: true - - name: Install GoReleaser - uses: goreleaser/goreleaser-action@v2 - with: - install-only: true + - name: Setup kubectl & fetch node information + run: | + kubectl cluster-info --context kind-kind + kubectl get nodes + kubectl get storageclasses.storage.k8s.io - - name: Setup kubectl & fetch node information - run: | - kubectl cluster-info --context kind-kind - kubectl get nodes - kubectl get storageclasses.storage.k8s.io + - name: Dump system info + run: | + source ./test/upgrade_test/fission_objects.sh dump_system_info - - 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: 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: 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 + run: | + source ./test/upgrade_test/fission_objects.sh test_fission_objects - - name: Test previously created fission objects with new release - 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: Collect Fission Dump - if: ${{ always() }} - run: | - command -v fission && fission support dump - - - name: Archive fission dump - if: ${{ failure() }} - uses: actions/upload-artifact@v2 - with: - name: fission-dump - path: fission-dump/*.zip - retention-days: 5 + - name: Archive fission dump + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: fission-dump + path: fission-dump/*.zip + retention-days: 5 diff --git a/cmd/builder/main.go b/cmd/builder/main.go index fe49fd7e..cc927323 100644 --- a/cmd/builder/main.go +++ b/cmd/builder/main.go @@ -38,7 +38,7 @@ func main() { if os.IsNotExist(err) { err = os.MkdirAll(shareVolume, os.ModeDir|0700) if err != nil { - logger.Fatal("error creating directory: %v", zap.Error(err), zap.String("directory", shareVolume)) + logger.Fatal("error creating directory: %s", zap.Error(err), zap.String("directory", shareVolume)) } } }