Github-Gitea-তে সামঞ্জস্যপূর্ণভাবে অ্যাকশন চালানো যায় বলে মনে হচ্ছে

7 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 হোস্ট করা সার্ভার থেকে Gitea Actions চালানোর পরিবেশকে অন্য একটি সার্ভারে সহজে আলাদা করার জন্য।

# 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
এটি ছিল।

এটা তুচ্ছ হলেও, আমি রানারের নাম ড্যানজিগ রেখেছি Misfits-এর ভোকালিস্টের নামে।
কারণ গ্লেন ড্যানজিগ আড়ালে বিল্ডের কাজ করছেন এটা ভাবলে মজাদার লাগে।

মনে হচ্ছে 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
সফল!!!!
তাহলে, এইবার এই পর্যন্তই।
আবার দেখা হবে।