diff --git a/.drone.yml b/.drone.yml index 459536621..7810d3d10 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,749 +1,3 @@ ---- -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 @@ -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 116b8dd09..723907871 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 31262fd3d..c83450d2e 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 000000000..1239b9caa --- /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 e3c3a4254..679e92551 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 000000000..3cae4df03 --- /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 719668db8..8e5acb3ce 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 000000000..2cd6bd0d6 --- /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 579157ccd..9037e278c 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: