Setting up a Gitea server: Difference between revisions

From bibbleWiki
Jump to navigation Jump to search
Line 131: Line 131:
           DEFAULT_BRANCH: main
           DEFAULT_BRANCH: main
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
</syntaxhighlight>
==Building an Action==
To build the example action which can be found [[https://gitea.com/Zettat123/simple-go-action here]], I needed to install go on the docker image.
<syntaxhighlight lang="Dockerfile">
FROM ubuntu:latest
ARG GO_VERSION
ENV GO_VERSION=${GO_VERSION}
RUN apt-get update
RUN apt-get install -y wget git gcc
RUN wget -P /tmp "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz"
RUN tar -C /usr/local -xzf "/tmp/go${GO_VERSION}.linux-amd64.tar.gz"
RUN rm "/tmp/go${GO_VERSION}.linux-amd64.tar.gz"
ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
WORKDIR $GOPATH
</syntaxhighlight>
</syntaxhighlight>

Revision as of 23:52, 11 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 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

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 }}

Building an Action

To build the example action which can be found [here], I needed to install go on the docker image.

FROM ubuntu:latest

ARG GO_VERSION
ENV GO_VERSION=${GO_VERSION}

RUN apt-get update
RUN apt-get install -y wget git gcc

RUN wget -P /tmp "https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz"

RUN tar -C /usr/local -xzf "/tmp/go${GO_VERSION}.linux-amd64.tar.gz"
RUN rm "/tmp/go${GO_VERSION}.linux-amd64.tar.gz"

ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"

WORKDIR $GOPATH