Optimize Github action workflows for Go version identification (#2533)

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
This commit is contained in:
Sanket Sudake
2022-09-06 17:30:21 +05:30
committed by GitHub
parent 7dad7c8399
commit 294ff5bb19
7 changed files with 147 additions and 163 deletions
+4 -5
View File
@@ -27,12 +27,11 @@ jobs:
- name: Check out code - name: Check out code
uses: actions/checkout@v3 uses: actions/checkout@v3
- uses: actions/cache@v3 - name: setup go
uses: actions/setup-go@v3
with: with:
path: ~/go/pkg/mod go-version-file: "go.mod"
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} cache: true
restore-keys: |
${{ runner.os }}-go-
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v2 uses: github/codeql-action/init@v2
+3 -3
View File
@@ -18,14 +18,14 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out code
uses: actions/checkout@v3
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v3 uses: actions/setup-go@v3
with: with:
go-version: 1.18.5 go-version: 1.18.5
- name: Check out code
uses: actions/checkout@v3
- name: Install dashboard linter - name: Install dashboard linter
run: | run: |
go get github.com/grafana/dashboard-linter go get github.com/grafana/dashboard-linter
+24 -34
View File
@@ -5,67 +5,57 @@ on:
branches: branches:
- main - main
paths: paths:
- '**.go' - "**.go"
- go.mod - go.mod
- go.sum - go.sum
pull_request: pull_request:
branches: branches:
- main - main
paths: paths:
- '**.go' - "**.go"
- go.mod - go.mod
- go.sum - go.sum
workflow_dispatch: workflow_dispatch:
env:
GOLANGCI_LINT_VERSION: v1.49.0
GOLANGCI_LINT_TIMEOUT: 5m
jobs: jobs:
lint: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: 1.19
- name: Check out code - name: Check out code
uses: actions/checkout@v3 uses: actions/checkout@v3
- uses: actions/cache@v3 - name: Set up Go
uses: actions/setup-go@v3
with: with:
path: ~/go/pkg/mod go-version-file: "go.mod"
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} cache: true
restore-keys: |
${{ runner.os }}-go-
- name: Verify dependencies - name: Verify dependencies
run: | run: |
go mod verify go mod verify
go mod download go mod download
LINT_VERSION=1.48.0 - name: Run golangci-lint
curl -fsSL https://github.com/golangci/golangci-lint/releases/download/v${LINT_VERSION}/golangci-lint-${LINT_VERSION}-linux-amd64.tar.gz | \ uses: golangci/golangci-lint-action@v3
tar xz --strip-components 1 --wildcards \*/golangci-lint with:
mkdir -p bin && mv golangci-lint bin/ version: ${{ env.GOLANGCI_LINT_VERSION }}
args: --timeout=${{ env.GOLANGCI_LINT_TIMEOUT }}
- name: Run checks - name: Detect git changes
if: always()
run: | run: |
STATUS=0 if [[ $(git diff --stat) != '' ]]; then
assert-nothing-changed() { echo -e '❌ \033[0;31m. Fix lint changes.\033[0m'
local diff git diff --color
"$@" >/dev/null || return 1 exit 1
if ! diff="$(git diff -U1 --color --exit-code)"; then else
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 echo '✔ No issues detected. Have a nice day :-)'
git checkout -- . fi
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
- name: Run unit tests - name: Run unit tests
run: ./hack/runtests.sh run: ./hack/runtests.sh
+11 -13
View File
@@ -21,6 +21,10 @@ on:
- go.sum - go.sum
workflow_dispatch: workflow_dispatch:
env:
HELM_VERSION: v3.9.0
KIND_VERSION: v0.14.0
jobs: jobs:
# Job to run change detection # Job to run change detection
integration-test: integration-test:
@@ -31,13 +35,14 @@ jobs:
kindversion: ["v1.19.16", "v1.20.15", "v1.21.12"] kindversion: ["v1.19.16", "v1.20.15", "v1.21.12"]
os: [ubuntu-latest] os: [ubuntu-latest]
steps: steps:
- name: Checkout sources
uses: actions/checkout@v3
- name: setup go - name: setup go
uses: actions/setup-go@v3 uses: actions/setup-go@v3
with: with:
go-version: 1.19 go-version-file: "go.mod"
cache: true
- name: Checkout sources
uses: actions/checkout@v3
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v3 uses: actions/checkout@v3
@@ -45,23 +50,16 @@ jobs:
repository: fission/examples repository: fission/examples
path: 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 - name: Helm installation
uses: Azure/setup-helm@v3 uses: Azure/setup-helm@v3
with: with:
version: v3.3.4 version: ${{ env.HELM_VERSION }}
- name: Kind Clutser - name: Kind Clutser
uses: engineerd/setup-kind@v0.5.0 uses: engineerd/setup-kind@v0.5.0
with: with:
image: kindest/node:${{ matrix.kindversion }} image: kindest/node:${{ matrix.kindversion }}
version: v0.14.0 version: ${{ env.KIND_VERSION }}
config: kind.yaml config: kind.yaml
- name: Configuring and testing the Installation - name: Configuring and testing the Installation
+38 -39
View File
@@ -6,7 +6,6 @@ on:
- v2.** - v2.**
env: env:
GO_VERSION: 1.19
KIND_VERSION: v0.14.0 KIND_VERSION: v0.14.0
KIND_NODE_IMAGE_TAG: v1.19.16 KIND_NODE_IMAGE_TAG: v1.19.16
@@ -14,50 +13,50 @@ jobs:
create-draft-release: create-draft-release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Setup go - name: Check out code
uses: actions/setup-go@v3 uses: actions/checkout@v3
with: with:
go-version: ${{ env.GO_VERSION }} fetch-depth: 0
- name: Check out code - name: Setup go
uses: actions/checkout@v3 uses: actions/setup-go@v3
with: with:
fetch-depth: 0 go-version-file: "go.mod"
cache: true
- name: Get the version - name: Get the version
id: get_version id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
- name: Install GoReleaser - name: Install GoReleaser
uses: goreleaser/goreleaser-action@v3 uses: goreleaser/goreleaser-action@v3
with: with:
install-only: true 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 - name: Set up QEMU
uses: engineerd/setup-kind@v0.5.0 uses: docker/setup-qemu-action@v2
with:
image: kindest/node:${{ env.KIND_NODE_IMAGE_TAG }}
version: ${{ env.KIND_VERSION }}
config: kind.yaml
- name: Set up QEMU - name: Docker Login
uses: docker/setup-qemu-action@v2 uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Docker Login - name: Run GoReleaser
uses: docker/login-action@v2 uses: goreleaser/goreleaser-action@v3
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} version: latest
password: ${{ secrets.DOCKERHUB_TOKEN }} args: release
env:
- name: Run GoReleaser GORELEASER_CURRENT_TAG: ${{ steps.get_version.outputs.VERSION }}
uses: goreleaser/goreleaser-action@v3 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: DOCKER_CLI_EXPERIMENTAL: "enabled"
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 #ToDo - Verify and upload releases
+65 -67
View File
@@ -5,98 +5,96 @@ on:
branches: branches:
- main - main
paths: paths:
- '**.go' - "**.go"
- 'charts/**' - "charts/**"
- 'test/**' - "test/**"
- go.mod - go.mod
- go.sum - go.sum
pull_request: pull_request:
branches: branches:
- main - main
paths: paths:
- '**.go' - "**.go"
- 'charts/**' - "charts/**"
- 'test/**' - "test/**"
- go.mod - go.mod
- go.sum - go.sum
workflow_dispatch: workflow_dispatch:
env:
HELM_VERSION: v3.9.0
KIND_VERSION: v0.14.0
jobs: jobs:
upgrade-test: upgrade-test:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
kindimage : [ 'kindest/node:v1.19.16' ] kindimage: ["kindest/node:v1.19.16"]
os: [ ubuntu-latest ] os: [ubuntu-latest]
steps: steps:
- name: Setup go - name: Checkout action sources
uses: actions/setup-go@v3 uses: actions/checkout@v3
with:
go-version: 1.19
- name: Checkout action sources - name: Setup go
uses: actions/checkout@v3 uses: actions/setup-go@v3
with:
go-version-file: "go.mod"
cache: true
- uses: actions/cache@v3 - name: Setup Helm
with: uses: Azure/setup-helm@v3
path: ~/go/pkg/mod with:
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} version: ${{ env.HELM_VERSION }}
restore-keys: |
${{ runner.os }}-go-
- name: Setup Helm - name: Setup Kind Clutser
uses: Azure/setup-helm@v3 uses: engineerd/setup-kind@v0.5.0
with: with:
version: v3.3.4 image: ${{ matrix.kindimage }}
version: ${{ env.KIND_VERSION }}
- name: Setup Kind Clutser - name: Install GoReleaser
uses: engineerd/setup-kind@v0.5.0 uses: goreleaser/goreleaser-action@v2
with: with:
image: ${{ matrix.kindimage }} install-only: true
version: v0.14.0
- name: Install GoReleaser - name: Setup kubectl & fetch node information
uses: goreleaser/goreleaser-action@v2 run: |
with: kubectl cluster-info --context kind-kind
install-only: true kubectl get nodes
kubectl get storageclasses.storage.k8s.io
- name: Setup kubectl & fetch node information - name: Dump system info
run: | run: |
kubectl cluster-info --context kind-kind source ./test/upgrade_test/fission_objects.sh dump_system_info
kubectl get nodes
kubectl get storageclasses.storage.k8s.io
- name: Dump system info - name: Install and configure previous stable fission
run: | run: |
source ./test/upgrade_test/fission_objects.sh dump_system_info source ./test/upgrade_test/fission_objects.sh install_stable_release \
&& create_fission_objects \
&& test_fission_objects
- name: Install and configure previous stable fission - name: Upgrade fission to latest
run: | run: |
source ./test/upgrade_test/fission_objects.sh install_stable_release \ source ./test/upgrade_test/fission_objects.sh build_docker_images \
&& create_fission_objects \ && kind_image_load \
&& test_fission_objects && install_current_release \
&& install_fission_cli
- name: Upgrade fission to latest - name: Test previously created fission objects with new release
run: | run: |
source ./test/upgrade_test/fission_objects.sh build_docker_images \ source ./test/upgrade_test/fission_objects.sh test_fission_objects
&& kind_image_load \
&& install_current_release \
&& install_fission_cli
- name: Test previously created fission objects with new release - name: Collect Fission Dump
run: | if: ${{ always() }}
source ./test/upgrade_test/fission_objects.sh test_fission_objects run: |
command -v fission && fission support dump
- name: Collect Fission Dump - name: Archive fission dump
if: ${{ always() }} if: ${{ failure() }}
run: | uses: actions/upload-artifact@v2
command -v fission && fission support dump with:
name: fission-dump
- name: Archive fission dump path: fission-dump/*.zip
if: ${{ failure() }} retention-days: 5
uses: actions/upload-artifact@v2
with:
name: fission-dump
path: fission-dump/*.zip
retention-days: 5
+1 -1
View File
@@ -38,7 +38,7 @@ func main() {
if os.IsNotExist(err) { if os.IsNotExist(err) {
err = os.MkdirAll(shareVolume, os.ModeDir|0700) err = os.MkdirAll(shareVolume, os.ModeDir|0700)
if err != nil { 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))
} }
} }
} }