ci: merge e2e workflow into testing.yml
ci: cache frontend build across jobs ci: ensure caches are saved with zstd work around https://github.com/actions/cache/issues/1169 ci: require unit tests for remote cacher - prevents unnecessary runs in case the unit tests already fail - starts the integration tests about 2 minutes earlier - should give some overall speedup to the CI run, because the long integration tests are run and finish earlier, and the cacher tests should still usually finish in time - does not save any computing resources, just provides quicker results when runners are not under high load
This commit is contained in:
parent
14b6f26aab
commit
f2a23c962a
|
@ -6,7 +6,7 @@ runs:
|
||||||
- uses: actions/cache@v4
|
- uses: actions/cache@v4
|
||||||
id: cache-backend
|
id: cache-backend
|
||||||
with:
|
with:
|
||||||
path: '/workspace/forgejo/forgejo/gitea'
|
path: ${{github.workspace}}/gitea
|
||||||
key: backend-build-${{ github.sha }}
|
key: backend-build-${{ github.sha }}
|
||||||
- if: steps.cache-backend.outputs.cache-hit != 'true'
|
- if: steps.cache-backend.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
|
|
|
@ -4,7 +4,8 @@ runs:
|
||||||
- name: setup user and permissions
|
- name: setup user and permissions
|
||||||
run: |
|
run: |
|
||||||
git config --add safe.directory '*'
|
git config --add safe.directory '*'
|
||||||
adduser --quiet --comment forgejo --disabled-password forgejo
|
# ignore if the user already exists (like with the playwright image)
|
||||||
|
adduser --quiet --comment forgejo --disabled-password forgejo || true
|
||||||
chown -R forgejo:forgejo .
|
chown -R forgejo:forgejo .
|
||||||
- uses: https://codeberg.org/fnetx/setup-cache-go@b2214eaf6fb44c7e8512c0f462a2c3ec31f86a73
|
- uses: https://codeberg.org/fnetx/setup-cache-go@b2214eaf6fb44c7e8512c0f462a2c3ec31f86a73
|
||||||
with:
|
with:
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
name: e2e
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- Makefile
|
|
||||||
- playwright.config.js
|
|
||||||
- .forgejo/workflows/e2e.yml
|
|
||||||
- tests/e2e/**
|
|
||||||
- web_src/js/**
|
|
||||||
- web_src/css/form.css
|
|
||||||
- templates/webhook/shared-settings.tmpl
|
|
||||||
- templates/org/team/new.tmpl
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test-e2e:
|
|
||||||
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
|
||||||
runs-on: docker
|
|
||||||
container:
|
|
||||||
image: 'code.forgejo.org/oci/playwright:latest'
|
|
||||||
steps:
|
|
||||||
- uses: https://code.forgejo.org/actions/checkout@v4
|
|
||||||
- uses: https://code.forgejo.org/actions/setup-go@v5
|
|
||||||
with:
|
|
||||||
go-version-file: "go.mod"
|
|
||||||
- run: |
|
|
||||||
git config --add safe.directory '*'
|
|
||||||
chown -R forgejo:forgejo .
|
|
||||||
- run: |
|
|
||||||
su forgejo -c 'make deps-frontend frontend deps-backend'
|
|
||||||
- run: |
|
|
||||||
su forgejo -c 'make backend'
|
|
||||||
- run: |
|
|
||||||
su forgejo -c 'make generate test-e2e-sqlite'
|
|
||||||
timeout-minutes: 40
|
|
||||||
env:
|
|
||||||
USE_REPO_TEST_DIR: 1
|
|
|
@ -36,6 +36,17 @@ jobs:
|
||||||
- run: make checks-frontend
|
- run: make checks-frontend
|
||||||
- run: make test-frontend-coverage
|
- run: make test-frontend-coverage
|
||||||
- run: make frontend
|
- run: make frontend
|
||||||
|
- name: Install zstd for cache saving
|
||||||
|
# works around https://github.com/actions/cache/issues/1169, because the
|
||||||
|
# consuming job has zstd and doesn't restore the cache otherwise
|
||||||
|
run: |
|
||||||
|
apt-get update -qq
|
||||||
|
apt-get -q install -qq -y zstd
|
||||||
|
- name: "Cache frontend build for playwright testing"
|
||||||
|
uses: actions/cache/save@v4
|
||||||
|
with:
|
||||||
|
path: ${{github.workspace}}/public/assets
|
||||||
|
key: frontend-build-${{ github.sha }}
|
||||||
test-unit:
|
test-unit:
|
||||||
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
|
@ -75,10 +86,35 @@ jobs:
|
||||||
RACE_ENABLED: 'true'
|
RACE_ENABLED: 'true'
|
||||||
TAGS: bindata
|
TAGS: bindata
|
||||||
TEST_ELASTICSEARCH_URL: http://elasticsearch:9200
|
TEST_ELASTICSEARCH_URL: http://elasticsearch:9200
|
||||||
test-remote-cacher:
|
test-e2e:
|
||||||
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
needs: [backend-checks, frontend-checks]
|
needs: [backend-checks, frontend-checks]
|
||||||
|
container:
|
||||||
|
image: 'code.forgejo.org/oci/playwright:latest'
|
||||||
|
steps:
|
||||||
|
- uses: https://code.forgejo.org/actions/checkout@v4
|
||||||
|
- uses: ./.forgejo/workflows-composite/setup-env
|
||||||
|
- name: "Restore frontend build"
|
||||||
|
uses: actions/cache/restore@v4
|
||||||
|
id: cache-frontend
|
||||||
|
with:
|
||||||
|
path: ${{github.workspace}}/public/assets
|
||||||
|
key: frontend-build-${{ github.sha }}
|
||||||
|
- name: "Build frontend (if not cached)"
|
||||||
|
if: steps.cache-frontend.outputs.cache-hit != 'true'
|
||||||
|
run: |
|
||||||
|
su forgejo -c 'make deps-frontend frontend'
|
||||||
|
- uses: ./.forgejo/workflows-composite/build-backend
|
||||||
|
- run: |
|
||||||
|
su forgejo -c 'make generate test-e2e-sqlite'
|
||||||
|
timeout-minutes: 40
|
||||||
|
env:
|
||||||
|
USE_REPO_TEST_DIR: 1
|
||||||
|
test-remote-cacher:
|
||||||
|
if: ${{ !startsWith(vars.ROLE, 'forgejo-') }}
|
||||||
|
runs-on: docker
|
||||||
|
needs: [backend-checks, frontend-checks, test-unit]
|
||||||
container:
|
container:
|
||||||
image: 'code.forgejo.org/oci/node:20-bookworm'
|
image: 'code.forgejo.org/oci/node:20-bookworm'
|
||||||
strategy:
|
strategy:
|
||||||
|
|
Loading…
Reference in New Issue