mirror of
https://github.com/strapi/strapi.git
synced 2025-06-27 00:41:25 +00:00

chore: commit yarn release chore: don't use -s fix: eslint deps https://eslint.org/docs/latest/extend/shareable-configs#publishing-a-shareable-config chore: fix eslint chore: remove -s fix: lint chore: yarn 3 amends chore: dont use npm run all chore: fix securitylockfile action chore: update lockfile post rebase Revert "Delete index.js" This reverts commit e6009ec7cf13fb9edd93a7bf820b0f50af5dcb54. Delete index.js chore: remove validate-https because how yarn3 works chore: remove validate-https chore: use same time of cache everywhere
366 lines
12 KiB
YAML
366 lines
12 KiB
YAML
name: 'Tests'
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
pull_request:
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
- '**.mdx?'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref_name }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read # to fetch code (actions/checkout)
|
|
actions: read
|
|
|
|
jobs:
|
|
lint:
|
|
name: 'lint (node: ${{ matrix.node }})'
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- uses: nrwl/nx-set-shas@v3
|
|
- run: yarn install --immutable
|
|
- name: Run build:ts
|
|
run: yarn nx run-many --target=build:ts --nx-ignore-cycles
|
|
- name: Run lint
|
|
run: yarn nx affected --target=lint --parallel --nx-ignore-cycles
|
|
|
|
unit_back:
|
|
name: 'unit_back (node: ${{ matrix.node }})'
|
|
needs: [lint]
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- uses: nrwl/nx-set-shas@v3
|
|
- run: yarn install --immutable
|
|
- name: Run build:ts
|
|
run: yarn nx run-many --target=build:ts --nx-ignore-cycles
|
|
- name: Run tests
|
|
run: yarn nx affected --target=test:unit --nx-ignore-cycles
|
|
|
|
unit_front:
|
|
name: 'unit_front (node: ${{ matrix.node }})'
|
|
needs: [lint]
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
node: [18]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- uses: nrwl/nx-set-shas@v3
|
|
- run: yarn install --immutable
|
|
- name: Run test
|
|
run: yarn nx affected --target=test:front --nx-ignore-cycles
|
|
|
|
build:
|
|
name: 'build (node: ${{ matrix.node }})'
|
|
needs: [lint, unit_front]
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- run: yarn install --immutable
|
|
- name: Build
|
|
run: yarn build --projects=@strapi/admin,@strapi/helper-plugin
|
|
|
|
api_ce_pg:
|
|
runs-on: ubuntu-latest
|
|
needs: [lint, unit_back, unit_front]
|
|
name: '[CE] API Integration (postgres, node: ${{ matrix.node }})'
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
services:
|
|
postgres:
|
|
# Docker Hub image
|
|
image: postgres
|
|
# Provide the password for postgres
|
|
env:
|
|
POSTGRES_USER: strapi
|
|
POSTGRES_PASSWORD: strapi
|
|
POSTGRES_DB: strapi_test
|
|
# Set health checks to wait until postgres has started
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
-v /__w/.github/workflows/db/postgres:/docker-entrypoint-initdb.d
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 5432:5432
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- run: yarn install --immutable
|
|
- uses: ./.github/actions/run-api-tests
|
|
with:
|
|
dbOptions: '--dbclient=postgres --dbhost=localhost --dbport=5432 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi'
|
|
|
|
api_ce_mysql:
|
|
runs-on: ubuntu-latest
|
|
needs: [lint, unit_back, unit_front]
|
|
name: '[CE] API Integration (mysql, node: ${{ matrix.node }})'
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
services:
|
|
mysql:
|
|
image: bitnami/mysql:latest
|
|
env:
|
|
MYSQL_ROOT_PASSWORD: strapi
|
|
MYSQL_USER: strapi
|
|
MYSQL_PASSWORD: strapi
|
|
MYSQL_DATABASE: strapi_test
|
|
MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
|
|
options: >-
|
|
--health-cmd="mysqladmin ping"
|
|
--health-interval=10s
|
|
--health-timeout=5s
|
|
--health-retries=3
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 3306:3306
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- run: yarn install --immutable
|
|
- uses: ./.github/actions/run-api-tests
|
|
with:
|
|
dbOptions: '--dbclient=mysql --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi'
|
|
|
|
api_ce_mysql_5:
|
|
runs-on: ubuntu-latest
|
|
needs: [lint, unit_back, unit_front]
|
|
name: '[CE] API Integration (mysql:5 , node: ${{ matrix.node }})'
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
services:
|
|
mysql:
|
|
image: bitnami/mysql:5.7
|
|
env:
|
|
MYSQL_ROOT_PASSWORD: strapi
|
|
MYSQL_USER: strapi
|
|
MYSQL_PASSWORD: strapi
|
|
MYSQL_DATABASE: strapi_test
|
|
options: >-
|
|
--health-cmd="mysqladmin ping"
|
|
--health-interval=10s
|
|
--health-timeout=5s
|
|
--health-retries=3
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 3306:3306
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- run: yarn install --immutable
|
|
- uses: ./.github/actions/run-api-tests
|
|
with:
|
|
dbOptions: '--dbclient=mysql --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi'
|
|
|
|
api_ce_sqlite:
|
|
runs-on: ubuntu-latest
|
|
needs: [lint, unit_back, unit_front]
|
|
name: '[CE] API Integration (sqlite: ${{ matrix.sqlite_pkg }}, node: ${{ matrix.node }})'
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
sqlite_pkg: ['better-sqlite3', 'sqlite3', '@vscode/sqlite3']
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- run: yarn install --immutable
|
|
- uses: ./.github/actions/run-api-tests
|
|
env:
|
|
SQLITE_PKG: ${{ matrix.sqlite_pkg }}
|
|
with:
|
|
dbOptions: '--dbclient=sqlite-legacy --dbfile=./tmp/data.db'
|
|
|
|
# EE
|
|
api_ee_pg:
|
|
runs-on: ubuntu-latest
|
|
needs: [lint, unit_back, unit_front]
|
|
name: '[EE] API Integration (postgres, node: ${{ matrix.node }})'
|
|
if: github.event.pull_request.head.repo.full_name == github.repository && !(github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]')
|
|
env:
|
|
STRAPI_LICENSE: ${{ secrets.strapiLicense }}
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
services:
|
|
postgres:
|
|
# Docker Hub image
|
|
image: postgres
|
|
# Provide the password for postgres
|
|
env:
|
|
POSTGRES_USER: strapi
|
|
POSTGRES_PASSWORD: strapi
|
|
POSTGRES_DB: strapi_test
|
|
# Set health checks to wait until postgres has started
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
-v /__w/.github/workflows/db/postgres:/docker-entrypoint-initdb.d
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 5432:5432
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- run: yarn install --immutable
|
|
- uses: ./.github/actions/run-api-tests
|
|
with:
|
|
dbOptions: '--dbclient=postgres --dbhost=localhost --dbport=5432 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi'
|
|
runEE: true
|
|
|
|
api_ee_mysql:
|
|
runs-on: ubuntu-latest
|
|
needs: [lint, unit_back, unit_front]
|
|
name: '[EE] API Integration (mysql, node: ${{ matrix.node }})'
|
|
if: github.event.pull_request.head.repo.full_name == github.repository && !(github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]')
|
|
env:
|
|
STRAPI_LICENSE: ${{ secrets.strapiLicense }}
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
services:
|
|
mysql:
|
|
image: bitnami/mysql:latest
|
|
env:
|
|
MYSQL_ROOT_PASSWORD: strapi
|
|
MYSQL_USER: strapi
|
|
MYSQL_PASSWORD: strapi
|
|
MYSQL_DATABASE: strapi_test
|
|
MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password
|
|
options: >-
|
|
--health-cmd="mysqladmin ping"
|
|
--health-interval=10s
|
|
--health-timeout=5s
|
|
--health-retries=3
|
|
ports:
|
|
# Maps tcp port 5432 on service container to the host
|
|
- 3306:3306
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- run: yarn install --immutable
|
|
- uses: ./.github/actions/run-api-tests
|
|
with:
|
|
dbOptions: '--dbclient=mysql --dbhost=localhost --dbport=3306 --dbname=strapi_test --dbusername=strapi --dbpassword=strapi'
|
|
runEE: true
|
|
|
|
api_ee_sqlite:
|
|
runs-on: ubuntu-latest
|
|
needs: [lint, unit_back, unit_front]
|
|
name: '[EE] API Integration (sqlite: ${{ matrix.sqlite_pkg }}, node: ${{ matrix.node }})'
|
|
if: github.event.pull_request.head.repo.full_name == github.repository && !(github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]')
|
|
env:
|
|
STRAPI_LICENSE: ${{ secrets.strapiLicense }}
|
|
strategy:
|
|
matrix:
|
|
node: [14, 16, 18]
|
|
sqlite_pkg: ['better-sqlite3', 'sqlite3', '@vscode/sqlite3']
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: ${{ matrix.node }}
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: '**/node_modules'
|
|
key: ${{ runner.os }}-${{ matrix.node }}-${{ hashFiles('**/yarn.lock') }}
|
|
- run: yarn install --immutable
|
|
- uses: ./.github/actions/run-api-tests
|
|
env:
|
|
SQLITE_PKG: ${{ matrix.sqlite_pkg }}
|
|
with:
|
|
dbOptions: '--dbclient=sqlite --dbfile=./tmp/data.db'
|
|
runEE: true
|