summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortechknowlogick <techknowlogick@gitea.io>2023-05-04 04:04:02 +0200
committerGitHub <noreply@github.com>2023-05-04 04:04:02 +0200
commitf7f078213297ee870301d1282366d2f0b5d9de2b (patch)
tree8e7c0c1222269061f368e89b4a7a9116a3ea0adb
parentFix intermittent CI failure in EmptyQueue (#23753) (diff)
downloadforgejo-f7f078213297ee870301d1282366d2f0b5d9de2b.tar.xz
forgejo-f7f078213297ee870301d1282366d2f0b5d9de2b.zip
Use Actions for DB & E2E tests (#24494)
following https://github.com/go-gitea/gitea/pull/24314 and https://github.com/go-gitea/gitea/pull/24434, this PR moves drone cron pipelines to (GitHub) Actions. As these are mostly compatible with Gitea Actions, when we start to dogfood, these will already be migrated. --------- Co-authored-by: silverwind <me@silverwind.io>
-rw-r--r--.drone.yml846
-rw-r--r--.github/workflows/cron-licenses.yml4
-rw-r--r--.github/workflows/cron-translations.yml4
-rw-r--r--.github/workflows/pull-compliance.yml133
-rw-r--r--.github/workflows/pull-compliance_docs.yml2
-rw-r--r--.github/workflows/pull-db_test.yml260
-rw-r--r--.github/workflows/pull-docker_dryrun.yml2
-rw-r--r--.github/workflows/pull-e2e.yml28
-rw-r--r--.github/workflows/push-publish_docs.yml2
9 files changed, 428 insertions, 853 deletions
diff --git a/.drone.yml b/.drone.yml
index 459536621b..7810d3d104 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -1,752 +1,6 @@
---
kind: pipeline
type: docker
-name: compliance
-
-platform:
- os: linux
- arch: amd64
-
-trigger:
- event:
- - pull_request
- paths:
- exclude:
- - "docs/**"
- - "*.md"
-
-volumes:
- - name: deps
- temp: {}
-
-steps:
- - name: deps-frontend
- image: node:18
- pull: always
- commands:
- - make deps-frontend
-
- - name: deps-backend
- image: gitea/test_env:linux-1.20-amd64
- pull: always
- commands:
- - make deps-backend
- - make deps-tools
- volumes:
- - name: deps
- path: /go
-
- - name: lint-frontend
- image: node:18
- commands:
- - make lint-frontend
- depends_on: [deps-frontend]
-
- - name: lint-backend
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- pull: always
- commands:
- - make lint-backend
- environment:
- GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
- GOSUMDB: sum.golang.org
- TAGS: bindata sqlite sqlite_unlock_notify
- depends_on: [deps-backend]
- volumes:
- - name: deps
- path: /go
-
- - name: lint-backend-windows
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- commands:
- - make lint-go-windows lint-go-vet
- environment:
- GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
- GOSUMDB: sum.golang.org
- TAGS: bindata sqlite sqlite_unlock_notify
- GOOS: windows
- GOARCH: amd64
- depends_on: [deps-backend]
- volumes:
- - name: deps
- path: /go
-
- - name: lint-backend-gogit
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- commands:
- - make lint-backend
- environment:
- GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
- GOSUMDB: sum.golang.org
- TAGS: bindata gogit sqlite sqlite_unlock_notify
- depends_on: [deps-backend]
- volumes:
- - name: deps
- path: /go
-
- - name: checks-frontend
- image: node:18
- commands:
- - make checks-frontend
- depends_on: [deps-frontend]
-
- - name: checks-backend
- image: gitea/test_env:linux-1.20-amd64
- commands:
- - make --always-make checks-backend # ensure the 'go-licenses' make target runs
- depends_on: [deps-backend]
- volumes:
- - name: deps
- path: /go
-
- - name: test-frontend
- image: node:18
- commands:
- - make test-frontend
- depends_on: [lint-frontend]
-
- - name: build-frontend
- image: node:18
- commands:
- - make frontend
- depends_on: [deps-frontend]
-
- - name: build-backend-no-gcc
- image: gitea/test_env:linux-1.19-amd64 # this step is kept as the lowest version of golang that we support
- pull: always
- environment:
- GOPROXY: https://goproxy.io
- commands:
- - go build -o gitea_no_gcc # test if build succeeds without the sqlite tag
- depends_on: [deps-backend, checks-backend]
- volumes:
- - name: deps
- path: /go
-
- - name: build-backend-arm64
- image: gitea/test_env:linux-1.20-amd64
- environment:
- GOPROXY: https://goproxy.io
- GOOS: linux
- GOARCH: arm64
- TAGS: bindata gogit
- commands:
- - make backend # test cross compile
- - rm ./gitea # clean
- depends_on: [deps-backend, checks-backend]
- volumes:
- - name: deps
- path: /go
-
- - name: build-backend-windows
- image: gitea/test_env:linux-1.20-amd64
- environment:
- GOPROXY: https://goproxy.io
- GOOS: windows
- GOARCH: amd64
- TAGS: bindata gogit
- commands:
- - go build -o gitea_windows
- depends_on: [deps-backend, checks-backend]
- volumes:
- - name: deps
- path: /go
-
- - name: build-backend-386
- image: gitea/test_env:linux-1.20-amd64
- environment:
- GOPROXY: https://goproxy.io
- GOOS: linux
- GOARCH: 386
- commands:
- - go build -o gitea_linux_386 # test if compatible with 32 bit
- depends_on: [deps-backend, checks-backend]
- volumes:
- - name: deps
- path: /go
-
----
-kind: pipeline
-type: docker
-name: testing-pgsql
-
-platform:
- os: linux
- arch: amd64
-
-depends_on:
- - compliance
-
-trigger:
- event:
- - pull_request
- paths:
- exclude:
- - "docs/**"
-
-volumes:
- - name: deps
- temp: {}
-
-services:
- - name: pgsql
- pull: default
- image: postgres:15
- environment:
- POSTGRES_DB: test
- POSTGRES_PASSWORD: postgres
-
- - name: ldap
- image: gitea/test-openldap:latest
- pull: always
-
- - name: minio
- image: minio/minio:RELEASE.2021-03-12T00-00-47Z
- pull: always
- commands:
- - minio server /data
- environment:
- MINIO_ACCESS_KEY: 123456
- MINIO_SECRET_KEY: 12345678
-
-steps:
- - name: fetch-tags
- image: docker:git
- pull: always
- commands:
- - git fetch --tags --force
- when:
- event:
- exclude:
- - pull_request
-
- - name: deps-backend
- image: gitea/test_env:linux-1.20-amd64
- pull: always
- commands:
- - make deps-backend
- volumes:
- - name: deps
- path: /go
-
- - name: prepare-test-env
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- pull: always
- commands:
- - ./build/test-env-prepare.sh
-
- - name: build
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - ./build/test-env-check.sh
- - make backend
- environment:
- GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
- GOSUMDB: sum.golang.org
- TAGS: bindata
- depends_on: [deps-backend, prepare-test-env]
- volumes:
- - name: deps
- path: /go
-
- - name: test-pgsql
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - timeout -s ABRT 50m make test-pgsql-migration test-pgsql
- environment:
- GOPROXY: https://goproxy.io
- TAGS: bindata gogit
- RACE_ENABLED: true
- TEST_TAGS: gogit
- TEST_LDAP: 1
- USE_REPO_TEST_DIR: 1
- depends_on: [build]
- volumes:
- - name: deps
- path: /go
-
----
-kind: pipeline
-type: docker
-name: testing-mysql
-
-platform:
- os: linux
- arch: amd64
-
-depends_on:
- - compliance
-
-trigger:
- event:
- - pull_request
- paths:
- exclude:
- - "docs/**"
-
-volumes:
- - name: deps
- temp: {}
-
-services:
- - name: mysql
- image: mysql:5.7
- pull: always
- environment:
- MYSQL_ALLOW_EMPTY_PASSWORD: yes
- MYSQL_DATABASE: test
-
- - name: elasticsearch
- image: elasticsearch:7.5.0
- pull: always
- environment:
- discovery.type: single-node
-
- - name: smtpimap
- image: tabascoterrier/docker-imap-devel:latest
- pull: always
-
-steps:
- - name: fetch-tags
- image: docker:git
- pull: always
- commands:
- - git fetch --tags --force
- when:
- event:
- exclude:
- - pull_request
-
- - name: deps-backend
- image: gitea/test_env:linux-1.20-amd64
- pull: always
- commands:
- - make deps-backend
- volumes:
- - name: deps
- path: /go
-
- - name: prepare-test-env
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- pull: always
- commands:
- - ./build/test-env-prepare.sh
-
- - name: build
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - ./build/test-env-check.sh
- - make backend
- environment:
- GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
- GOSUMDB: sum.golang.org
- TAGS: bindata
- depends_on: [deps-backend, prepare-test-env]
- volumes:
- - name: deps
- path: /go
-
- - name: unit-test
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - make unit-test-coverage test-check
- environment:
- GOPROXY: https://goproxy.io
- TAGS: bindata
- RACE_ENABLED: true
- GITHUB_READ_TOKEN:
- from_secret: github_read_token
- depends_on: [deps-backend, prepare-test-env]
- volumes:
- - name: deps
- path: /go
-
- - name: unit-test-gogit
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - make unit-test-coverage test-check
- environment:
- GOPROXY: https://goproxy.io
- TAGS: bindata gogit
- RACE_ENABLED: true
- GITHUB_READ_TOKEN:
- from_secret: github_read_token
- depends_on: [deps-backend, prepare-test-env]
- volumes:
- - name: deps
- path: /go
-
- - name: test-mysql
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - make test-mysql-migration integration-test-coverage
- environment:
- GOPROXY: https://goproxy.io
- TAGS: bindata
- RACE_ENABLED: true
- USE_REPO_TEST_DIR: 1
- TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200"
- depends_on: [build]
- volumes:
- - name: deps
- path: /go
-
- - name: generate-coverage
- image: gitea/test_env:linux-1.20-amd64
- commands:
- - make coverage
- environment:
- GOPROXY: https://goproxy.io
- TAGS: bindata
- depends_on: [unit-test, test-mysql]
- when:
- branch:
- - main
- event:
- - push
- - pull_request
-
- - name: coverage-codecov
- image: woodpeckerci/plugin-codecov:next-alpine
- pull: always
- settings:
- files:
- - coverage.all
- token:
- from_secret: codecov_token
- depends_on: [generate-coverage]
- when:
- branch:
- - main
- event:
- - push
- - pull_request
-
----
-kind: pipeline
-type: docker
-name: testing-mysql8
-
-platform:
- os: linux
- arch: amd64
-
-depends_on:
- - compliance
-
-trigger:
- event:
- - pull_request
- paths:
- exclude:
- - "docs/**"
-
-volumes:
- - name: deps
- temp: {}
-
-services:
- - name: mysql8
- image: mysql:8
- pull: always
- environment:
- MYSQL_ALLOW_EMPTY_PASSWORD: yes
- MYSQL_DATABASE: testgitea
-
-steps:
- - name: fetch-tags
- image: docker:git
- pull: always
- commands:
- - git fetch --tags --force
- when:
- event:
- exclude:
- - pull_request
-
- - name: deps-backend
- image: gitea/test_env:linux-1.20-amd64
- pull: always
- commands:
- - make deps-backend
- volumes:
- - name: deps
- path: /go
-
- - name: prepare-test-env
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- pull: always
- commands:
- - ./build/test-env-prepare.sh
-
- - name: build
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - ./build/test-env-check.sh
- - make backend
- environment:
- GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
- GOSUMDB: sum.golang.org
- TAGS: bindata
- depends_on: [deps-backend, prepare-test-env]
- volumes:
- - name: deps
- path: /go
-
- - name: test-mysql8
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - timeout -s ABRT 50m make test-mysql8-migration test-mysql8
- environment:
- GOPROXY: https://goproxy.io
- TAGS: bindata
- USE_REPO_TEST_DIR: 1
- depends_on: [build]
- volumes:
- - name: deps
- path: /go
-
----
-kind: pipeline
-type: docker
-name: testing-mssql
-
-platform:
- os: linux
- arch: amd64
-
-depends_on:
- - compliance
-
-trigger:
- event:
- - pull_request
- paths:
- exclude:
- - "docs/**"
-
-volumes:
- - name: deps
- temp: {}
-
-services:
- - name: mssql
- image: mcr.microsoft.com/mssql/server:latest
- pull: always
- environment:
- ACCEPT_EULA: Y
- MSSQL_PID: Standard
- SA_PASSWORD: MwantsaSecurePassword1
-
-steps:
- - name: fetch-tags
- image: docker:git
- pull: always
- commands:
- - git fetch --tags --force
- when:
- event:
- exclude:
- - pull_request
-
- - name: deps-backend
- image: gitea/test_env:linux-1.20-amd64
- pull: always
- commands:
- - make deps-backend
- volumes:
- - name: deps
- path: /go
-
- - name: prepare-test-env
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- pull: always
- commands:
- - ./build/test-env-prepare.sh
-
- - name: build
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - ./build/test-env-check.sh
- - make backend
- environment:
- GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
- GOSUMDB: sum.golang.org
- TAGS: bindata
- depends_on: [deps-backend, prepare-test-env]
- volumes:
- - name: deps
- path: /go
-
- - name: test-mssql
- image: gitea/test_env:linux-1.20-amd64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - make test-mssql-migration test-mssql
- environment:
- GOPROXY: https://goproxy.io
- TAGS: bindata
- USE_REPO_TEST_DIR: 1
- depends_on: [build]
- volumes:
- - name: deps
- path: /go
-
----
-kind: pipeline
-name: testing-sqlite
-
-platform:
- os: linux
- arch: arm64
-
-depends_on:
- - compliance
-
-trigger:
- event:
- - pull_request
- paths:
- exclude:
- - "docs/**"
-
-volumes:
- - name: deps
- temp: {}
-
-steps:
- - name: fetch-tags
- image: docker:git
- pull: always
- commands:
- - git fetch --tags --force
- when:
- event:
- exclude:
- - pull_request
-
- - name: deps-backend
- image: gitea/test_env:linux-1.20-arm64
- pull: always
- commands:
- - make deps-backend
- volumes:
- - name: deps
- path: /go
-
- - name: prepare-test-env
- image: gitea/test_env:linux-1.20-arm64 # https://gitea.com/gitea/test-env
- pull: always
- commands:
- - ./build/test-env-prepare.sh
-
- - name: build
- image: gitea/test_env:linux-1.20-arm64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - ./build/test-env-check.sh
- - make backend
- environment:
- GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
- GOSUMDB: sum.golang.org
- TAGS: bindata gogit sqlite sqlite_unlock_notify
- depends_on: [deps-backend, prepare-test-env]
- volumes:
- - name: deps
- path: /go
-
- - name: test-sqlite
- image: gitea/test_env:linux-1.20-arm64 # https://gitea.com/gitea/test-env
- user: gitea
- commands:
- - timeout -s ABRT 50m make test-sqlite-migration test-sqlite
- environment:
- GOPROXY: https://goproxy.io
- TAGS: bindata gogit sqlite sqlite_unlock_notify
- RACE_ENABLED: true
- TEST_TAGS: gogit sqlite sqlite_unlock_notify
- USE_REPO_TEST_DIR: 1
- depends_on: [build]
- volumes:
- - name: deps
- path: /go
-
----
-kind: pipeline
-type: docker
-name: testing-e2e
-
-platform:
- os: linux
- arch: amd64
-
-depends_on:
- - compliance
-
-trigger:
- event:
- - pull_request
- paths:
- exclude:
- - "docs/**"
-
-volumes:
- - name: deps
- temp: {}
-
-steps:
- - name: deps-frontend
- image: node:18
- pull: always
- commands:
- - make deps-frontend
-
- - name: build-frontend
- image: node:18
- commands:
- - make frontend
- depends_on: [deps-frontend]
-
- - name: deps-backend
- image: gitea/test_env:linux-1.20-amd64
- pull: always
- commands:
- - make deps-backend
- volumes:
- - name: deps
- path: /go
-
- # TODO: We should probably build all dependencies into a test image
- - name: test-e2e
- image: mcr.microsoft.com/playwright:v1.32.3-focal
- commands:
- - apt-get -qq update && apt-get -qqy install jq build-essential
- - curl -fsSL "https://go.dev/dl/$(curl -s 'https://go.dev/dl/?mode=json' | jq -r '.[].version' | sort -Vr | head -1).linux-amd64.tar.gz" | tar -xz -C /usr/local
- - groupadd --gid 1001 gitea && useradd -m --gid 1001 --uid 1001 gitea
- - ./build/test-env-prepare.sh
- - su gitea bash -c "export PATH=$PATH:/usr/local/go/bin && timeout -s ABRT 40m make test-e2e-sqlite"
- environment:
- GOPROXY: https://goproxy.io
- GOSUMDB: sum.golang.org
- USE_REPO_TEST_DIR: 1
- DEBIAN_FRONTEND: noninteractive
- depends_on: [build-frontend, deps-backend]
- volumes:
- - name: deps
- path: /go
-
----
-kind: pipeline
-type: docker
name: release-latest
platform:
@@ -767,13 +21,6 @@ trigger:
exclude:
- "docs/**"
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
volumes:
- name: deps
temp: {}
@@ -902,13 +149,6 @@ trigger:
event:
- tag
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
volumes:
- name: deps
temp: {}
@@ -1013,22 +253,12 @@ platform:
os: linux
arch: amd64
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
trigger:
ref:
include:
- "refs/tags/**"
exclude:
- "refs/tags/**-rc*"
- event:
- exclude:
- - cron
paths:
exclude:
- "docs/**"
@@ -1093,19 +323,9 @@ platform:
os: linux
arch: amd64
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
trigger:
ref:
- "refs/tags/**-rc*"
- event:
- exclude:
- - cron
paths:
exclude:
- "docs/**"
@@ -1168,19 +388,9 @@ platform:
os: linux
arch: amd64
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
trigger:
ref:
- refs/heads/main
- event:
- exclude:
- - cron
steps:
- name: fetch-tags
@@ -1241,19 +451,9 @@ platform:
os: linux
arch: amd64
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
trigger:
ref:
- "refs/heads/release/v*"
- event:
- exclude:
- - cron
steps:
- name: fetch-tags
@@ -1315,22 +515,12 @@ platform:
os: linux
arch: arm64
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
trigger:
ref:
include:
- "refs/tags/**"
exclude:
- "refs/tags/**-rc*"
- event:
- exclude:
- - cron
paths:
exclude:
- "docs/**"
@@ -1395,19 +585,9 @@ platform:
os: linux
arch: arm64
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
trigger:
ref:
- "refs/tags/**-rc*"
- event:
- exclude:
- - cron
paths:
exclude:
- "docs/**"
@@ -1470,19 +650,9 @@ platform:
os: linux
arch: arm64
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
trigger:
ref:
- refs/heads/main
- event:
- exclude:
- - cron
paths:
exclude:
- "docs/**"
@@ -1546,19 +716,9 @@ platform:
os: linux
arch: arm64
-depends_on:
- - testing-mysql
- - testing-mysql8
- - testing-mssql
- - testing-pgsql
- - testing-sqlite
-
trigger:
ref:
- "refs/heads/release/v*"
- event:
- exclude:
- - cron
steps:
- name: fetch-tags
@@ -1647,9 +807,6 @@ steps:
trigger:
ref:
- "refs/tags/**"
- event:
- exclude:
- - cron
paths:
exclude:
- "docs/**"
@@ -1697,9 +854,6 @@ trigger:
ref:
- refs/heads/main
- "refs/heads/release/v*"
- event:
- exclude:
- - cron
paths:
exclude:
- "docs/**"
diff --git a/.github/workflows/cron-licenses.yml b/.github/workflows/cron-licenses.yml
index 116b8dd095..7239078710 100644
--- a/.github/workflows/cron-licenses.yml
+++ b/.github/workflows/cron-licenses.yml
@@ -1,10 +1,10 @@
+name: "Cron: Update licenses and gitignores"
+
on:
schedule:
# weekly on Monday at 0:07 UTC
- cron: "7 0 * * 1"
-name: Update licenses and gitignores
-
jobs:
cron:
runs-on: ubuntu-latest
diff --git a/.github/workflows/cron-translations.yml b/.github/workflows/cron-translations.yml
index 31262fd3dd..c83450d2e6 100644
--- a/.github/workflows/cron-translations.yml
+++ b/.github/workflows/cron-translations.yml
@@ -1,9 +1,9 @@
+name: "Cron: Pull translations from Crowdin"
+
on:
schedule:
- cron: "7 0 * * *" # every day at 0:07 UTC
-name: Pull translations from Crowdin
-
jobs:
crowdin_pull:
runs-on: ubuntu-latest
diff --git a/.github/workflows/pull-compliance.yml b/.github/workflows/pull-compliance.yml
new file mode 100644
index 0000000000..1239b9caa7
--- /dev/null
+++ b/.github/workflows/pull-compliance.yml
@@ -0,0 +1,133 @@
+name: "Pull: Compliance Tests"
+
+on: [pull_request]
+
+jobs:
+ lint_basic:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20'
+ - name: deps-backend
+ run: make deps-backend deps-tools
+ - name: lint backend
+ run: make lint-backend
+ env:
+ GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
+ GOSUMDB: sum.golang.org
+ TAGS: bindata sqlite sqlite_unlock_notify
+ lint_windows:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20'
+ - name: deps-backend
+ run: make deps-backend deps-tools
+ - name: lint-backend-windows
+ run: make lint-go-windows lint-go-vet
+ env:
+ GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
+ GOSUMDB: sum.golang.org
+ TAGS: bindata sqlite sqlite_unlock_notify
+ GOOS: windows
+ GOARCH: amd64
+ lint_gogit:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20'
+ - name: deps-backend
+ run: make deps-backend deps-tools
+ - name: lint-backend-gogit
+ run: make lint-backend
+ env:
+ GOPROXY: https://goproxy.io # proxy.golang.org is blocked in China, this proxy is not
+ GOSUMDB: sum.golang.org
+ TAGS: bindata gogit sqlite sqlite_unlock_notify
+ - name: checks backend
+ run: make --always-make checks-backend # ensure the 'go-licenses' make target runs
+ check_backend:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20'
+ - name: deps-backend
+ run: make deps-backend deps-tools
+ - name: checks backend
+ run: make --always-make checks-backend # ensure the 'go-licenses' make target runs
+ frontend:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18
+ - name: deps-frontend
+ run: make deps-frontend
+ - name: lint frontend
+ run: make lint-frontend
+ - name: checks frontend
+ run: make checks-frontend
+ - name: test frontend
+ run: make test-frontend
+ backend:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20'
+ - name: setup node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18
+ - name: deps-backend
+ run: make deps-backend deps-tools
+ - name: deps-frontend
+ run: make deps-frontend
+ - name: build frontend
+ run: make frontend
+ - name: build-backend-no-gcc
+ run: go build -o gitea_no_gcc # test if build succeeds without the sqlite tag
+ env:
+ GOPROXY: https://goproxy.io
+ - name: build-backend-arm64
+ run: make backend # test cross compile
+ env:
+ GOPROXY: https://goproxy.io
+ GOOS: linux
+ GOARCH: arm64
+ TAGS: bindata gogit
+ - name: build-backend-windows
+ run: go build -o gitea_windows
+ env:
+ GOPROXY: https://goproxy.io
+ GOOS: windows
+ GOARCH: amd64
+ TAGS: bindata gogit
+ - name: build-backend-386
+ run: go build -o gitea_linux_386 # test if compatible with 32 bit
+ env:
+ GOPROXY: https://goproxy.io
+ GOOS: linux
+ GOARCH: 386
diff --git a/.github/workflows/pull-compliance_docs.yml b/.github/workflows/pull-compliance_docs.yml
index e3c3a42541..679e925515 100644
--- a/.github/workflows/pull-compliance_docs.yml
+++ b/.github/workflows/pull-compliance_docs.yml
@@ -1,4 +1,4 @@
-name: Compliance testing for documentation
+name: "Pull: Compliance testing for documentation"
on:
pull_request:
diff --git a/.github/workflows/pull-db_test.yml b/.github/workflows/pull-db_test.yml
new file mode 100644
index 0000000000..3cae4df039
--- /dev/null
+++ b/.github/workflows/pull-db_test.yml
@@ -0,0 +1,260 @@
+name: "Pull: Database Tests"
+
+on: [pull_request]
+
+jobs:
+ # PostgreSQL Tests
+ db_pgsql_test:
+ runs-on: ubuntu-latest
+ services:
+ pgsql:
+ image: postgres:15
+ env:
+ POSTGRES_DB: test
+ POSTGRES_PASSWORD: postgres
+ ports:
+ - "5432:5432"
+ ldap:
+ image: gitea/test-openldap:latest
+ ports:
+ - "389:389"
+ - "636:636"
+ minio:
+ # as github actions doesn't support "entrypoint", we need to use a non-official image
+ # that has a custom entrypoint set to "minio server /data"
+ image: bitnami/minio:2021.3.17
+ env:
+ MINIO_ACCESS_KEY: 123456
+ MINIO_SECRET_KEY: 12345678
+ ports:
+ - "9000:9000"
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20.0'
+ - name: Add hosts to /etc/hosts
+ run: echo "127.0.0.1 pgsql ldap minio" | sudo tee -a /etc/hosts
+ - name: install dependencies
+ run: make deps-backend
+ - name: build
+ run: make backend
+ env:
+ GOPROXY: https://goproxy.io
+ GOSUMDB: sum.golang.org
+ TAGS: bindata
+ - name: run tests
+ run: timeout -s ABRT 50m make test-pgsql-migration test-pgsql
+ env:
+ GOPROXY: https://goproxy.io
+ TAGS: bindata gogit
+ RACE_ENABLED: true
+ TEST_TAGS: gogit
+ TEST_LDAP: 1
+ USE_REPO_TEST_DIR: 1
+
+ # SQLite Tests
+ db_sqlite_test:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20.0'
+ - name: install dependencies
+ run: make deps-backend
+ - name: build
+ run: make backend
+ env:
+ GOPROXY: https://goproxy.io
+ GOSUMDB: sum.golang.org
+ TAGS: bindata gogit sqlite sqlite_unlock_notify
+ - name: run tests
+ run: timeout -s ABRT 50m make test-sqlite-migration test-sqlite
+ env:
+ GOPROXY: https://goproxy.io
+ TAGS: bindata gogit sqlite sqlite_unlock_notify
+ RACE_ENABLED: true
+ TEST_TAGS: gogit sqlite sqlite_unlock_notify
+ USE_REPO_TEST_DIR: 1
+
+ # Unit Tests
+ db_unit_tests:
+ runs-on: ubuntu-latest
+ services:
+ mysql:
+ image: mysql:5.7
+ env:
+ MYSQL_ALLOW_EMPTY_PASSWORD: yes
+ MYSQL_DATABASE: test
+ ports:
+ - "3306:3306"
+ elasticsearch:
+ image: elasticsearch:7.5.0
+ env:
+ discovery.type: single-node
+ ports:
+ - "9200:9200"
+ smtpimap:
+ image: tabascoterrier/docker-imap-devel:latest
+ ports:
+ - "25:25"
+ - "143:143"
+ - "587:587"
+ - "993:993"
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20.0'
+ - name: Add hosts to /etc/hosts
+ run: echo "127.0.0.1 mysql elasticsearch smtpimap" | sudo tee -a /etc/hosts
+ - name: install dependencies
+ run: make deps-backend
+ - name: build
+ run: make backend
+ env:
+ GOPROXY: https://goproxy.io
+ GOSUMDB: sum.golang.org
+ TAGS: bindata
+ - name: unit tests
+ run: make unit-test-coverage test-check
+ env:
+ GOPROXY: https://goproxy.io
+ TAGS: bindata
+ RACE_ENABLED: true
+ GITHUB_READ_TOKEN: ${{ secrets.GITHUB_READ_TOKEN }}
+ - name: unit tests (gogit)
+ run: make unit-test-coverage test-check
+ env:
+ GOPROXY: https://goproxy.io
+ TAGS: bindata gogit
+ RACE_ENABLED: true
+ GITHUB_READ_TOKEN: ${{ secrets.GITHUB_READ_TOKEN }}
+
+ # MySQL Tests
+ db_mysql_test:
+ runs-on: ubuntu-latest
+ services:
+ mysql:
+ image: mysql:5.7
+ env:
+ MYSQL_ALLOW_EMPTY_PASSWORD: yes
+ MYSQL_DATABASE: test
+ ports:
+ - "3306:3306"
+ elasticsearch:
+ image: elasticsearch:7.5.0
+ env:
+ discovery.type: single-node
+ ports:
+ - "9200:9200"
+ smtpimap:
+ image: tabascoterrier/docker-imap-devel:latest
+ ports:
+ - "25:25"
+ - "143:143"
+ - "587:587"
+ - "993:993"
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20.0'
+ - name: Add hosts to /etc/hosts
+ run: echo "127.0.0.1 mysql elasticsearch smtpimap" | sudo tee -a /etc/hosts
+ - name: install dependencies
+ run: make deps-backend
+ - name: build
+ run: make backend
+ env:
+ GOPROXY: https://goproxy.io
+ GOSUMDB: sum.golang.org
+ TAGS: bindata
+ - name: run tests
+ run: make test-mysql-migration integration-test-coverage
+ env:
+ GOPROXY: https://goproxy.io
+ TAGS: bindata
+ RACE_ENABLED: true
+ USE_REPO_TEST_DIR: 1
+ TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200"
+
+ # MySQL8 Tests
+ db_mysql8_test:
+ runs-on: ubuntu-latest
+ services:
+ mysql8:
+ image: mysql:8
+ env:
+ MYSQL_ALLOW_EMPTY_PASSWORD: yes
+ MYSQL_DATABASE: testgitea
+ ports:
+ - "3306:3306"
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20.0'
+ - name: Add hosts to /etc/hosts
+ run: echo "127.0.0.1 mysql8" | sudo tee -a /etc/hosts
+ - name: install dependencies
+ run: make deps-backend
+ - name: build
+ run: make backend
+ env:
+ GOPROXY: https://goproxy.io
+ GOSUMDB: sum.golang.org
+ TAGS: bindata
+ - name: run tests
+ run: timeout -s ABRT 50m make test-mysql8-migration test-mysql8
+ env:
+ GOPROXY: https://goproxy.io
+ TAGS: bindata
+ USE_REPO_TEST_DIR: 1
+
+ # MSSQL Tests
+ db_mssql_test:
+ runs-on: ubuntu-latest
+ services:
+ mssql:
+ image: mcr.microsoft.com/mssql/server:latest
+ env:
+ ACCEPT_EULA: Y
+ MSSQL_PID: Standard
+ SA_PASSWORD: MwantsaSecurePassword1
+ ports:
+ - "1433:1433"
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20.0'
+ - name: Add hosts to /etc/hosts
+ run: echo "127.0.0.1 mssql" | sudo tee -a /etc/hosts
+ - name: install dependencies
+ run: make deps-backend
+ - name: build
+ run: make backend
+ env:
+ GOPROXY: https://goproxy.io
+ GOSUMDB: sum.golang.org
+ TAGS: bindata
+ - name: run tests
+ run: timeout -s ABRT 50m make test-mssql-migration test-mssql
+ env:
+ GOPROXY: https://goproxy.io
+ TAGS: bindata
+ USE_REPO_TEST_DIR: 1
diff --git a/.github/workflows/pull-docker_dryrun.yml b/.github/workflows/pull-docker_dryrun.yml
index 719668db81..8e5acb3cee 100644
--- a/.github/workflows/pull-docker_dryrun.yml
+++ b/.github/workflows/pull-docker_dryrun.yml
@@ -1,4 +1,4 @@
-name: Docker build dry run
+name: "Pull: Docker Dry Run"
on: [pull_request]
diff --git a/.github/workflows/pull-e2e.yml b/.github/workflows/pull-e2e.yml
new file mode 100644
index 0000000000..2cd6bd0d6a
--- /dev/null
+++ b/.github/workflows/pull-e2e.yml
@@ -0,0 +1,28 @@
+name: "Pull: E2E Tests"
+
+on: [pull_request]
+
+jobs:
+ e2e_tests:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v3
+ - name: setup go
+ uses: actions/setup-go@v4
+ with:
+ go-version: '>=1.20'
+ - name: setup node
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18
+ - name: build
+ run: make deps-frontend frontend deps-backend
+ - name: Install playwright browsers
+ run: npx playwright install --with-deps
+ - name: run tests
+ run: timeout -s ABRT 40m make test-e2e-sqlite
+ env:
+ GOPROXY: https://goproxy.io
+ GOSUMDB: sum.golang.org
+ USE_REPO_TEST_DIR: 1
diff --git a/.github/workflows/push-publish_docs.yml b/.github/workflows/push-publish_docs.yml
index 579157ccd8..9037e278ca 100644
--- a/.github/workflows/push-publish_docs.yml
+++ b/.github/workflows/push-publish_docs.yml
@@ -1,4 +1,4 @@
-name: Publish documentation
+name: "Docs: Publish"
on:
push: