Setting up a Gitea server: Difference between revisions
No edit summary |
No edit summary |
||
Line 92: | Line 92: | ||
So we are now able to run actions with gitea. Better write some stuff up on how we do this with github. Seems there is nothing new and very similar to Azure pipelines | So we are now able to run actions with gitea. Better write some stuff up on how we do this with github. Seems there is nothing new and very similar to Azure pipelines | ||
==Installing on Gitea== | ==Installing on Gitea== | ||
You need to install docker to run you pipleline. I used the page [[https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04 digitalOcean]] | You need to install docker to run you pipleline. I used the page [[https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04 digitalOcean]] for this and downloaded act_runner for gitea from [[https://gitea.com/gitea/act_runner/src/branch/main/README.md here]]. The only part that was hard was understanding the instructions for getting a token as it directs you to [[http://192.168.8.8:3000/admin/actions/runners]] but that is not what you do. You go to [[-/admin/actions/runners]] note the '''hyphen'''. Once there you create a runner | ||
==Workflow== | ==Workflow== | ||
A work flow consists of the following. | A work flow consists of the following. |
Revision as of 22:59, 10 April 2025
Set up a MYSQL Database
Make sure you are listening on 0.0.0.0 and not localhost.
CREATE DATABASE gitea_db;
CREATE USER 'gitea_admin'@'you network IP' IDENTIFIED BY 'not saying';
GRANT ALL PRIVILEGES ON gitea_db.* TO 'gitea_admin'@'you network IP' WITH GRANT OPTION;
Gitea Setup
# Get Software
wget -O gitea https://dl.gitea.com/gitea/1.23.7/gitea-1.23.7-linux-amd64
# Add Git User
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
# Link to RAID
sudo ln -s /var/lib/gitea /mnt/RAID/gitea
#Make Directory structure
sudo mkdir -p /var/lib/gitea/{custom,data,log}
sudo chown -R git:git /var/lib/gitea/
sudo chmod -R 750 /var/lib/gitea/
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
Gitea Service
Create a service to run in /etc/systemd/system/gitea.service
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
Gitea initial setup
I needed this because 3000 is in use. You put this file in /etc/gitea/app.ini. Make sure it is writable or the install will fail.
[server]
PROTOCOL = http
DOMAIN = localhost
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/
HTTP_ADDR = 0.0.0.0
HTTP_PORT = 1701
DISABLE_SSH = false
Nginx Setup
Need to add a reverse proxy
server{
server_name git.example.local;
listen 443 ssl;
access_log /var/log/nginx/git.example.local.log;
error_log /var/log/nginx/git.example.local.log error;
disable_symlinks off;
ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/private/server.key;
client_max_body_size 20m;
location ~ / {
client_max_body_size 512M;
proxy_pass http://localhost:1701;
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Github Actions
So we are now able to run actions with gitea. Better write some stuff up on how we do this with github. Seems there is nothing new and very similar to Azure pipelines
Installing on Gitea
You need to install docker to run you pipleline. I used the page [digitalOcean] for this and downloaded act_runner for gitea from [here]. The only part that was hard was understanding the instructions for getting a token as it directs you to [[1]] but that is not what you do. You go to -/admin/actions/runners note the hyphen. Once there you create a runner
Workflow
A work flow consists of the following.
- Events
- Jobs
- Runners
- Steps
- Actions
Events
This is when to run the workflow. E.g. on push
Jobs
This is the list of jobs to do in a workflow
Runners
This is the environment we will run are steps on. e.g. a docker container
Steps
This is a list of actions to run
Actions
This might be checkout code. Run linter
Example
We need to name our file .github/workflows/my_great_workflow.yaml
name: Super-Linter
on: push
jobs:
super-lint:
name: Lint code base
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Run Super-Linter
uses: github/super-linter@v4
env:
DEFAULT_BRANCH: main
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}