1533 lines
45 KiB
YAML
1533 lines
45 KiB
YAML
name: Workflow
|
|
|
|
on:
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
push:
|
|
branches:
|
|
- master
|
|
|
|
# This ensures that previous jobs for the PR are canceled when the PR is
|
|
# updated.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
|
|
replication:
|
|
|
|
name: Site Replication Test
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
# To build minio image, we need to clone the repository first
|
|
- name: clone https://github.com/minio/minio
|
|
uses: actions/checkout@master
|
|
with:
|
|
|
|
# Repository name with owner. For example, actions/checkout
|
|
# Default: ${{ github.repository }}
|
|
repository: minio/minio
|
|
|
|
# Relative path under $GITHUB_WORKSPACE to place the repository
|
|
# To have two repositories under the same test
|
|
path: 'minio_repository'
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
run: |
|
|
echo "The idea is to build minio image from downloaded repository";
|
|
cd $GITHUB_WORKSPACE/minio_repository;
|
|
echo "Get git version to build MinIO Image";
|
|
VERSION=`git rev-parse HEAD`;
|
|
echo $VERSION;
|
|
echo "Create minio image";
|
|
make docker VERSION=$VERSION;
|
|
echo "Jumping back to console repository to run the integration test"
|
|
cd $GITHUB_WORKSPACE;
|
|
echo "We are going to use the built image on test-integration";
|
|
VERSION="minio/minio:$VERSION";
|
|
echo $VERSION;
|
|
make test-replication MINIO_VERSION=$VERSION;
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-replication
|
|
name: Coverage Cache Replication
|
|
with:
|
|
path: |
|
|
./replication/coverage/
|
|
key: ${{ runner.os }}-replication-coverage-2-${{ github.run_id }}
|
|
|
|
sso-integration:
|
|
|
|
name: SSO Integration Test
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
# To build minio image, we need to clone the repository first
|
|
- name: clone https://github.com/minio/minio
|
|
uses: actions/checkout@master
|
|
with:
|
|
|
|
# Repository name with owner. For example, actions/checkout
|
|
# Default: ${{ github.repository }}
|
|
repository: minio/minio
|
|
|
|
# Relative path under $GITHUB_WORKSPACE to place the repository
|
|
# To have two repositories under the same test
|
|
path: 'minio_repository'
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
run: |
|
|
echo "The idea is to build minio image from downloaded repository";
|
|
cd $GITHUB_WORKSPACE/minio_repository;
|
|
echo "Get git version to build MinIO Image";
|
|
VERSION=`git rev-parse HEAD`;
|
|
echo $VERSION;
|
|
echo "Create minio image";
|
|
make docker VERSION=$VERSION;
|
|
echo "Jumping back to console repository to run the integration test"
|
|
cd $GITHUB_WORKSPACE;
|
|
echo "We are going to use the built image on test-integration";
|
|
VERSION="minio/minio:$VERSION";
|
|
echo $VERSION;
|
|
make test-sso-integration MINIO_VERSION=$VERSION;
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-sso
|
|
name: Coverage Cache SSO
|
|
with:
|
|
path: |
|
|
./sso-integration/coverage/
|
|
key: ${{ runner.os }}-sso-coverage-2-${{ github.run_id }}
|
|
|
|
c-operator-api-tests:
|
|
|
|
name: Operator API Tests
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
|
|
steps:
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Operator API Tests
|
|
run: |
|
|
curl -sLO "https://dl.k8s.io/release/v1.23.1/bin/linux/amd64/kubectl" -o kubectl
|
|
chmod +x kubectl
|
|
mv kubectl /usr/local/bin
|
|
"${GITHUB_WORKSPACE}/.github/workflows/deploy-tenant.sh"
|
|
echo "start ---> make test-operator-integration";
|
|
make test-operator-integration;
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-operator
|
|
name: Coverage Cache Operator
|
|
with:
|
|
path: |
|
|
./operator-integration/coverage/
|
|
key: ${{ runner.os }}-coverage-2-operator-${{ github.run_id }}
|
|
|
|
lint-job:
|
|
name: Checking Lint
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make verifiers
|
|
|
|
vulnerable-dependencies-checks:
|
|
name: "Check for vulnerable dependencies"
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
continue-on-error: false
|
|
if: matrix.os == 'ubuntu-latest'
|
|
env:
|
|
CGO_ENABLED: 0
|
|
GO111MODULE: on
|
|
run: |
|
|
sudo apt install jq -y
|
|
sudo sysctl net.ipv6.conf.all.disable_ipv6=0
|
|
sudo sysctl net.ipv6.conf.default.disable_ipv6=0
|
|
nancy_version=$(curl --retry 10 -Ls -o /dev/null -w "%{url_effective}" https://github.com/sonatype-nexus-community/nancy/releases/latest | sed "s/https:\/\/github.com\/sonatype-nexus-community\/nancy\/releases\/tag\///")
|
|
curl -L -o nancy https://github.com/sonatype-nexus-community/nancy/releases/download/${nancy_version}/nancy-${nancy_version}-linux-amd64 && chmod +x nancy
|
|
go list -deps -json ./... | jq -s 'unique_by(.Module.Path)|.[]|select(has("Module"))|.Module' | ./nancy sleuth
|
|
|
|
semgrep-static-code-analysis:
|
|
name: "semgrep checks"
|
|
runs-on: ${{ matrix.os }}
|
|
container:
|
|
image: "returntocorp/semgrep"
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out source code
|
|
uses: actions/checkout@v2
|
|
- name: Scanning code on ${{ matrix.os }}
|
|
continue-on-error: false
|
|
run: |
|
|
semgrep --config semgrep.yaml $(pwd)/portal-ui --error
|
|
|
|
no-warnings-and-make-assets:
|
|
name: "React Code Has No Warnings and then Make Assets"
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '17'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
|
|
- name: Install Dependencies
|
|
working-directory: ./portal-ui
|
|
continue-on-error: false
|
|
run: |
|
|
yarn install
|
|
- name: Check for Warnings in build output
|
|
working-directory: ./portal-ui
|
|
continue-on-error: false
|
|
run: |
|
|
./check-warnings.sh
|
|
|
|
reuse-golang-dependencies:
|
|
name: reuse golang dependencies
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
go mod download
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
all-permissions-1:
|
|
name: Permissions Tests Part 1
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '16'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build Console on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Run TestCafe Tests
|
|
uses: DevExpress/testcafe-action@latest
|
|
with:
|
|
args: '"chrome:headless" portal-ui/tests/permissions-1/ --skip-js-errors -c 3'
|
|
|
|
- name: Clean up users & policies
|
|
run: |
|
|
make cleanup-permissions
|
|
|
|
all-permissions-2:
|
|
name: Permissions Tests Part 2
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '16'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build Console on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Run TestCafe Tests
|
|
uses: DevExpress/testcafe-action@latest
|
|
with:
|
|
args: '"chrome:headless" portal-ui/tests/permissions-2/ --skip-js-errors -c 3'
|
|
|
|
- name: Clean up users & policies
|
|
run: |
|
|
make cleanup-permissions
|
|
|
|
all-permissions-3:
|
|
name: Permissions Tests Part 3
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '16'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build Console on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Run TestCafe Tests
|
|
uses: DevExpress/testcafe-action@latest
|
|
with:
|
|
args: '"chrome:headless" portal-ui/tests/permissions-3/ --skip-js-errors -c 3'
|
|
|
|
- name: Clean up users & policies
|
|
run: |
|
|
make cleanup-permissions
|
|
|
|
|
|
all-permissions-4:
|
|
name: Permissions Tests Part 4
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
timeout-minutes: 5
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '16'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
- name: Build Console on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
- name: Run TestCafe Tests
|
|
timeout-minutes: 5
|
|
uses: DevExpress/testcafe-action@latest
|
|
with:
|
|
args: '"chrome:headless" portal-ui/tests/permissions-4/ --skip-js-errors'
|
|
|
|
all-permissions-5:
|
|
name: Permissions Tests Part 5
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '16'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
- name: Build Console on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
- name: Run TestCafe Tests
|
|
timeout-minutes: 5
|
|
uses: DevExpress/testcafe-action@latest
|
|
with:
|
|
args: '"chrome:headless" portal-ui/tests/permissions-5/ --skip-js-errors'
|
|
|
|
all-permissions-6:
|
|
name: Permissions Tests Part 6
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '16'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
- name: Build Console on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
- name: Run TestCafe Tests
|
|
timeout-minutes: 5
|
|
uses: DevExpress/testcafe-action@latest
|
|
with:
|
|
args: '"chrome:headless" portal-ui/tests/permissions-6/ --skip-js-errors'
|
|
|
|
all-permissions-7:
|
|
name: Permissions Tests Part 7
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '16'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
- name: Build Console on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
- name: Run TestCafe Tests
|
|
timeout-minutes: 5
|
|
uses: DevExpress/testcafe-action@latest
|
|
with:
|
|
args: '"chrome:headless" portal-ui/tests/permissions-7/ --skip-js-errors'
|
|
|
|
all-operator-tests:
|
|
name: Operator UI Tests
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: '16'
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Get yarn cache directory path
|
|
id: yarn-cache-dir-path
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- uses: actions/cache@v2
|
|
id: yarn-cache
|
|
name: Yarn Cache
|
|
with:
|
|
path: |
|
|
${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
./portal-ui/node_modules/
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('./portal-ui/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
|
|
- uses: actions/cache@v2
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./portal-ui/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
restore-keys: |
|
|
${{ runner.os }}-assets-
|
|
|
|
- name: Build Console on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
|
|
# Runs a set of commands using the runners shell
|
|
- name: Start Kind for Operator UI
|
|
run: |
|
|
"${GITHUB_WORKSPACE}/portal-ui/tests/scripts/operator.sh"
|
|
|
|
- name: Run TestCafe Tests
|
|
uses: DevExpress/testcafe-action@latest
|
|
with:
|
|
args: '"chrome:headless" portal-ui/tests/operator/ --skip-js-errors -c 3'
|
|
|
|
compile-job:
|
|
name: Compiles on Go ${{ matrix.go-version }} and ${{ matrix.os }}
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
|
|
cross-compile-1:
|
|
name: Cross compile
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make crosscompile arg1="'linux/ppc64le linux/mips64'"
|
|
|
|
cross-compile-2:
|
|
name: Cross compile 2
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make crosscompile arg1="'linux/arm64 linux/s390x'"
|
|
|
|
cross-compile-3:
|
|
name: Cross compile 3
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make crosscompile arg1="'darwin/amd64 freebsd/amd64'"
|
|
|
|
cross-compile-4:
|
|
name: Cross compile 4
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make crosscompile arg1="'windows/amd64 linux/arm'"
|
|
|
|
cross-compile-5:
|
|
name: Cross compile 5
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make crosscompile arg1="'linux/386 netbsd/amd64'"
|
|
|
|
test-pkg-on-go:
|
|
name: Test Pkg on Go ${{ matrix.go-version }} and ${{ matrix.os }}
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make test-pkg
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-pkg
|
|
name: Coverage Cache Pkg
|
|
with:
|
|
path: |
|
|
./pkg/coverage/
|
|
key: ${{ runner.os }}-coverage-pkg-2-${{ github.run_id }}
|
|
|
|
test-restapi-on-go:
|
|
name: Test Restapi on Go ${{ matrix.go-version }} and ${{ matrix.os }}
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make test
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-restapi
|
|
name: Coverage Cache RestAPI
|
|
with:
|
|
path: |
|
|
./restapi/coverage/
|
|
key: ${{ runner.os }}-coverage-restapi-2-${{ github.run_id }}
|
|
|
|
test-operatorapi-on-go:
|
|
name: Test Operatorapi on Go ${{ matrix.go-version }} and ${{ matrix.os }}
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make test-unit-test-operator
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-unittest-operatorapi
|
|
name: Coverage Cache unit test operatorAPI
|
|
with:
|
|
path: |
|
|
./operatorapi/coverage/
|
|
key: ${{ runner.os }}-coverage-unittest-operatorapi-2-${{ github.run_id }}
|
|
|
|
b-integration-tests:
|
|
name: Integration Tests with Latest Distributed MinIO
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
|
|
# To build minio image, we need to clone the repository first
|
|
- name: clone https://github.com/minio/minio
|
|
uses: actions/checkout@master
|
|
with:
|
|
|
|
# Repository name with owner. For example, actions/checkout
|
|
# Default: ${{ github.repository }}
|
|
repository: minio/minio
|
|
|
|
# Relative path under $GITHUB_WORKSPACE to place the repository
|
|
# To have two repositories under the same test
|
|
path: 'minio_repository'
|
|
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
run: |
|
|
echo "The idea is to build minio image from downloaded repository";
|
|
cd $GITHUB_WORKSPACE/minio_repository;
|
|
echo "Get git version to build MinIO Image";
|
|
VERSION=`git rev-parse HEAD`;
|
|
echo $VERSION;
|
|
echo "Create minio image";
|
|
make docker VERSION=$VERSION;
|
|
echo "Jumping back to console repository to run the integration test"
|
|
cd $GITHUB_WORKSPACE;
|
|
echo "We are going to use the built image on test-integration";
|
|
VERSION="minio/minio:$VERSION";
|
|
echo $VERSION;
|
|
make test-integration MINIO_VERSION=$VERSION;
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache
|
|
name: Coverage Cache
|
|
with:
|
|
path: |
|
|
./integration/coverage/
|
|
key: ${{ runner.os }}-coverage-2-${{ github.run_id }}
|
|
|
|
react-tests:
|
|
name: React Tests
|
|
needs:
|
|
- lint-job
|
|
- no-warnings-and-make-assets
|
|
- reuse-golang-dependencies
|
|
- vulnerable-dependencies-checks
|
|
- semgrep-static-code-analysis
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Install modules
|
|
working-directory: ./portal-ui
|
|
run: yarn
|
|
- name: Run tests
|
|
working-directory: ./portal-ui
|
|
run: yarn test
|
|
|
|
coverage:
|
|
name: "Coverage Limit Check"
|
|
needs:
|
|
- b-integration-tests
|
|
- test-restapi-on-go
|
|
- test-operatorapi-on-go
|
|
- c-operator-api-tests
|
|
- test-pkg-on-go
|
|
- sso-integration
|
|
- replication
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.17.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- name: Check out code into the Go module directory
|
|
uses: actions/checkout@v2
|
|
- name: Check out gocovmerge as a nested repository
|
|
uses: actions/checkout@v2
|
|
with:
|
|
repository: wadey/gocovmerge
|
|
path: gocovmerge
|
|
- uses: actions/cache@v2
|
|
name: Go Mod Cache
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache
|
|
name: Coverage Cache
|
|
with:
|
|
path: |
|
|
./integration/coverage/
|
|
key: ${{ runner.os }}-coverage-2-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-sso
|
|
name: Coverage Cache SSO
|
|
with:
|
|
path: |
|
|
./sso-integration/coverage/
|
|
key: ${{ runner.os }}-sso-coverage-2-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-replication
|
|
name: Coverage Cache Replication
|
|
with:
|
|
path: |
|
|
./replication/coverage/
|
|
key: ${{ runner.os }}-replication-coverage-2-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-operator
|
|
name: Coverage Cache Operator
|
|
with:
|
|
path: |
|
|
./operator-integration/coverage/
|
|
key: ${{ runner.os }}-coverage-2-operator-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-restapi
|
|
name: Coverage Cache RestAPI
|
|
with:
|
|
path: |
|
|
./restapi/coverage/
|
|
key: ${{ runner.os }}-coverage-restapi-2-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-unittest-operatorapi
|
|
name: Coverage Cache unit test operatorAPI
|
|
with:
|
|
path: |
|
|
./operatorapi/coverage/
|
|
key: ${{ runner.os }}-coverage-unittest-operatorapi-2-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v2
|
|
id: coverage-cache-pkg
|
|
name: Coverage Cache Pkg
|
|
with:
|
|
path: |
|
|
./pkg/coverage/
|
|
key: ${{ runner.os }}-coverage-pkg-2-${{ github.run_id }}
|
|
|
|
- name: Get coverage
|
|
run: |
|
|
echo "change directory to gocovmerge"
|
|
cd gocovmerge
|
|
echo "download golang x tools"
|
|
go mod download golang.org/x/tools
|
|
echo "go mod tidy compat mode"
|
|
go mod tidy -compat=1.17
|
|
echo "go build gocoverage.go"
|
|
go build gocovmerge.go
|
|
echo "put together the outs for final coverage resolution"
|
|
./gocovmerge ../integration/coverage/system.out ../replication/coverage/replication.out ../sso-integration/coverage/sso-system.out ../restapi/coverage/coverage.out ../pkg/coverage/coverage-pkg.out ../operator-integration/coverage/operator-api.out ../operatorapi/coverage/coverage-unit-test-operatorapi.out > all.out
|
|
echo "Download mc for Ubuntu"
|
|
wget -q https://dl.min.io/client/mc/release/linux-amd64/mc
|
|
echo "Change the permissions to execute mc command"
|
|
chmod +x mc
|
|
echo "Create the folder to put the all.out file"
|
|
./mc mb --ignore-existing play/builds/
|
|
echo "Copy the all.out file to play bucket"
|
|
echo ${{ github.repository }}
|
|
echo ${{ github.event.number }}
|
|
echo ${{ github.run_id }}
|
|
# mc cp can fail due to lack of space: mc: <ERROR> Failed to copy `all.out`.
|
|
# Storage backend has reached its minimum free disk threshold. Please delete a few objects to proceed.
|
|
./mc cp all.out play/builds/${{ github.repository }}/${{ github.event.number }}/${{ github.run_id }}/ || true
|
|
./mc cp all.out play/builds/${{ github.repository }}/${{ github.event.number }}/latest/ || true
|
|
go tool cover -html=all.out -o coverage.html
|
|
./mc cp coverage.html play/builds/${{ github.repository }}/${{ github.event.number }}/${{ github.run_id }}/ || true
|
|
./mc cp coverage.html play/builds/${{ github.repository }}/${{ github.event.number }}/latest/ || true
|
|
echo "grep to obtain the result"
|
|
go tool cover -func=all.out | grep total > tmp2
|
|
result=`cat tmp2 | awk 'END {print $3}'`
|
|
result=${result%\%}
|
|
threshold=50.7
|
|
echo "Result:"
|
|
echo "$result%"
|
|
if (( $(echo "$result >= $threshold" |bc -l) )); then
|
|
echo "It is equal or greater than threshold ($threshold%), passed!"
|
|
else
|
|
echo "It is smaller than threshold ($threshold%) value, failed!"
|
|
exit 1
|
|
fi
|