Parece que se pueden ejecutar acciones con Github-Gitea manteniendo la compatibilidad

8 min

language: ja bn en es hi pt ru zh-cn zh-tw

Hola, soy un inútil.
Lo que estoy haciendo es principalmente la introducción de Gitea Actions.

Preparar el entorno de ejecución de Gitea Actions

Lo que estoy haciendo es casi lo mismo que lo siguiente,
¡Gitea Actions ya está aquí!
Por cierto, parece que no es necesario establecer [actions] en ENABLED=true en app.ini, ya que está activado por defecto.
Versión en el momento de la instalación

$ gitea -v
Gitea version 1.22.4 built with GNU Make 4.3, go1.22.9 : bindata, sqlite, sqlite_unlock_notify

La versión de Go instalada con apt en Debian en Hetzner era antigua y me dio un error al compilar, así que instalaré la última versión de Go.

wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.23.4.linux-amd64.tar.gz
exec bash
go version

En ese momento, aunque ya había hecho apt remove, seguía apuntando a /usr/bin/go y había olvidado pasar la ruta, así que configuré la ruta.

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
rm /usr/bin/go
exec bash
go version

Compilar el runner de Gitea Actions

Es necesario que se ejecute como un demonio separado, y también se necesita docker, así que lo instalaré.

apt install -y make docker.io
service docker status

git clone https://gitea.com/gitea/act_runner
cd act_runner/
make build
mv ./act_runner /usr/local/bin
exec bash

Vincular con act_runner register

Probablemente, en este punto entendí la razón por la que esto está separado del binario principal de Gitea.
Creo que es para separar fácilmente el entorno de ejecución de Gitea Actions en un servidor diferente al que aloja Gitea.

# act_runner register
INFO Registering runner, arch=amd64, os=linux, version=v0.2.11+6-g8bc0275. 
INFO Enter the Gitea instance URL (for example, https://gitea.com/): 
https://git.domain.tld/ 
INFO Enter the runner token:                      
Secret key
INFO Enter the runner name (if set empty, use hostname: debian-2gb-hel1-1): 
danzig
INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-latest:docker://gitea/runner-images:ubuntu-latest): 

INFO Registering runner, name=danzig, instance=https://git.domain.tld/, labels=[ubuntu-latest:docker://gitea/runner-images:ubuntu-latest ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04 ubuntu-20.04:docker://gitea/runner-images:ubuntu-20.04]. 
DEBU Successfully pinged the Gitea instance server 
INFO Runner registered successfully.              

Por cierto, la obtención del token para el Runner es diferente a lo que se menciona en el sitio web anterior, y actualmente era
https://git.domain.tld/admin/actions/runners
.

Es una tontería, pero puse el nombre del runner como danzig, el nombre del vocalista de Misfits.
Me pareció divertido pensar en Glenn Danzig haciendo el trabajo de compilación en segundo plano.

Parece que hay que instalar apparmor

Al parecer, faltan los módulos necesarios.
Parece que se necesita un Linux Security Modules diferente a SE Linux.
Image
Así que lo instalaré.

apt install -y apparmor apparmor-utils

Entonces, en cuanto a qué hacer con el binario ejecutable del demonio act_runner, por ahora, durante el período de prueba, lo puse en rc.local para que solo se inicie.
La razón es que si lo meto directamente en Systemd o Supervisord desde el principio, se volvería complicado verificar qué pasó si el demonio muere a mitad de camino, así que si muere limpiamente, solo tengo que mirar el log de la muerte del demonio en nohup.out, lo que me parece más fácil de encontrar.
Escribir lo siguiente en /etc/rc.local

nohup act_runner daemon &

Y reiniciar el demonio de Docker.

service docker restart

Por cierto, la razón por la que casi nunca uso systemctl es porque es genérico y se puede usar de la misma manera en otras distribuciones y entornos BSD.

Editar yaml

Para ser honesto, no entiendo del todo a dónde apunta actions/checkout@v4 cuando funciona sin ser explícito, pero al revisar los logs, parece que act_runner lo está interpretando correctamente.
Image
Por lo tanto, parece que está utilizando los activos de Github directamente, en lugar de algún tipo de activo espejo de actions/checkout@v4 que act_runner pueda tener.

# This workflow will build a golang project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go

name: Go

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:

  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Set up Go
      uses: actions/setup-go@v4
      with:
        go-version: '1.23.3'

    - name: Build
      run: go build -v ./...

    - name: Test
      run: go test -v ./...

Según el artículo de Qiita, es necesario especificar la URL completa explícitamente para todo excepto para actions/checkout@v4, así que especifiqué la URL completa en uses de name: Set up Go, pero si sigo lo que mencioné antes, y dado que la versión ha subido, ¿quizás ahora lo reconozca correctamente como un activo de Github?
Sin embargo, pensé que si lo hacía, podría haber problemas de conflicto con los activos existentes en Gitea, así que parece más seguro especificar la URL completa.

※Postdata
Al parecer, tanto Github como Gitea aceptan el formato owner/repo@ref tal cual, así que parece que puedo usarlo sin preocuparme.

Funcionamiento exitoso

Image
¡¡¡Lo logré!!!!
Así que, por esta vez, hasta aquí.
Hasta la próxima.