即將推出的 Gitea Actions 致力於打造一個 CI/CD 工具的標準協定,第三方 CI 系統可以基於actions 協定與 Gitea 平臺整合,提供一站式管理方案。Gitea Actions 為此走出了第一步。
GitHub Actions 是一種持續整合和持續交付 (CI/CD) 平臺,可用於自動執行任務、測試和部署。使用者可以建立工作流程來構建和測試儲存庫的每個拉取請求,或將合併的拉取請求部署到生產環境。
GitHub Actions 不僅僅是 DevOps,還允許使用者在儲存庫中發生其他事件時執行工作流程。 例如,可以執行工作流程,以便在有人建立新問題時自動新增相應的標籤。
GitHub 提供 Linux、Windows 和 macOS 虛擬機器器來執行工作流程,或者在自有的資料中心或雲基礎架構中託管執行器。
得益於廣大開源社群的支援,目前 Gitea 可以良好適配以下 DevOps 工具。
經過長期的社群互動,我們獲得了大量第三方CI系統的整合方案。但我們始終發現,獨立搭建並運維一整套CI系統只是一小部分極客的專長,對於更廣泛的使用者而言這並不是個簡單的工作,於是我們開始嘗試為此努力,讓工具更好地為人服務。
不可否認 GitHub Actions 打造了一套很棒的工作環境,它的設計理念使倉庫與 CI 工具之間有了更加緊密的整合,實現了程式碼即設定,同時平臺使用者為整套系統提供了豐富的應用擴充套件,相比傳統模式來說,易用性上更勝一籌。如果能將它的優點移植到 Gitea 將是件很棒的事情。
好訊息是,經過兩年的調研與討論,我們終於將 Gitea 內建CI/CD系統的開發任務提上了日程。(#13539)
Gitea Actions 實現了一個內建的 CI/CD 系統框架,相容 GitHub Actions 的 YAML 工作流編排格式,相容 GitHub Marketplace 中大部分現有的 Actions 外掛。
系統由三部分組成:
1.系統管理員可以存取 Runners 管理介面,建立、編輯和刪除 Runner。
2.通過倉庫頂部的導航開啟 Actions,檢視 CI 構建資訊。
3.點選某個 CI 構建結果,檢視紀錄檔。
⚠ 實驗性功能,請勿用於生產環境
1.編譯執行 Gitea
下載帶有 Actions 模組的 Gitea 原始碼:
# 目前可以從 @wolfogre 的開發分支克隆帶有 Actions 模組的原始碼到本地編譯。
git clone https://github.com/wolfogre/gitea.git --branch=feature/bots
cd gitea
編譯方法可以參考從原始碼安裝。這裡我們需要準備開發環境 Node.js LTS (nvm instal --lts
) 和 Golang。
以下是推薦的打包方法(帶有SQLite,方便本地測試)
TAGS="bindata sqlite sqlite_unlock_notify" make build
啟動 Gitea 主程式。這裡先走完初始化步驟,會生成一個組態檔,位於當前目錄下的
./custom/conf/app.ini
編輯上述組態檔,開啟 Actions 功能。
[actions]
ENABLED = true
重新啟動程式:./gitea web
2.啟動 Runner
首先編譯 act_runner
程式
git clone https://gitea.com/gitea/act_runner.git
cd act_runner
make build
然後將 Runner 註冊到 Gitea 伺服器。
$ ./act_runner register
INFO Registering runner, arch=amd64, os=linux, version=0.1.5.
WARN Runner in user-mode.
INFO Enter the Gitea instance URL (for example, https://gitea.com/): [輸入伺服器地址]
INFO Enter the runner token: [輸入 Runner 令牌]
INFO Enter the runner name (if set empty, use hostname:ubuntu ): [輸入 Runner 名稱]
INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-20.04:docker://node:16-bullseye,ubuntu-18.04:docker://node:16-buster): [輸入 Runner 標籤]
...
DEBU Successfully pinged the Gitea instance server
INFO Runner registered successfully.
--no-interactive
--instance
填寫伺服器地址--token
填寫管理員從伺服器獲取的 Actions 令牌(/admin/runners
)./act_runner register --instance http://<your_gitea_instance> --token <my_runner_token> --no-interactive
啟動程式
./act_runner daemon
3.為倉庫啟用 Actions 功能
您可以新建一個倉庫並手動開啟倉庫設定中的 Actions 功能。
重新整理頁面後,我們可以發現倉庫的頂部功能導航欄中多了一個 Actions 功能,點選 Actions 進入可以看到目前為空的 All Workflows 任務列表。
4.上傳 Workflows 設定到倉庫目錄 .gitea/workflows/build.yaml
。由於 Gitea Actions 相容 GitHub Actions,因此您可以從 GitHub 檔案中複製範例。開始學習使用 Gitea Actions 吧!