* Remove more unused APIs * prettier * Fix Test * Fix tests * Remove SSO Integreation * fix tests * lint
1087 lines
33 KiB
YAML
1087 lines
33 KiB
YAML
# @format
|
|
|
|
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:
|
|
lint-job:
|
|
name: Checking Lint
|
|
runs-on: [ ubuntu-latest ]
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make verifiers
|
|
|
|
semgrep-static-code-analysis:
|
|
name: "semgrep checks"
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out source code
|
|
uses: actions/checkout@v3
|
|
- name: Scanning code on ${{ matrix.os }}
|
|
continue-on-error: false
|
|
run: |
|
|
# Install semgrep rather than using a container due to:
|
|
# https://github.com/actions/checkout/issues/334
|
|
sudo apt install -y python3-pip || apt install -y python3-pip
|
|
pip3 install semgrep
|
|
semgrep --config semgrep.yaml $(pwd)/web-app --error
|
|
|
|
ui-assets:
|
|
name: "React Code Has No Warnings & Prettified"
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
cache: "yarn"
|
|
cache-dependency-path: web-app/yarn.lock
|
|
- uses: actions/cache@v4
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./web-app/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
- name: Install Dependencies
|
|
working-directory: ./web-app
|
|
continue-on-error: false
|
|
run: |
|
|
yarn install --immutable
|
|
- name: Check for Warnings in build output
|
|
working-directory: ./web-app
|
|
continue-on-error: false
|
|
run: |
|
|
./check-warnings.sh
|
|
- name: Check if Files are Prettified
|
|
working-directory: ./web-app
|
|
continue-on-error: false
|
|
run: |
|
|
./check-prettier.sh
|
|
- name: Check for dead code
|
|
working-directory: ./web-app
|
|
continue-on-error: false
|
|
run: |
|
|
./check-deadcode.sh
|
|
|
|
latest-minio:
|
|
name: Build latest MinIO
|
|
runs-on: [ ubuntu-latest ]
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
steps:
|
|
# To build minio image, we need to clone the repository first
|
|
- name: Clone github.com/minio/minio
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: minio/minio
|
|
- name: Check-out matching MinIO branch
|
|
env:
|
|
GH_BRANCH: ${{ github.head_ref || github.ref_name }}
|
|
GH_PR_REPO: ${{ github.event.pull_request.head.repo.full_name }}
|
|
run: |
|
|
GH_PR_ACCOUNT=`echo $GH_PR_REPO | sed "s/\\/.*//"`
|
|
if [ ! -z "$GH_PR_ACCOUNT" ] && [ ! "$GH_PR_ACCOUNT" = "minio" ]; then
|
|
ALTREPO="https://github.com/$GH_PR_ACCOUNT/minio.git"
|
|
echo "Attempting to fetch $ALTREPO..."
|
|
git remote add alt $ALTREPO
|
|
(git fetch alt && git checkout "alt/$GH_BRANCH") || echo "$ALTREPO ($GH_BRANCH) not available, so keeping default repository/branch"
|
|
fi
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go-minio
|
|
- name: Build on ${{ matrix.os }}
|
|
if: steps.minio-latest-cache.outputs.cache-hit != 'true'
|
|
run: |
|
|
echo "Create minio binary";
|
|
make build;
|
|
compile-binary:
|
|
name: Compiles on Go ${{ matrix.go-version }} and ${{ matrix.os }}
|
|
needs:
|
|
- lint-job
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-${{ github.run_id }}
|
|
- uses: actions/cache@v4
|
|
id: assets-cache
|
|
name: Assets Cache
|
|
with:
|
|
path: |
|
|
./web-app/build/
|
|
key: ${{ runner.os }}-assets-${{ github.run_id }}
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make console
|
|
|
|
test-nginx-subpath:
|
|
name: Test Subpath with Nginx
|
|
needs:
|
|
- compile-binary
|
|
runs-on: [ ubuntu-latest ]
|
|
timeout-minutes: 10
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
- name: Install MinIO JS
|
|
working-directory: ./
|
|
continue-on-error: false
|
|
run: |
|
|
yarn add minio
|
|
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-${{ github.run_id }}
|
|
|
|
- name: clean-previous-containers-if-any
|
|
run: |
|
|
docker stop minio || true;
|
|
docker container prune -f || true;
|
|
|
|
- name: Start Console, MinIO and Nginx
|
|
run: |
|
|
(CONSOLE_SUBPATH=/console/subpath ./console server ) & (make test-initialize-minio-nginx)
|
|
|
|
- name: Install TestCafe
|
|
run: npm install testcafe@3.5.0
|
|
|
|
- name: Run TestCafe Tests
|
|
run: npx testcafe "firefox:headless" web-app/tests/subpath-nginx/ -q --skip-js-errors -c 3
|
|
|
|
- name: Clean up docker
|
|
if: always()
|
|
run: |
|
|
make cleanup-minio-nginx
|
|
|
|
all-permissions-1:
|
|
name: Permissions Tests Part 1
|
|
needs:
|
|
- compile-binary
|
|
runs-on: [ ubuntu-latest ]
|
|
timeout-minutes: 10
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
- name: Install MinIO JS
|
|
working-directory: ./
|
|
continue-on-error: false
|
|
run: |
|
|
yarn add minio
|
|
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-${{ github.run_id }}
|
|
|
|
- name: clean-previous-containers-if-any
|
|
run: |
|
|
docker stop minio || true;
|
|
docker container prune -f || true;
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Install TestCafe
|
|
run: npm install testcafe@3.5.0
|
|
|
|
- name: Run TestCafe Tests
|
|
run: npx testcafe "firefox:headless" web-app/tests/permissions-1/ -q --skip-js-errors -c 3
|
|
|
|
- name: Clean up users & policies
|
|
run: |
|
|
make cleanup-permissions
|
|
|
|
all-permissions-2:
|
|
name: Permissions Tests Part 2
|
|
needs:
|
|
- compile-binary
|
|
runs-on: [ ubuntu-latest ]
|
|
timeout-minutes: 10
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
- name: Install MinIO JS
|
|
working-directory: ./
|
|
continue-on-error: false
|
|
run: |
|
|
yarn add minio
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-${{ github.run_id }}
|
|
|
|
- name: clean-previous-containers-if-any
|
|
run: |
|
|
docker stop minio || true;
|
|
docker container prune -f || true;
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Install TestCafe
|
|
run: npm install testcafe@3.5.0
|
|
|
|
- name: Run TestCafe Tests
|
|
run: npx testcafe "firefox:headless" web-app/tests/permissions-2/ -q --skip-js-errors -c 3
|
|
|
|
- name: Clean up users & policies
|
|
run: |
|
|
make cleanup-permissions
|
|
|
|
all-permissions-3:
|
|
name: Permissions Tests Part 3
|
|
needs:
|
|
- compile-binary
|
|
runs-on: [ ubuntu-latest ]
|
|
timeout-minutes: 10
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
- name: Install MinIO JS
|
|
working-directory: ./
|
|
continue-on-error: false
|
|
run: |
|
|
yarn add minio
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-${{ github.run_id }}
|
|
|
|
- name: clean-previous-containers-if-any
|
|
run: |
|
|
docker stop minio || true;
|
|
docker container prune -f || true;
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Install TestCafe
|
|
run: npm install testcafe@3.5.0
|
|
|
|
- name: Run TestCafe Tests
|
|
run: npx testcafe "firefox:headless" web-app/tests/permissions-3/ -q --skip-js-errors -c 3
|
|
|
|
- name: Clean up users & policies
|
|
run: |
|
|
make cleanup-permissions
|
|
|
|
all-permissions-4:
|
|
name: Permissions Tests Part 4
|
|
needs:
|
|
- compile-binary
|
|
runs-on: [ ubuntu-latest ]
|
|
timeout-minutes: 15
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
- name: Install MinIO JS
|
|
working-directory: ./
|
|
continue-on-error: false
|
|
run: |
|
|
yarn add minio
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-${{ github.run_id }}
|
|
|
|
- name: clean-previous-containers-if-any
|
|
run: |
|
|
docker stop minio || true;
|
|
docker container prune -f || true;
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Install TestCafe
|
|
run: npm install testcafe@3.5.0
|
|
|
|
- name: Run TestCafe Tests
|
|
timeout-minutes: 10
|
|
run: npx testcafe "firefox:headless" web-app/tests/permissions-4/ --skip-js-errors
|
|
|
|
all-permissions-6:
|
|
name: Permissions Tests Part 6
|
|
needs:
|
|
- compile-binary
|
|
runs-on: [ ubuntu-latest ]
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
- name: Install MinIO JS
|
|
working-directory: ./
|
|
continue-on-error: false
|
|
run: |
|
|
yarn add minio
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-${{ github.run_id }}
|
|
|
|
- name: clean-previous-containers-if-any
|
|
run: |
|
|
docker stop minio || true;
|
|
docker container prune -f || true;
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Install TestCafe
|
|
run: npm install testcafe@3.5.0
|
|
|
|
- name: Run TestCafe Tests
|
|
timeout-minutes: 5
|
|
run: npx testcafe "firefox:headless" web-app/tests/permissions-6/ --skip-js-errors
|
|
|
|
all-permissions-B:
|
|
name: Permissions Tests Part B
|
|
needs:
|
|
- compile-binary
|
|
runs-on: [ ubuntu-latest ]
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
- name: Install MinIO JS
|
|
working-directory: ./
|
|
continue-on-error: false
|
|
run: |
|
|
yarn add minio
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-${{ github.run_id }}
|
|
|
|
- name: clean-previous-containers-if-any
|
|
run: |
|
|
docker stop minio || true;
|
|
docker container prune -f || true;
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Install TestCafe
|
|
run: npm install testcafe@3.5.0
|
|
|
|
- name: Run TestCafe Tests
|
|
run: npx testcafe "firefox:headless" web-app/tests/permissions-B/ --skip-js-errors -c 3
|
|
|
|
- name: Clean up users & policies
|
|
run: |
|
|
make cleanup-permissions
|
|
|
|
test-pkg-on-go:
|
|
name: Test Pkg on Go ${{ matrix.go-version }} and ${{ matrix.os }}
|
|
needs:
|
|
- lint-job
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make test-pkg
|
|
|
|
- uses: actions/cache@v4
|
|
id: coverage-cache-pkg
|
|
name: Coverage Cache Pkg
|
|
with:
|
|
path: |
|
|
./pkg/coverage/
|
|
key: ${{ runner.os }}-coverage-pkg-2-${{ github.run_id }}
|
|
test-api-on-go:
|
|
name: Test API on Go ${{ matrix.go-version }} and ${{ matrix.os }}
|
|
needs:
|
|
- lint-job
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make test
|
|
|
|
- uses: actions/cache@v4
|
|
id: coverage-cache-api
|
|
name: Coverage Cache API
|
|
with:
|
|
path: |
|
|
./api/coverage/
|
|
key: ${{ runner.os }}-coverage-api-2-${{ github.run_id }}
|
|
b-integration-tests:
|
|
name: Integration Tests with Latest Distributed MinIO
|
|
needs:
|
|
- lint-job
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
- latest-minio
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Clone github.com/minio/minio
|
|
uses: actions/checkout@master
|
|
with:
|
|
repository: minio/minio
|
|
path: "minio_repository"
|
|
- name: Check-out matching MinIO branch
|
|
env:
|
|
GH_BRANCH: ${{ github.head_ref || github.ref_name }}
|
|
GH_PR_REPO: ${{ github.event.pull_request.head.repo.full_name }}
|
|
run: |
|
|
GH_PR_ACCOUNT=`echo $GH_PR_REPO | sed "s/\\/.*//"`
|
|
if [ ! -z "$GH_PR_ACCOUNT" ] && [ ! "$GH_PR_ACCOUNT" = "minio" ]; then
|
|
ALTREPO="https://github.com/$GH_PR_ACCOUNT/minio.git"
|
|
echo "Attempting to fetch $ALTREPO..."
|
|
git remote add alt $ALTREPO
|
|
(git fetch alt && git checkout "alt/$GH_BRANCH") || echo "$ALTREPO ($GH_BRANCH) not available, so keeping default repository/branch"
|
|
fi
|
|
- uses: actions/cache@v4
|
|
id: minio-latest-cache
|
|
name: MinIO Latest Cache
|
|
with:
|
|
path: |
|
|
./minio
|
|
key: ${{ runner.os }}-minio-latest-${{ hashFiles('./minio_repository/go.sum') }}
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- 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;
|
|
|
|
docker build -q --no-cache -t minio/minio:$VERSION . -f Dockerfile
|
|
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";
|
|
MINIO_VERSION="minio/minio:$VERSION";
|
|
echo $MINIO_VERSION;
|
|
|
|
echo "Create bucket for replication with versioning"
|
|
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"
|
|
make test-integration MINIO_VERSION=$MINIO_VERSION;
|
|
|
|
- uses: actions/cache@v4
|
|
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
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- name: Install modules
|
|
working-directory: ./web-app
|
|
run: yarn install --immutable
|
|
- name: Run tests
|
|
working-directory: ./web-app
|
|
run: yarn test
|
|
|
|
coverage:
|
|
name: "Coverage Limit Check"
|
|
needs:
|
|
- b-integration-tests
|
|
- test-api-on-go
|
|
- test-pkg-on-go
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- name: Check out gocovmerge as a nested repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
repository: wadey/gocovmerge
|
|
path: gocovmerge
|
|
|
|
- uses: actions/cache@v4
|
|
id: coverage-cache
|
|
name: Coverage Cache
|
|
with:
|
|
path: |
|
|
./integration/coverage/
|
|
key: ${{ runner.os }}-coverage-2-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v4
|
|
id: coverage-cache-api
|
|
name: Coverage Cache API
|
|
with:
|
|
path: |
|
|
./api/coverage/
|
|
key: ${{ runner.os }}-coverage-api-2-${{ github.run_id }}
|
|
|
|
- uses: actions/cache@v4
|
|
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.23
|
|
echo "go build gocoverage.go"
|
|
go build gocovmerge.go
|
|
echo "put together the outs for final coverage resolution"
|
|
./gocovmerge ../integration/coverage/system.out ../api/coverage/coverage.out ../pkg/coverage/coverage-pkg.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 "Only run our test if play is up and running"
|
|
PLAY_IS_ON=`wget --spider --server-response https://play.min.io:9443/login 2>&1 | grep '200\ OK' | wc -l`
|
|
if [ $PLAY_IS_ON == 1 ]
|
|
then
|
|
echo "Play is up and running, we will proceed with the play part for coverage"
|
|
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
|
|
# save all other coverage
|
|
go tool cover -html=../integration/coverage/system.out -o system.html
|
|
./mc cp system.html play/builds/${{ github.repository }}/${{ github.event.number }}/${{ github.run_id }}/ || true
|
|
./mc cp system.html play/builds/${{ github.repository }}/${{ github.event.number }}/latest/ || true
|
|
./mc cp ../integration/coverage/system.out play/builds/${{ github.repository }}/${{ github.event.number }}/${{ github.run_id }}/ || true
|
|
./mc cp ../integration/coverage/system.out play/builds/${{ github.repository }}/${{ github.event.number }}/latest/ || true
|
|
go tool cover -html=../api/coverage/coverage.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
|
|
./mc cp ../api/coverage/coverage.out play/builds/${{ github.repository }}/${{ github.event.number }}/${{ github.run_id }}/ || true
|
|
./mc cp ../api/coverage/coverage.out play/builds/${{ github.repository }}/${{ github.event.number }}/latest/ || true
|
|
go tool cover -html=../pkg/coverage/coverage-pkg.out -o coverage-pkg.html
|
|
./mc cp coverage-pkg.html play/builds/${{ github.repository }}/${{ github.event.number }}/${{ github.run_id }}/ || true
|
|
./mc cp coverage-pkg.html play/builds/${{ github.repository }}/${{ github.event.number }}/latest/ || true
|
|
./mc cp ../pkg/coverage/coverage-pkg.out play/builds/${{ github.repository }}/${{ github.event.number }}/${{ github.run_id }}/ || true
|
|
./mc cp ../pkg/coverage/coverage-pkg.out play/builds/${{ github.repository }}/${{ github.event.number }}/latest/ || true
|
|
./mc anonymous set public play/builds
|
|
else
|
|
echo "Play is down, please report it on hack channel, no coverage is going to be uploaded!!!"
|
|
fi
|
|
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=1.0
|
|
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
|
|
|
|
ui-assets-istanbul-coverage:
|
|
name: "Assets with Istanbul Plugin for coverage"
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Read .nvmrc
|
|
id: node_version
|
|
run: echo "$(cat .nvmrc)" && echo "NVMRC=$(cat .nvmrc)" >> $GITHUB_ENV
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NVMRC }}
|
|
cache: "yarn"
|
|
cache-dependency-path: web-app/yarn.lock
|
|
- uses: actions/cache@v4
|
|
id: assets-cache-istanbul-coverage
|
|
name: Assets Cache Istanbul Coverage
|
|
with:
|
|
path: |
|
|
./web-app/build/
|
|
key: ${{ runner.os }}-assets-istanbul-coverage-${{ github.run_id }}
|
|
- name: Install Dependencies
|
|
working-directory: ./web-app
|
|
continue-on-error: false
|
|
run: |
|
|
yarn install --immutable
|
|
- name: Check for Warnings in build output
|
|
working-directory: ./web-app
|
|
continue-on-error: false
|
|
run: |
|
|
./check-warnings-istanbul-coverage.sh
|
|
|
|
compile-binary-istanbul-coverage:
|
|
name: "Compile Console Binary with Istanbul Plugin for Coverage"
|
|
needs:
|
|
- lint-job
|
|
- ui-assets-istanbul-coverage
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache Istanbul Coverage
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-istanbul-coverage-${{ github.run_id }}
|
|
- uses: actions/cache@v4
|
|
id: assets-cache-istanbul-coverage
|
|
name: Assets Cache Istanbul Coverage
|
|
with:
|
|
path: |
|
|
./web-app/build/
|
|
key: ${{ runner.os }}-assets-istanbul-coverage-${{ 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
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- 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
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- 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
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- 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
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- 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
|
|
- ui-assets
|
|
- semgrep-static-code-analysis
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
go-version: [ 1.23.x ]
|
|
os: [ ubuntu-latest ]
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }}
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: ${{ matrix.go-version }}
|
|
id: go
|
|
|
|
- name: Build on ${{ matrix.os }}
|
|
env:
|
|
GO111MODULE: on
|
|
GOOS: linux
|
|
run: |
|
|
make crosscompile arg1="'linux/386 netbsd/amd64'"
|
|
|
|
playwright:
|
|
needs:
|
|
- compile-binary-istanbul-coverage
|
|
timeout-minutes: 60
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Enable Corepack
|
|
run: corepack enable
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
echo "Install dependencies"
|
|
cd $GITHUB_WORKSPACE/web-app
|
|
yarn init -y
|
|
yarn add -D playwright babel-plugin-istanbul nyc react-app-rewired create-react-app @playwright/test
|
|
echo "yarn install"
|
|
yarn install --no-immutable
|
|
|
|
- name: Install Playwright Browsers
|
|
run: npx playwright install --with-deps
|
|
|
|
- uses: actions/cache@v4
|
|
name: Console Binary Cache Istanbul Coverage
|
|
with:
|
|
path: |
|
|
./console
|
|
key: ${{ runner.os }}-binary-istanbul-coverage-${{ github.run_id }}
|
|
|
|
- name: Start Console, front-end app and initialize users/policies
|
|
run: |
|
|
(./console server) & (make initialize-permissions)
|
|
|
|
- name: Run Playwright tests
|
|
run: |
|
|
echo "Run tests under playwright folder only"
|
|
cd $GITHUB_WORKSPACE/web-app
|
|
yarn remove playwright
|
|
yarn add --dev @playwright/test
|
|
echo "npx playwright test"
|
|
npx playwright test --reporter github # To run the tests |