Setting up a Gitea server: Difference between revisions

From bibbleWiki
Jump to navigation Jump to search
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 }}