- MySQL 5.7 support and testing is dropped - MySQL tests now execute against 8.1, up from 5.7 and 8.0 - PostgreSQL 10 and 11 support ist dropped - PostgreSQL tests now execute against 16, up from 15 - MSSQL 2008 support is dropped - MSSQL tests now run against locked 2022 version Fixes: https://github.com/go-gitea/gitea/issues/25657 Ref: https://endoflife.date/mysql Ref: https://endoflife.date/postgresql Ref: https://endoflife.date/mssqlserver ## :warning: BREAKING :warning: Support for MySQL 5.7, PostgreSQL 10 and 11, and MSSQL 2008 is dropped. You are encouraged to upgrade to supported versions. --------- Co-authored-by: techknowlogick <techknowlogick@gitea.com>tags/v1.22.0-rc0
@@ -17,7 +17,7 @@ jobs: | |||
runs-on: ubuntu-latest | |||
services: | |||
pgsql: | |||
image: postgres:15 | |||
image: postgres:16 | |||
env: | |||
POSTGRES_DB: test | |||
POSTGRES_PASSWORD: postgres | |||
@@ -86,7 +86,7 @@ jobs: | |||
runs-on: ubuntu-latest | |||
services: | |||
mysql: | |||
image: mysql:5.7 | |||
image: mysql:8.1 | |||
env: | |||
MYSQL_ALLOW_EMPTY_PASSWORD: true | |||
MYSQL_DATABASE: test | |||
@@ -152,16 +152,16 @@ jobs: | |||
RACE_ENABLED: true | |||
GITHUB_READ_TOKEN: ${{ secrets.GITHUB_READ_TOKEN }} | |||
test-mysql5: | |||
test-mysql: | |||
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' | |||
needs: files-changed | |||
runs-on: ubuntu-latest | |||
services: | |||
mysql: | |||
image: mysql:5.7 | |||
image: mysql:8.1 | |||
env: | |||
MYSQL_ALLOW_EMPTY_PASSWORD: true | |||
MYSQL_DATABASE: test | |||
MYSQL_DATABASE: testgitea | |||
ports: | |||
- "3306:3306" | |||
elasticsearch: | |||
@@ -197,43 +197,13 @@ jobs: | |||
USE_REPO_TEST_DIR: 1 | |||
TEST_INDEXER_CODE_ES_URL: "http://elastic:changeme@elasticsearch:9200" | |||
test-mysql8: | |||
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' | |||
needs: files-changed | |||
runs-on: ubuntu-latest | |||
services: | |||
mysql8: | |||
image: mysql:8 | |||
env: | |||
MYSQL_ALLOW_EMPTY_PASSWORD: true | |||
MYSQL_DATABASE: testgitea | |||
ports: | |||
- "3306:3306" | |||
steps: | |||
- uses: actions/checkout@v4 | |||
- uses: actions/setup-go@v4 | |||
with: | |||
go-version: "~1.21" | |||
check-latest: true | |||
- name: Add hosts to /etc/hosts | |||
run: '[ -e "/.dockerenv" ] || [ -e "/run/.containerenv" ] || echo "127.0.0.1 mysql8" | sudo tee -a /etc/hosts' | |||
- run: make deps-backend | |||
- run: make backend | |||
env: | |||
TAGS: bindata | |||
- run: make test-mysql8-migration test-mysql8 | |||
timeout-minutes: 50 | |||
env: | |||
TAGS: bindata | |||
USE_REPO_TEST_DIR: 1 | |||
test-mssql: | |||
if: needs.files-changed.outputs.backend == 'true' || needs.files-changed.outputs.actions == 'true' | |||
needs: files-changed | |||
runs-on: ubuntu-latest | |||
services: | |||
mssql: | |||
image: mcr.microsoft.com/mssql/server:latest | |||
image: mcr.microsoft.com/mssql/server:2022-latest | |||
env: | |||
ACCEPT_EULA: Y | |||
MSSQL_PID: Standard |
@@ -167,10 +167,6 @@ TEST_MYSQL_HOST ?= mysql:3306 | |||
TEST_MYSQL_DBNAME ?= testgitea | |||
TEST_MYSQL_USERNAME ?= root | |||
TEST_MYSQL_PASSWORD ?= | |||
TEST_MYSQL8_HOST ?= mysql8:3306 | |||
TEST_MYSQL8_DBNAME ?= testgitea | |||
TEST_MYSQL8_USERNAME ?= root | |||
TEST_MYSQL8_PASSWORD ?= | |||
TEST_PGSQL_HOST ?= pgsql:5432 | |||
TEST_PGSQL_DBNAME ?= testgitea | |||
TEST_PGSQL_USERNAME ?= postgres | |||
@@ -282,12 +278,12 @@ clean: | |||
rm -rf $(EXECUTABLE) $(DIST) $(BINDATA_DEST) $(BINDATA_HASH) \ | |||
integrations*.test \ | |||
e2e*.test \ | |||
tests/integration/gitea-integration-pgsql/ tests/integration/gitea-integration-mysql/ tests/integration/gitea-integration-mysql8/ tests/integration/gitea-integration-sqlite/ \ | |||
tests/integration/gitea-integration-mssql/ tests/integration/indexers-mysql/ tests/integration/indexers-mysql8/ tests/integration/indexers-pgsql tests/integration/indexers-sqlite \ | |||
tests/integration/indexers-mssql tests/mysql.ini tests/mysql8.ini tests/pgsql.ini tests/mssql.ini man/ \ | |||
tests/e2e/gitea-e2e-pgsql/ tests/e2e/gitea-e2e-mysql/ tests/e2e/gitea-e2e-mysql8/ tests/e2e/gitea-e2e-sqlite/ \ | |||
tests/e2e/gitea-e2e-mssql/ tests/e2e/indexers-mysql/ tests/e2e/indexers-mysql8/ tests/e2e/indexers-pgsql/ tests/e2e/indexers-sqlite/ \ | |||
tests/e2e/indexers-mssql/ tests/e2e/reports/ tests/e2e/test-artifacts/ tests/e2e/test-snapshots/ | |||
tests/integration/gitea-integration-* \ | |||
tests/integration/indexers-* \ | |||
tests/mysql.ini tests/pgsql.ini tests/mssql.ini man/ \ | |||
tests/e2e/gitea-e2e-*/ \ | |||
tests/e2e/indexers-*/ \ | |||
tests/e2e/reports/ tests/e2e/test-artifacts/ tests/e2e/test-snapshots/ | |||
.PHONY: fmt | |||
fmt: | |||
@@ -551,27 +547,6 @@ test-mysql\#%: integrations.mysql.test generate-ini-mysql | |||
.PHONY: test-mysql-migration | |||
test-mysql-migration: migrations.mysql.test migrations.individual.mysql.test | |||
generate-ini-mysql8: | |||
sed -e 's|{{TEST_MYSQL8_HOST}}|${TEST_MYSQL8_HOST}|g' \ | |||
-e 's|{{TEST_MYSQL8_DBNAME}}|${TEST_MYSQL8_DBNAME}|g' \ | |||
-e 's|{{TEST_MYSQL8_USERNAME}}|${TEST_MYSQL8_USERNAME}|g' \ | |||
-e 's|{{TEST_MYSQL8_PASSWORD}}|${TEST_MYSQL8_PASSWORD}|g' \ | |||
-e 's|{{REPO_TEST_DIR}}|${REPO_TEST_DIR}|g' \ | |||
-e 's|{{TEST_LOGGER}}|$(or $(TEST_LOGGER),test$(COMMA)file)|g' \ | |||
-e 's|{{TEST_TYPE}}|$(or $(TEST_TYPE),integration)|g' \ | |||
tests/mysql8.ini.tmpl > tests/mysql8.ini | |||
.PHONY: test-mysql8 | |||
test-mysql8: integrations.mysql8.test generate-ini-mysql8 | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./integrations.mysql8.test | |||
.PHONY: test-mysql8\#% | |||
test-mysql8\#%: integrations.mysql8.test generate-ini-mysql8 | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./integrations.mysql8.test -test.run $(subst .,/,$*) | |||
.PHONY: test-mysql8-migration | |||
test-mysql8-migration: migrations.mysql8.test migrations.individual.mysql8.test | |||
generate-ini-pgsql: | |||
sed -e 's|{{TEST_PGSQL_HOST}}|${TEST_PGSQL_HOST}|g' \ | |||
-e 's|{{TEST_PGSQL_DBNAME}}|${TEST_PGSQL_DBNAME}|g' \ | |||
@@ -644,14 +619,6 @@ test-e2e-mysql: playwright e2e.mysql.test generate-ini-mysql | |||
test-e2e-mysql\#%: playwright e2e.mysql.test generate-ini-mysql | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./e2e.mysql.test -test.run TestE2e/$* | |||
.PHONY: test-e2e-mysql8 | |||
test-e2e-mysql8: playwright e2e.mysql8.test generate-ini-mysql8 | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./e2e.mysql8.test | |||
.PHONY: test-e2e-mysql8\#% | |||
test-e2e-mysql8\#%: playwright e2e.mysql8.test generate-ini-mysql8 | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./e2e.mysql8.test -test.run TestE2e/$* | |||
.PHONY: test-e2e-pgsql | |||
test-e2e-pgsql: playwright e2e.pgsql.test generate-ini-pgsql | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/pgsql.ini ./e2e.pgsql.test | |||
@@ -695,9 +662,6 @@ integration-test-coverage-sqlite: integrations.cover.sqlite.test generate-ini-sq | |||
integrations.mysql.test: git-check $(GO_SOURCES) | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.mysql.test | |||
integrations.mysql8.test: git-check $(GO_SOURCES) | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.mysql8.test | |||
integrations.pgsql.test: git-check $(GO_SOURCES) | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration -o integrations.pgsql.test | |||
@@ -718,11 +682,6 @@ migrations.mysql.test: $(GO_SOURCES) generate-ini-mysql | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.mysql.test | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini ./migrations.mysql.test | |||
.PHONY: migrations.mysql8.test | |||
migrations.mysql8.test: $(GO_SOURCES) generate-ini-mysql8 | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.mysql8.test | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini ./migrations.mysql8.test | |||
.PHONY: migrations.pgsql.test | |||
migrations.pgsql.test: $(GO_SOURCES) generate-ini-pgsql | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/integration/migration-test -o migrations.pgsql.test | |||
@@ -744,13 +703,7 @@ migrations.individual.mysql.test: $(GO_SOURCES) | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' $$pkg; \ | |||
done | |||
.PHONY: migrations.individual.mysql8.test | |||
migrations.individual.mysql8.test: $(GO_SOURCES) | |||
for pkg in $(shell $(GO) list code.gitea.io/gitea/models/migrations/...); do \ | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/mysql8.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' $$pkg; \ | |||
done | |||
.PHONY: migrations.individual.mysql8.test\#% | |||
.PHONY: migrations.individual.sqlite.test\#% | |||
migrations.individual.sqlite.test\#%: $(GO_SOURCES) generate-ini-sqlite | |||
GITEA_ROOT="$(CURDIR)" GITEA_CONF=tests/sqlite.ini $(GO) test $(GOTESTFLAGS) -tags '$(TEST_TAGS)' code.gitea.io/gitea/models/migrations/$* | |||
@@ -788,9 +741,6 @@ migrations.individual.sqlite.test\#%: $(GO_SOURCES) generate-ini-sqlite | |||
e2e.mysql.test: $(GO_SOURCES) | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.mysql.test | |||
e2e.mysql8.test: $(GO_SOURCES) | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.mysql8.test | |||
e2e.pgsql.test: $(GO_SOURCES) | |||
$(GO) test $(GOTESTFLAGS) -c code.gitea.io/gitea/tests/e2e -o e2e.pgsql.test | |||
@@ -17,7 +17,9 @@ menu: | |||
# Database Preparation | |||
You need a database to use Gitea. Gitea supports PostgreSQL (>=10), MySQL (>=5.7), MariaDB, SQLite, and MSSQL (>=2008R2 SP3). This page will guide into preparing database. Only PostgreSQL and MySQL will be covered here since those database engines are widely-used in production. If you plan to use SQLite, you can ignore this chapter. | |||
You need a database to use Gitea. Gitea supports PostgreSQL (>= 12), MySQL (>= 8.0), MariaDB, SQLite, and MSSQL (>= 2012 SP4). This page will guide into preparing database. Only PostgreSQL and MySQL will be covered here since those database engines are widely-used in production. If you plan to use SQLite, you can ignore this chapter. | |||
If you use an unsupported database version, please [get in touch](/help/support) with us for information on our Extended Support Contracts. We can provide testing and support for older databases and integrate those fixes into the Gitea codebase. | |||
Database instance can be on same machine as Gitea (local database setup), or on different machine (remote database). | |||
@@ -17,7 +17,7 @@ menu: | |||
# 数据库准备 | |||
在使用 Gitea 前,您需要准备一个数据库。Gitea 支持 PostgreSQL(>=10)、MySQL(>=5.7)、SQLite 和 MSSQL(>=2008R2 SP3)这几种数据库。本页将指导您准备数据库。由于 PostgreSQL 和 MySQL 在生产环境中被广泛使用,因此本文档将仅涵盖这两种数据库。如果您计划使用 SQLite,则可以忽略本章内容。 | |||
在使用 Gitea 前,您需要准备一个数据库。Gitea 支持 PostgreSQL(>= 12)、MySQL(>= 8.0)、SQLite 和 MSSQL(>= 2012 SP4)这几种数据库。本页将指导您准备数据库。由于 PostgreSQL 和 MySQL 在生产环境中被广泛使用,因此本文档将仅涵盖这两种数据库。如果您计划使用 SQLite,则可以忽略本章内容。 | |||
数据库实例可以与 Gitea 实例在相同机器上(本地数据库),也可以与 Gitea 实例在不同机器上(远程数据库)。 | |||
@@ -7,7 +7,6 @@ They can be run with make commands for the appropriate backends, namely: | |||
make test-sqlite | |||
make test-pgsql | |||
make test-mysql | |||
make test-mysql8 | |||
make test-mssql | |||
``` | |||
@@ -76,7 +75,7 @@ For SQLite: | |||
make test-e2e-sqlite#example | |||
``` | |||
For other databases(replace `mssql` to `mysql`, `mysql8` or `pgsql`): | |||
For other databases(replace `mssql` to `mysql` or `pgsql`): | |||
``` | |||
TEST_MSSQL_HOST=localhost:1433 TEST_MSSQL_DBNAME=test TEST_MSSQL_USERNAME=sa TEST_MSSQL_PASSWORD=MwantsaSecurePassword1 make test-e2e-mssql#example | |||
@@ -90,4 +89,4 @@ Although the main goal of e2e is assertion testing, we have added a framework fo | |||
VISUAL_TEST=1 will create screenshots in tests/e2e/test-snapshots. The test will fail the first time this is enabled (until we get visual test image persistence figured out), because it will be testing against an empty screenshot folder. | |||
ACCEPT_VISUAL=1 will overwrite the snapshot images with new images. | |||
ACCEPT_VISUAL=1 will overwrite the snapshot images with new images. |
@@ -6,7 +6,6 @@ appropriate backends, namely: | |||
make test-sqlite | |||
make test-pgsql | |||
make test-mysql | |||
make test-mysql8 | |||
make test-mssql | |||
``` | |||
@@ -84,7 +83,7 @@ For SQLite: | |||
make test-sqlite#GPG | |||
``` | |||
For other databases(replace `mssql` to `mysql`, `mysql8` or `pgsql`): | |||
For other databases(replace `mssql` to `mysql`, or `pgsql`): | |||
``` | |||
TEST_MSSQL_HOST=localhost:1433 TEST_MSSQL_DBNAME=test TEST_MSSQL_USERNAME=sa TEST_MSSQL_PASSWORD=MwantsaSecurePassword1 make test-mssql#GPG |
@@ -79,7 +79,7 @@ sqlite 数据库: | |||
make test-sqlite#GPG | |||
``` | |||
其它数据库(把 MSSQL 替换为 MYSQL, MYSQL8, PGSQL): | |||
其它数据库(把 MSSQL 替换为 MYSQL, PGSQL): | |||
``` | |||
TEST_MSSQL_HOST=localhost:1433 TEST_MSSQL_DBNAME=test TEST_MSSQL_USERNAME=sa TEST_MSSQL_PASSWORD=MwantsaSecurePassword1 make test-mssql#GPG |
@@ -1,109 +0,0 @@ | |||
APP_NAME = Gitea: Git with a cup of tea | |||
RUN_MODE = prod | |||
[database] | |||
DB_TYPE = mysql | |||
HOST = {{TEST_MYSQL8_HOST}} | |||
NAME = {{TEST_MYSQL8_DBNAME}} | |||
USER = {{TEST_MYSQL8_USERNAME}} | |||
PASSWD = {{TEST_MYSQL8_PASSWORD}} | |||
SSL_MODE = disable | |||
[indexer] | |||
REPO_INDEXER_ENABLED = true | |||
REPO_INDEXER_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/indexers/repos.bleve | |||
[queue.issue_indexer] | |||
TYPE = level | |||
DATADIR = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/indexers/issues.queue | |||
[queue] | |||
TYPE = immediate | |||
[queue.code_indexer] | |||
TYPE = immediate | |||
[queue.push_update] | |||
TYPE = immediate | |||
[repository] | |||
ROOT = {{REPO_TEST_DIR}}tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/gitea-repositories | |||
[repository.local] | |||
LOCAL_COPY_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/tmp/local-repo | |||
[repository.upload] | |||
TEMP_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/tmp/uploads | |||
[repository.signing] | |||
SIGNING_KEY = none | |||
[server] | |||
SSH_DOMAIN = localhost | |||
HTTP_PORT = 3004 | |||
ROOT_URL = http://localhost:3004/ | |||
DISABLE_SSH = false | |||
SSH_LISTEN_HOST = localhost | |||
SSH_PORT = 2204 | |||
START_SSH_SERVER = true | |||
LFS_START_SERVER = true | |||
OFFLINE_MODE = false | |||
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w | |||
APP_DATA_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/data | |||
BUILTIN_SSH_SERVER_USER = git | |||
SSH_TRUSTED_USER_CA_KEYS = ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCb4DC1dMFnJ6pXWo7GMxTchtzmJHYzfN6sZ9FAPFR4ijMLfGki+olvOMO5Fql1/yGnGfbELQa1S6y4shSvj/5K+zUFScmEXYf3Gcr87RqilLkyk16RS+cHNB1u87xTHbETaa3nyCJeGQRpd4IQ4NKob745mwDZ7jQBH8AZEng50Oh8y8fi8skBBBzaYp1ilgvzG740L7uex6fHV62myq0SXeCa+oJUjq326FU8y+Vsa32H8A3e7tOgXZPdt2TVNltx2S9H2WO8RMi7LfaSwARNfy1zu+bfR50r6ef8Yx5YKCMz4wWb1SHU1GS800mjOjlInLQORYRNMlSwR1+vLlVDciOqFapDSbj+YOVOawR0R1aqlSKpZkt33DuOBPx9qe6CVnIi7Z+Px/KqM+OLCzlLY/RS+LbxQpDWcfTVRiP+S5qRTcE3M3UioN/e0BE/1+MpX90IGpvVkA63ILYbKEa4bM3ASL7ChTCr6xN5XT+GpVJveFKK1cfNx9ExHI4rzYE= | |||
[attachment] | |||
PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/data/attachments | |||
[mailer] | |||
ENABLED = false | |||
[service] | |||
REGISTER_EMAIL_CONFIRM = false | |||
REGISTER_MANUAL_CONFIRM = false | |||
ENABLE_NOTIFY_MAIL = false | |||
DISABLE_REGISTRATION = false | |||
ENABLE_CAPTCHA = false | |||
REQUIRE_SIGNIN_VIEW = false | |||
DEFAULT_KEEP_EMAIL_PRIVATE = false | |||
DEFAULT_ALLOW_CREATE_ORGANIZATION = true | |||
NO_REPLY_ADDRESS = noreply.example.org | |||
[picture] | |||
DISABLE_GRAVATAR = false | |||
ENABLE_FEDERATED_AVATAR = false | |||
AVATAR_UPLOAD_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/data/avatars | |||
REPOSITORY_AVATAR_UPLOAD_PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/data/repo-avatars | |||
[session] | |||
PROVIDER = file | |||
PROVIDER_CONFIG = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/data/sessions | |||
[log] | |||
MODE = {{TEST_LOGGER}} | |||
ROOT_PATH = {{REPO_TEST_DIR}}mysql8-log | |||
ENABLE_SSH_LOG = true | |||
logger.xorm.MODE = file | |||
[log.test] | |||
LEVEL = Info | |||
COLORIZE = true | |||
[log.file] | |||
LEVEL = Debug | |||
[security] | |||
DISABLE_GIT_HOOKS = false | |||
INSTALL_LOCK = true | |||
SECRET_KEY = 9pCviYTWSb | |||
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ | |||
[lfs] | |||
PATH = tests/{{TEST_TYPE}}/gitea-{{TEST_TYPE}}-mysql8/data/lfs | |||
[packages] | |||
ENABLED = true | |||
[actions] | |||
ENABLED = true |