231 lines
5.2 KiB
Markdown
231 lines
5.2 KiB
Markdown
Based on a Proxmox container with Ubuntu 22.04
|
|
|
|
# Package installation
|
|
|
|
Note: We need a git >= 2.48 for Forgejo 10.0.0 to run the tests.
|
|
|
|
```
|
|
sudo add-apt-repository ppa:git-core/ppa
|
|
sudo apt update
|
|
sudo apt upgrade
|
|
|
|
sudo apt -y install net-tools mariadb-server mariadb-client git git-lfs make curl git-annex build-essential libatk1.0-0 libatk-bridge2.0-0 libcups2 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 libgbm1 libxkbcommon0 libpango-1.0-0 libcairo2 libasound2 libatspi2.0-0 libx11-xcb1 libxcursor1 libgtk-3-0 libpangocairo-1.0-0 libcairo-gobject2 libgdk-pixbuf-2.0-0 libvpx7 libevent-2.1-7 libopus0 gstreamer1.0-plugins-base libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 flite1-dev libwebpdemux2 libavif13 libharfbuzz-icu0 libwebpmux3 libenchant-2-2 libsecret-1-0 libhyphen0 libmanette-0.2-0 libgles2 libx264-163 woff2 libwoff1 libgstreamer-gl1.0-0 libgstreamer-plugins-bad1.0-0 fakeroot dpkg-dev gcc libssl-dev libghc-zlib-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip wget curl autoconf automake libtool pkg-config libpcre2-dev asciidoc xmlto docbook2x install-info ghc cabal-install libncurses5-dev libbz2-dev zlib1g-dev libmagic-dev libgsasl7-dev libxml2-dev liblzma-dev rsync postgresql-all
|
|
```
|
|
|
|
## Install go lang >= 1.23
|
|
|
|
```
|
|
sudo bash
|
|
cd /root
|
|
wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
|
|
rm -rf /usr/local/go
|
|
tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
|
|
```
|
|
|
|
# Put into the users .bashrc
|
|
|
|
## Create git user
|
|
|
|
```
|
|
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
|
|
```
|
|
|
|
# Do this as user git
|
|
|
|
## Add this to the .bashrc of the git user
|
|
|
|
```
|
|
export PATH=$PATH:/usr/local/go/bin
|
|
export NVM_DIR="$HOME/.nvm"
|
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
|
```
|
|
|
|
## If necessary change to user git:
|
|
|
|
```
|
|
sudo -u git bash
|
|
```
|
|
|
|
# Install nodejs 22
|
|
|
|
```
|
|
cd ~
|
|
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
|
|
nvm install 22
|
|
```
|
|
|
|
## Some checks if nodejs 22 is okay
|
|
|
|
```
|
|
node -v # Should print "v22.13.0"
|
|
nvm current # Should print "v22.13.0"
|
|
npm -v # Should print "10.9.2"
|
|
```
|
|
|
|
## Prepare forgejo
|
|
|
|
```
|
|
cd ~
|
|
mkdir -p forgejo_test
|
|
cd forgejo_test
|
|
git clone https://codeberg.org/forgejo/forgejo.git
|
|
cd forgejo
|
|
make build
|
|
```
|
|
|
|
# Run make test
|
|
|
|
```
|
|
cd ~
|
|
cd forgejo_test
|
|
cd forgejo
|
|
make test
|
|
```
|
|
|
|
# Run make test-frontend
|
|
|
|
```
|
|
cd ~
|
|
cd forgejo_test
|
|
cd forgejo
|
|
make test-frontend
|
|
```
|
|
|
|
# Run make test-backend
|
|
|
|
```
|
|
cd ~
|
|
cd forgejo_test
|
|
cd forgejo
|
|
make test-backend
|
|
```
|
|
|
|
# Run end-2-end test with sqlite
|
|
|
|
```
|
|
cd ~
|
|
cd forgejo_test
|
|
cd forgejo
|
|
make test-e2e-sqlite
|
|
```
|
|
|
|
|
|
# Run end-2-end test with mariadb
|
|
|
|
## Initial setup
|
|
|
|
```
|
|
sudo systemctl enable mariadb
|
|
sudo systemctl start mariadb
|
|
sudo mysql_secure_installation
|
|
```
|
|
|
|
Use the settings:
|
|
|
|
```
|
|
Switch to unix_socket authentication [Y/n] Y
|
|
Change the root password? [Y/n] n
|
|
Remove anonymous users? [Y/n] Y
|
|
Disallow root login remotely? [Y/n] Y
|
|
Remove test database and access to it? [Y/n] Y
|
|
Reload privilege tables now? [Y/n] Y
|
|
```
|
|
|
|
## Creating an example database
|
|
|
|
```
|
|
sudo mysql
|
|
```
|
|
|
|
Under mysql we create the test database:
|
|
|
|
```
|
|
SET old_passwords=0;
|
|
CREATE USER 'forgejotest'@'%' IDENTIFIED BY 'forgejotest';
|
|
CREATE DATABASE forgejotest CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
|
|
GRANT ALL PRIVILEGES ON forgejotest.* TO 'forgejotest';
|
|
FLUSH PRIVILEGES;
|
|
exit
|
|
```
|
|
|
|
We need to make sure that Makefile has the correct values for the MariaDB database:
|
|
```
|
|
TEST_MYSQL_HOST ?= 127.0.0.1:3306
|
|
TEST_MYSQL_DBNAME ?= forgejotest?multiStatements=true
|
|
TEST_MYSQL_USERNAME ?= forgejotest
|
|
TEST_MYSQL_PASSWORD ?= forgejotest
|
|
```
|
|
|
|
Run the test:
|
|
```
|
|
cd ~
|
|
cd forgejo_test
|
|
cd forgejo
|
|
make test-e2e-mysql
|
|
```
|
|
|
|
# Run end-2-end test with PostgreSQL
|
|
|
|
We create the test database:
|
|
|
|
1. We connect to the database
|
|
|
|
```
|
|
sudo -u postgres psql
|
|
```
|
|
|
|
2. Create the test user
|
|
|
|
```
|
|
CREATE ROLE forgejotest WITH LOGIN PASSWORD 'forgejotest';
|
|
```
|
|
|
|
3. Create the database
|
|
|
|
This is the goal:
|
|
```
|
|
CREATE DATABASE forgejotest WITH OWNER forgejotest TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.utf8' LC_CTYPE 'en_US.utf8';
|
|
```
|
|
|
|
This is the fallback option:
|
|
|
|
```
|
|
CREATE DATABASE forgejotest WITH OWNER forgejotest TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'C.utf8' LC_CTYPE 'C.utf8';
|
|
```
|
|
|
|
4. Use \q to close the postgres console.
|
|
|
|
5. Add the permissions for a local connection
|
|
|
|
```
|
|
echo "local forgejotest forgejotest scram-sha-256" >> /etc/postgresql/14/main/pg_hba.conf
|
|
echo "host forgejotest forgejotest 127.0.0.1/32 scram-sha-256" >> /etc/postgresql/14/main/pg_hba.conf
|
|
echo "host forgejotest forgejotest ::1/128 scram-sha-256" >> /etc/postgresql/14/main/pg_hba.conf
|
|
```
|
|
|
|
6. Test if everything worked out.
|
|
```
|
|
psql -U forgejotest -d forgejotest -h localhost
|
|
```
|
|
|
|
We need to make sure that Makefile has the correct values for the PGSQL database:
|
|
```
|
|
TEST_PGSQL_HOST ?= 127.0.0.1:5432
|
|
TEST_PGSQL_DBNAME ?= forgejotest
|
|
TEST_PGSQL_USERNAME ?= forgejotest
|
|
TEST_PGSQL_PASSWORD ?= forgejotest
|
|
TEST_PGSQL_SCHEMA ?= gtestschema
|
|
```
|
|
|
|
If you haven't install MinIO, you need to add this parameter:
|
|
```
|
|
TEST_STORAGE_TYPE ?= local
|
|
```
|
|
|
|
```
|
|
cd ~
|
|
cd forgejo_test
|
|
cd forgejo
|
|
make test-e2e-pgsql
|
|
```
|