mirror of https://github.com/artifacthub/hub.git
251 lines
7.5 KiB
YAML
251 lines
7.5 KiB
YAML
name: CI
|
|
|
|
on:
|
|
merge_group:
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
|
|
permissions: read-all
|
|
|
|
jobs:
|
|
linter-backend:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.22"
|
|
- name: Install TensorFlow C library
|
|
run: |
|
|
FILENAME=libtensorflow-cpu-linux-x86_64-2.11.0.tar.gz
|
|
wget -q --no-check-certificate https://storage.googleapis.com/tensorflow/libtensorflow/${FILENAME}
|
|
sudo tar -C /usr/local -xzf ${FILENAME}
|
|
sudo ldconfig /usr/local/lib
|
|
- name: Run golangci-lint
|
|
uses: golangci/golangci-lint-action@v6
|
|
with:
|
|
version: v1.58.1
|
|
args: --timeout 10m
|
|
|
|
linter-openapi:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
- name: Lint OpenAPI specs
|
|
uses: github/super-linter@v6
|
|
env:
|
|
FILTER_REGEX_INCLUDE: docs/api/openapi.yaml
|
|
MULTI_STATUS: false
|
|
VALIDATE_ALL_CODEBASE: true
|
|
VALIDATE_OPENAPI: true
|
|
|
|
linter-artifacthub:
|
|
runs-on: ubuntu-20.04
|
|
container:
|
|
image: artifacthub/ah
|
|
options: --user root
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Run ah lint
|
|
working-directory: ./charts/artifact-hub
|
|
run: ah lint
|
|
|
|
linter-clomonitor:
|
|
runs-on: ubuntu-20.04
|
|
env:
|
|
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
|
container:
|
|
image: public.ecr.aws/clomonitor/linter:latest
|
|
options: --user root
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Run CloMonitor linter
|
|
run: clomonitor-linter --path . --url https://github.com/artifacthub/hub
|
|
|
|
tests-database:
|
|
runs-on: ubuntu-20.04
|
|
container:
|
|
image: artifacthub/db-tests
|
|
services:
|
|
postgres:
|
|
image: artifacthub/postgres
|
|
env:
|
|
POSTGRES_USER: tests
|
|
POSTGRES_PASSWORD: tests
|
|
POSTGRES_DB: tests
|
|
ports:
|
|
- 5432:5432
|
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Apply database migrations
|
|
working-directory: ./database/migrations
|
|
run: TERN_CONF=../../../.github/workflows/tern.conf PGPORT=${{ job.services.postgres.ports[5432] }} ./migrate.sh
|
|
- name: Install pgtap database extension
|
|
run: PGPASSWORD=tests psql -h postgres -p ${{ job.services.postgres.ports[5432] }} -U tests tests -c 'create extension pgtap;'
|
|
- name: Run database tests
|
|
working-directory: ./database/tests
|
|
run: PGPASSWORD=tests pg_prove --host postgres --dbname tests --username tests --verbose schema/*.sql functions/*/*.sql
|
|
|
|
tests-backend:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.22"
|
|
- name: Cache Go modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
- name: Install TensorFlow C library
|
|
run: |
|
|
FILENAME=libtensorflow-cpu-linux-x86_64-2.11.0.tar.gz
|
|
wget -q --no-check-certificate https://storage.googleapis.com/tensorflow/libtensorflow/${FILENAME}
|
|
sudo tar -C /usr/local -xzf ${FILENAME}
|
|
sudo ldconfig /usr/local/lib
|
|
- name: Run backend tests
|
|
run: go test -cover -race -v -mod=readonly ./...
|
|
|
|
tests-frontend:
|
|
runs-on: ubuntu-20.04
|
|
env:
|
|
NODE_OPTIONS: --max_old_space_size=4096
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Cache node modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ./web/node_modules
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- name: Install dependencies
|
|
working-directory: ./web
|
|
run: yarn install
|
|
- name: Run prettier
|
|
working-directory: ./web
|
|
run: yarn format:diff
|
|
- name: Run eslint
|
|
working-directory: ./web
|
|
run: yarn lint
|
|
- name: Run frontend tests
|
|
working-directory: ./web
|
|
run: yarn test --watchAll=false --passWithNoTests --verbose --maxWorkers=4
|
|
|
|
tests-widget:
|
|
runs-on: ubuntu-20.04
|
|
env:
|
|
NODE_OPTIONS: --max_old_space_size=4096
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Cache node modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ./widget/node_modules
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- name: Install dependencies
|
|
working-directory: ./widget
|
|
run: yarn install
|
|
- name: Run prettier
|
|
working-directory: ./widget
|
|
run: yarn format:diff
|
|
- name: Run eslint
|
|
working-directory: ./widget
|
|
run: yarn lint
|
|
- name: Run widget tests
|
|
working-directory: ./widget
|
|
run: yarn test --watchAll=false --passWithNoTests --verbose --maxWorkers=4
|
|
|
|
build-backend:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: "1.22"
|
|
- name: Cache Go modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-
|
|
- name: Install TensorFlow C library
|
|
run: |
|
|
FILENAME=libtensorflow-cpu-linux-x86_64-2.11.0.tar.gz
|
|
wget -q --no-check-certificate https://storage.googleapis.com/tensorflow/libtensorflow/${FILENAME}
|
|
sudo tar -C /usr/local -xzf ${FILENAME}
|
|
sudo ldconfig /usr/local/lib
|
|
- name: Build hub
|
|
working-directory: ./cmd/hub
|
|
run: go build -v
|
|
- name: Build scanner
|
|
working-directory: ./cmd/scanner
|
|
run: go build -v
|
|
- name: Build tracker
|
|
working-directory: ./cmd/tracker
|
|
run: go build -v
|
|
|
|
build-frontend:
|
|
runs-on: ubuntu-20.04
|
|
env:
|
|
NODE_OPTIONS: --max_old_space_size=4096
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Cache node modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ./web/node_modules
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- name: Install dependencies
|
|
working-directory: ./web
|
|
run: yarn install
|
|
- name: Build frontend
|
|
working-directory: ./web
|
|
run: yarn build
|
|
|
|
build-widget:
|
|
runs-on: ubuntu-20.04
|
|
env:
|
|
NODE_OPTIONS: --max_old_space_size=4096
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
- name: Cache node modules
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ./widget/node_modules
|
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-
|
|
- name: Install dependencies
|
|
working-directory: ./widget
|
|
run: yarn install
|
|
- name: Build widget
|
|
working-directory: ./widget
|
|
run: yarn build
|