ऐसा लगता है कि Github-Gitea में संगतता बनाए रखते हुए Actions चलाए जा सकते हैं

8 min

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

नमस्ते, मैं अक्षम हूँ।
मैं जो कर रहा हूँ वह मुख्य रूप से Gitea Actions को लागू करना है।

Gitea Actions के लिए रनटाइम वातावरण तैयार करना

मैं जो कर रहा हूँ वह लगभग वही है जो नीचे दिया गया है, लेकिन
Gitea Actions आ गए हैं!
वैसे, ऐसा लगता है कि app.ini में [actions] को ENABLED=true सेट किए बिना भी यह डिफ़ॉल्ट रूप से चालू रहता है।
इंस्टॉलेशन के समय का संस्करण

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

Hetzner पर Debian के apt के साथ स्थापित Go का संस्करण पुराना था और बिल्ड करते समय त्रुटि दे रहा था, इसलिए मैं 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.              

वैसे, रनर को पास करने के लिए टोकन प्राप्त करने के संबंध में, यह ऊपर उल्लिखित साइट से अलग है, और वर्तमान में यह है:
https://git.domain.tld/admin/actions/runners

यह थोड़ा मूर्खतापूर्ण है, लेकिन मैंने रनर का नाम डैनज़िग (danzig) रखा है, जो मिसफिट्स के गायक का नाम है।
यह सोचना मज़ेदार है कि ग्लेन डैनज़िग पर्दे के पीछे बिल्ड का काम कर रहे हैं।

ऐसा लगता है कि apparmor स्थापित करना होगा

ऐसा लगता है कि आवश्यक मॉड्यूल गायब हैं।
SE Linux के अलावा एक अलग Linux Security Modules की आवश्यकता है।
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
इसलिए, ऐसा लगता है कि यह act_runner के पास मौजूद actions/checkout@v4 की किसी भी मिरर संपत्ति का उपयोग नहीं कर रहा है, बल्कि GitHub पर वास्तविक संपत्ति का उपयोग कर रहा है।

# 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 लेख में, actions/checkout@v4 को छोड़कर, URL को स्पष्ट रूप से पूरी तरह से निर्दिष्ट करना आवश्यक है, इसलिए मैंने name: Set up Go के uses में निर्दिष्ट URL को पूरी तरह से निर्दिष्ट किया, लेकिन जैसा कि ऊपर उल्लेख किया गया है, क्या यह अब GitHub संपत्ति के रूप में ठीक से पहचाना जाएगा क्योंकि संस्करण बढ़ गया है?
मैंने सोचा, लेकिन अगर ऐसा होता है, तो Gitea पर मौजूद संपत्तियों के साथ टकराव होने की संभावना है, इसलिए URL को पूरी तरह से निर्दिष्ट करना बेहतर होगा ताकि कोई समस्या न हो।

※अद्यतन
ऐसा लगता है कि owner/repo@ref के साथ भी, यह GitHub और Gitea दोनों पर काम करता है, इसलिए आप बिना किसी चिंता के आगे बढ़ सकते हैं।

सफल संचालन

Image
हो गया!!!!
तो, इस बार के लिए बस इतना ही।
आपसे फिर मिलेंगे।