mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-10-31 20:44:07 +00:00
a56c000f60
To maximize the caching efficiency, all build jobs are executed as forgejo user. Hash is explicitly specified to avoid breaking changes.
219 lines
7.2 KiB
YAML
219 lines
7.2 KiB
YAML
name: testing
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- 'forgejo*'
|
|
- 'v*/forgejo*'
|
|
|
|
jobs:
|
|
backend-checks:
|
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
runs-on: docker
|
|
container:
|
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
|
steps:
|
|
- name: event info
|
|
run: |
|
|
cat <<'EOF'
|
|
${{ toJSON(github) }}
|
|
EOF
|
|
- uses: https://code.forgejo.org/actions/checkout@v3
|
|
- uses: ./.forgejo/workflows/composite/setup-env
|
|
- run: su forgejo -c 'make deps-backend deps-tools'
|
|
- run: su forgejo -c 'make --always-make -j$(nproc) lint-backend tidy-check swagger-check fmt-check swagger-validate' # ensure the "go-licenses" make target runs
|
|
- uses: ./.forgejo/workflows/composite/build-backend
|
|
frontend-checks:
|
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
runs-on: docker
|
|
container:
|
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
|
steps:
|
|
- uses: https://code.forgejo.org/actions/checkout@v3
|
|
- run: make deps-frontend
|
|
- run: make lint-frontend
|
|
- run: make checks-frontend
|
|
- run: make test-frontend-coverage
|
|
- run: make frontend
|
|
test-unit:
|
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
runs-on: docker
|
|
needs: [backend-checks, frontend-checks]
|
|
container:
|
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
|
services:
|
|
elasticsearch:
|
|
image: docker.io/bitnami/elasticsearch:7
|
|
env:
|
|
discovery.type: single-node
|
|
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
|
|
minio:
|
|
image: docker.io/bitnami/minio:2024.8.17
|
|
options: >-
|
|
--hostname gitea.minio
|
|
env:
|
|
MINIO_DOMAIN: minio
|
|
MINIO_ROOT_USER: 123456
|
|
MINIO_ROOT_PASSWORD: 12345678
|
|
steps:
|
|
- uses: https://code.forgejo.org/actions/checkout@v3
|
|
- uses: ./.forgejo/workflows/composite/setup-env
|
|
- name: install git >= 2.42
|
|
uses: ./.forgejo/workflows/composite/apt-install-from
|
|
with:
|
|
packages: git
|
|
- name: test release-notes-assistant.sh
|
|
run: |
|
|
apt-get -q install -qq -y jq
|
|
./release-notes-assistant.sh test_main
|
|
- uses: ./.forgejo/workflows/composite/build-backend
|
|
- run: |
|
|
su forgejo -c 'make test-backend test-check'
|
|
timeout-minutes: 50
|
|
env:
|
|
RACE_ENABLED: 'true'
|
|
TAGS: bindata
|
|
TEST_ELASTICSEARCH_URL: http://elasticsearch:9200
|
|
test-remote-cacher:
|
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
runs-on: docker
|
|
needs: [backend-checks, frontend-checks]
|
|
container:
|
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
|
strategy:
|
|
matrix:
|
|
cacher:
|
|
# redis
|
|
- image: docker.io/bitnami/redis:7.2
|
|
port: 6379
|
|
# redict
|
|
- image: registry.redict.io/redict:7.3.0-scratch
|
|
port: 6379
|
|
# valkey
|
|
- image: docker.io/bitnami/valkey:7.2
|
|
port: 6379
|
|
# garnet
|
|
- image: ghcr.io/microsoft/garnet-alpine:1.0.14
|
|
port: 6379
|
|
services:
|
|
cacher:
|
|
image: ${{ matrix.cacher.image }}
|
|
options: ${{ matrix.cacher.options }}
|
|
steps:
|
|
- uses: https://code.forgejo.org/actions/checkout@v3
|
|
- uses: ./.forgejo/workflows/composite/setup-env
|
|
- name: install git >= 2.42
|
|
uses: ./.forgejo/workflows/composite/apt-install-from
|
|
with:
|
|
packages: git
|
|
- uses: ./.forgejo/workflows/composite/build-backend
|
|
- run: |
|
|
su forgejo -c 'make test-remote-cacher test-check'
|
|
timeout-minutes: 50
|
|
env:
|
|
RACE_ENABLED: 'true'
|
|
TAGS: bindata
|
|
TEST_REDIS_SERVER: cacher:${{ matrix.cacher.port }}
|
|
test-mysql:
|
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
runs-on: docker
|
|
needs: [backend-checks, frontend-checks]
|
|
container:
|
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
|
services:
|
|
mysql:
|
|
image: 'docker.io/bitnami/mysql:8.4'
|
|
env:
|
|
ALLOW_EMPTY_PASSWORD: yes
|
|
MYSQL_DATABASE: testgitea
|
|
#
|
|
# See also https://codeberg.org/forgejo/forgejo/issues/976
|
|
#
|
|
MYSQL_EXTRA_FLAGS: --innodb-adaptive-flushing=OFF --innodb-buffer-pool-size=4G --innodb-log-buffer-size=128M --innodb-flush-log-at-trx-commit=0 --innodb-flush-log-at-timeout=30 --innodb-flush-method=nosync --innodb-fsync-threshold=1000000000
|
|
steps:
|
|
- uses: https://code.forgejo.org/actions/checkout@v3
|
|
- uses: ./.forgejo/workflows/composite/setup-env
|
|
- name: install dependencies & git >= 2.42
|
|
uses: ./.forgejo/workflows/composite/apt-install-from
|
|
with:
|
|
packages: git git-lfs
|
|
- uses: ./.forgejo/workflows/composite/build-backend
|
|
- run: |
|
|
su forgejo -c 'make test-mysql-migration test-mysql'
|
|
timeout-minutes: 50
|
|
env:
|
|
USE_REPO_TEST_DIR: 1
|
|
test-pgsql:
|
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
runs-on: docker
|
|
needs: [backend-checks, frontend-checks]
|
|
container:
|
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
|
services:
|
|
minio:
|
|
image: docker.io/bitnami/minio:2024.8.17
|
|
env:
|
|
MINIO_ROOT_USER: 123456
|
|
MINIO_ROOT_PASSWORD: 12345678
|
|
ldap:
|
|
image: docker.io/gitea/test-openldap:latest
|
|
pgsql:
|
|
image: 'code.forgejo.org/oci/postgres:15'
|
|
env:
|
|
POSTGRES_DB: test
|
|
POSTGRES_PASSWORD: postgres
|
|
steps:
|
|
- uses: https://code.forgejo.org/actions/checkout@v3
|
|
- uses: ./.forgejo/workflows/composite/setup-env
|
|
- name: install dependencies & git >= 2.42
|
|
uses: ./.forgejo/workflows/composite/apt-install-from
|
|
with:
|
|
packages: git git-lfs
|
|
- uses: ./.forgejo/workflows/composite/build-backend
|
|
- run: |
|
|
su forgejo -c 'make test-pgsql-migration test-pgsql'
|
|
timeout-minutes: 50
|
|
env:
|
|
RACE_ENABLED: true
|
|
USE_REPO_TEST_DIR: 1
|
|
TEST_LDAP: 1
|
|
test-sqlite:
|
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
runs-on: docker
|
|
needs: [backend-checks, frontend-checks]
|
|
container:
|
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
|
steps:
|
|
- uses: https://code.forgejo.org/actions/checkout@v3
|
|
- uses: ./.forgejo/workflows/composite/setup-env
|
|
- name: install dependencies & git >= 2.42
|
|
uses: ./.forgejo/workflows/composite/apt-install-from
|
|
with:
|
|
packages: git git-lfs
|
|
- uses: ./.forgejo/workflows/composite/build-backend
|
|
- run: |
|
|
su forgejo -c 'make test-sqlite-migration test-sqlite'
|
|
timeout-minutes: 50
|
|
env:
|
|
TAGS: sqlite sqlite_unlock_notify
|
|
RACE_ENABLED: true
|
|
TEST_TAGS: sqlite sqlite_unlock_notify
|
|
USE_REPO_TEST_DIR: 1
|
|
security-check:
|
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
runs-on: docker
|
|
needs:
|
|
- test-sqlite
|
|
- test-pgsql
|
|
- test-mysql
|
|
- test-remote-cacher
|
|
- test-unit
|
|
container:
|
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
|
steps:
|
|
- uses: https://code.forgejo.org/actions/checkout@v3
|
|
- uses: ./.forgejo/workflows/composite/setup-env
|
|
- run: su forgejo -c 'make deps-backend deps-tools'
|
|
- run: su forgejo -c 'make security-check'
|