Похоже, действия можно выполнять, сохраняя совместимость между Github и Gitea

8 min

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

Здравствуйте, я некомпетентен.
В основном я занимаюсь внедрением Gitea Actions.

Настройка среды выполнения Gitea Actions

Это почти то же самое, что и ниже, но
Gitea Actions уже здесь!
Кстати, похоже, что [actions] включен по умолчанию в app.ini, даже если ENABLED=true не установлено.
Версия на момент установки

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

Версия Go, установленная с помощью apt на Debian на Hetzner, была старой, и я получил ошибку при сборке, поэтому я устанавливаю последнюю версию 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

В этот момент я уже сделал apt remove, но он все еще смотрел на /usr/bin/go, и я забыл передать путь, поэтому я настроил путь.

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

Сборка раннера Gitea Actions

Его необходимо запускать как отдельный демон, и docker также требуется, поэтому я установлю его.

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

Связывание с act_runner register

Вероятно, я понял причину, по которой это отделено от основного бинарного файла Gitea, на этом этапе.
Я думаю, это сделано для того, чтобы легко разделить среду для запуска Gitea Actions на сервере, отличном от того, который хостит сам 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.              

Кстати, получение токена для передачи Runner отличается от ранее упомянутого сайта и в настоящее время находится по адресу
https://git.domain.tld/admin/actions/runners
было.

Это мелочь, но я назвал раннер "danzig" в честь вокалиста Misfits.
Забавно представить, как Гленн Данциг выполняет сборку в фоновом режиме.

Похоже, нужно установить apparmor

Похоже, не хватает необходимых модулей.
Похоже, требуются Linux Security Modules, отличные от SE Linux.
Image
Итак, я установлю его.

apt install -y apparmor apparmor-utils

Итак, что касается исполняемого файла демона act_runner, то на время тестирования я поместил его в rc.local, чтобы он запускался только при старте.
Причина в том, что если бы я сразу поместил его в Systemd или Supervisord, было бы сложно проверить, когда демон умрет в процессе. Поэтому, если он умирает чисто, мне просто нужно будет посмотреть лог смерти демона в nohup.out, что, вероятно, будет легче найти.
Запишите следующее в /etc/rc.local

nohup act_runner daemon &

Затем перезапустите демон Docker.

service docker restart

Кстати, причина, по которой я почти не использую systemctl, заключается в том, что он универсален и может использоваться аналогично в других дистрибутивах и средах BSD.

Редактирование YAML

Честно говоря, я не совсем понимаю, куда смотрит actions/checkout@v4, когда он работает без явного указания, но, просмотрев логи, я вижу, что act_runner, похоже, умело исправляет это, чтобы понять этот синтаксис.
Image
Таким образом, похоже, что он использует активы с Github, а не какой-либо зеркальный актив actions/checkout@v4, хранящийся на стороне act_runner.

# 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 ./...

В статье Qiita необходимо явно указывать полный URL для всего, кроме actions/checkout@v4, поэтому я указал полный URL для uses в name: Set up Go. Но если следовать вышесказанному, то теперь, когда версия обновлена, возможно, он сможет правильно распознать это как актив Github?
Я подумал об этом, но тогда могут возникнуть проблемы, если это будет конфликтовать с активами на Gitea, поэтому, похоже, лучше указать полный URL, чтобы избежать проблем.

*P.S.*
Похоже, что owner/repo@ref работает как для Github, так и для Gitea, так что можно не беспокоиться.

Успешная работа

Image
Я сделал это!!!!
Итак, на этом все.
Спасибо еще раз.