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:
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user