网易首页 > 网易号 > 正文 申请入驻

在 Fedora CoreOS 上运行 GitHub Actions | Linux 中国

0
分享至

导读:GitHub Actions 是一项为快速建立持续集成和交付(CI/CD)工作流程而提供的服务。   

本文字数:6029,阅读时长大约: 6分钟

https://linux.cn/article-13846-1.html
作者:Clément Verna
译者:Xingyu.Wang

docs.github.com 是一项为快速建立持续集成和交付(CI/CD)工作流程而提供的服务。这些工作流程在被称为“运行器(runner)”的主机上运行。GitHub 提供的 docs.github.com 的操作系统的选择是有限的(Windows Server、Ubuntu、MacOS)。

另一个选择是使用 docs.github.com 的运行器,这让仓库管理员对运行器有更多控制。自托管的运行程序是专门为某个存储库或组织服务的。下面的文章介绍了使用 Fedora CoreOS 配置自托管运行程序的步骤。

入门

Fedora CoreOS 是一个精简的操作系统,旨在便于大规模的部署和维护。该操作系统会自动更新,并默认提供运行容器所需的工具。由于这些原因,Fedora CoreOS 是运行 CI/CD 工作流程的一个极佳选择。

配置和配备 Fedora CoreOS 机器的第一步是生成一个 github.com 文件。 github.com 允许你使用更友好的格式(YAML)生成 Ignition 文件。

配置一个 Fedora CoreOS 运行器

要在 Fedora CoreOS 上执行 GitHub Actions,托管主机需要用于注册和运行该运行器的二进制文件和脚本。从 github.com 下载二进制文件和脚本,并部署在 /usr/local/sbin/actions-runner 下。

  1. version: "1.3.0"

  2. variant: fcos

  3. storage:

  4. directories:

  5. - path: /usr/local/sbin/actions-runner

  6. mode: 0755

  7. user:

  8. name: core

  9. group:

  10. name: core

  11. files:

  12. - path: /usr/local/sbin/actions-runner/actions-runner-linux.tar.gz

  13. overwrite: true

  14. contents:

  15. source: https://github.com/actions/runner/releases/download/v2.278.0/actions-runner-linux-x64-2.278.0.tar.gz

  16. mode: 0755

  17. user:

  18. name: core

  19. group:

  20. name: core

注册和删除令牌

为一个项目配置运行器需要一个“令牌(token)”。这可以防止在没有正确权限的情况下从项目中注册或删除自托管的运行器。GitHub 提供的令牌有一个小时的过期时间。如果运行器在这个时间之后重新启动,它将需要一个新的注册令牌。

该令牌可能出问题,特别是在 Fedora CoreOS 自动更新时。更新过程希望托管主机在收到新数据后至少每隔几周重启一次。

幸运的是,可以使用 GitHub REST API 来获取这些令牌,并在托管主机每次重启时自动配置运行器。下面的 manage-runner.sh 脚本使用 API 来获取令牌,删除任何已经配置好的运行器,并用新的令牌注册运行器。

  1. #!/bin/bash

  2. # Handles the Github Action runner configuration.

  3. # Remove and Registration token expires after 1 hour, if we want our runner

  4. # to work after a reboot (auto update) we need to refresh the tokens.

  5. # First remove the runner with a fresh remove token

  6. REMOVE_TOKEN=$(curl -u ${GITHUB_USER}:${GITHUB_TOKEN} -X POST -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/${GITHUB_USER}/${GITHUB_REPO}/actions/runners/remove-token | jq -r '.token')

  7. /usr/local/sbin/actions-runner/config.sh remove --token ${REMOVE_TOKEN}

  8. # Then register the runner with a fresh registration token

  9. REGISTRATION_TOKEN=$(curl -u ${GITHUB_USER}:${GITHUB_TOKEN} -X POST -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/${GITHUB_USER}/${GITHUB_REPO}/actions/runners/registration-token | jq -r '.token')

  10. /usr/local/sbin/actions-runner/config.sh --url https://github.com/cverna/fcos-actions-runner --token ${REGISTRATION_TOKEN} --labels fcos --unattended

上面的脚本使用了一些环境变量,包含 GitHub 用户名和用于验证 REST API 请求的 docs.github.com(Personal Access Token)。个人访问令牌需要存储库权限,以便成功检索运行器的注册和移除令牌。该令牌是安全敏感信息,所以最好将其存储在一个具有更严格权限的不同文件中。在这个例子中,这个文件是 actions-runner

  1. GITHUB_USER=

  2. GITHUB_REPO=

  3. GITHUB_TOKEN=

以下是创建这两个文件 manage-runner.shactions-runner 的 Butane 片段。

  1. - path: /usr/local/sbin/actions-runner/manage-runner.sh

  2. contents:

  3. local: manage-runner.sh

  4. mode: 0755

  5. user:

  6. name: core

  7. group:

  8. name: core

  9. - path: /etc/actions-runner

  10. contents:

  11. local: actions-runner

  12. mode: 0700

  13. user:

  14. name: core

  15. group:

  16. name: core

在 Fedora CoreOS 上运行 Actions

最后,创建用于配置和启动运行器的 systemd 服务。在 Butane 配置文件中定义这些服务。

  1. systemd:

  2. units:

  3. - name: github-runner-configure.service

  4. enabled: true

  5. contents: |

  6. [Unit]

  7. Description=Configure the github action runner for a repository

  8. After=network-online.target boot-complete.target

  9. Requires=boot-complete.target

  10. [Service]

  11. EnvironmentFile=/etc/actions-runner

  12. Type=oneshot

  13. RemainAfterExit=yes

  14. User=core

  15. WorkingDirectory=/usr/local/sbin/actions-runner

  16. ExecStartPre=tar xvf actions-runner-linux.tar.gz --no-same-owner

  17. ExecStart=/usr/local/sbin/actions-runner/manage-runner.sh

  18. [Install]

  19. WantedBy=multi-user.target

  20. - name: github-runner.service

  21. enabled: true

  22. contents: |

  23. [Unit]

  24. Description=Run the github action runner

  25. After=github-runner-configure.service

  26. [Service]

  27. WorkingDirectory=/usr/local/sbin/actions-runner

  28. User=core

  29. ExecStart=/usr/local/sbin/actions-runner/run.sh

  30. [Install]

  31. WantedBy=multi-user.target

这将创建两个服务:github-runner-configure.service(在主机启动完成后运行一次)和 github-runner.service(运行 Actions 运行器二进制文件并等待新的 CI/CD 作业)。

现在 Butane 配置已经完成,从中生成一个 Ignition 文件并配备一个 Fedora CoreOS Actions 运行器。

  1. $ podman run -i --rm -v $PWD:/code:z --workdir /code quay.io/coreos/butane:release --pretty --strict --files-dir /code config.yaml -o config.ignition

一旦 Ignition 文件生成,它就可以用来在 docs.fedoraproject.org Fedora CoreOS 的平台上配备一个运行器。

配置一个 Action 来使用一个自托管的运行器

下面的测试 Action 工作流程将测试 FCOS 的自托管的运行器。在你的 git 存储库中创建以下文件 .github/workflows/main.yml

  1. # This is a basic workflow to help you get started with Actions

  2. name: CI

  3. # Controls when the action will run.

  4. on:

  5. # Triggers the workflow on push or pull request events but only for the main branch

  6. push:

  7. branches: [ main ]

  8. pull_request:

  9. branches: [ main ]

  10. # Allows you to run this workflow manually from the Actions tab

  11. workflow_dispatch:

  12. # A workflow run is made up of one or more jobs that can run sequentially or in parallel

  13. jobs:

  14. # This workflow contains a single job called "build"

  15. build:

  16. # The type of runner that the job will run on

  17. runs-on: fcos

  18. # Steps represent a sequence of tasks that will be executed as part of the job

  19. steps:

  20. # Runs a single command using the runners shell

  21. - name: Run a one-line script

  22. run: podman run --rm fedora-minimal:34 echo Hello World !

请注意,runs-on 的配置被设置为使用标签为 fcos 的运行器。

本文介绍的代码可以在 github.com 中找到。

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

欢迎遵照 CC-BY-NC-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
从皮卡司机到突击队员:这份追杀名单,让参与者们无处遁形?

从皮卡司机到突击队员:这份追杀名单,让参与者们无处遁形?

寰球经纬所
2026-05-24 16:10:07
周冬雨“拔萝卜”的瓜!

周冬雨“拔萝卜”的瓜!

八卦疯叔
2026-05-23 11:01:00
存储热潮愈演愈烈!奖金拿到手软 三星、SK海力士员工涌入豪车展厅

存储热潮愈演愈烈!奖金拿到手软 三星、SK海力士员工涌入豪车展厅

财联社
2026-05-24 14:00:09
1986-2025年现象级收视大剧,你看过几部?

1986-2025年现象级收视大剧,你看过几部?

年代回忆
2026-05-22 20:57:16
全球100个最热城市,印度占98个!鲁比奥访印被热懵:太热了,我长话短说

全球100个最热城市,印度占98个!鲁比奥访印被热懵:太热了,我长话短说

红星新闻
2026-05-24 17:24:27
深夜,美伊谈判传来大消息!原油暗盘跳水,特朗普最新表态:达成协议的可能性大约占一半,要么实施更强打击,要么签署一项好的协议

深夜,美伊谈判传来大消息!原油暗盘跳水,特朗普最新表态:达成协议的可能性大约占一半,要么实施更强打击,要么签署一项好的协议

每日经济新闻
2026-05-24 00:35:07
“大湾区揽胜”只卖27万背后,何小鹏的焦虑藏不住了

“大湾区揽胜”只卖27万背后,何小鹏的焦虑藏不住了

深蓝财经
2026-05-22 20:43:07
尘埃落定!决赛2-3输球仅1天,日籍主帅下课悬念揭晓,董路怒批!

尘埃落定!决赛2-3输球仅1天,日籍主帅下课悬念揭晓,董路怒批!

大秦壁虎白话体育
2026-05-24 08:54:31
投喂狮子时观光车车门突然打开!探访八达岭野生动物园:猛兽区投喂项目已关闭,同类观光车停运

投喂狮子时观光车车门突然打开!探访八达岭野生动物园:猛兽区投喂项目已关闭,同类观光车停运

红星新闻
2026-05-24 18:07:17
武契奇携夫人到访长城,现场回应被中国民众喊“577”的趣事

武契奇携夫人到访长城,现场回应被中国民众喊“577”的趣事

极目新闻
2026-05-24 20:18:21
大樱桃跌成"白菜价",为啥便宜还没人买?网友:4个原因,真扎心

大樱桃跌成"白菜价",为啥便宜还没人买?网友:4个原因,真扎心

天天热点见闻
2026-05-24 06:35:41
伊朗总统:准备向世界保证,伊朗不寻求拥有核武器

伊朗总统:准备向世界保证,伊朗不寻求拥有核武器

新华社
2026-05-24 20:20:19
香港女航天员黎家盈还未出征先成照妖镜,别有用心的人到底想干嘛

香港女航天员黎家盈还未出征先成照妖镜,别有用心的人到底想干嘛

大鱼简科
2026-05-24 16:44:36
乌克兰收复400平方公里领土,俄军星链终端被定向断网,指挥系统瘫痪

乌克兰收复400平方公里领土,俄军星链终端被定向断网,指挥系统瘫痪

爆角追踪
2026-05-24 17:27:23
里克尔梅:老佛爷是皇马历史最好的主席,但皇马需开启新周期

里克尔梅:老佛爷是皇马历史最好的主席,但皇马需开启新周期

懂球帝
2026-05-24 20:40:46
冯小刚:不和邓超王志文合作,今生不和徐帆生孩子,永远愧对冯巩

冯小刚:不和邓超王志文合作,今生不和徐帆生孩子,永远愧对冯巩

飘飘然的娱乐汇
2026-05-23 19:05:06
雅马哈和杜卡迪掀桌子,联合众车队向赛会施压,这样下去没法玩了

雅马哈和杜卡迪掀桌子,联合众车队向赛会施压,这样下去没法玩了

长江浊酒客
2026-05-24 15:43:38
暴雨黄色预警!江南江汉江淮黄淮等地警惕强降雨可能引发次生灾害

暴雨黄色预警!江南江汉江淮黄淮等地警惕强降雨可能引发次生灾害

环球网资讯
2026-05-24 08:56:09
黄仁勋与家人台湾省聚餐!爸爸与哥哥都秃顶,因祖籍问题网友破防

黄仁勋与家人台湾省聚餐!爸爸与哥哥都秃顶,因祖籍问题网友破防

裕丰娱间说
2026-05-24 07:58:18
面试了个985硕士,期望月薪7万,老板问他:“唐僧师徒四人一马,必须辞退一个,应该辞退谁?”他的回答:白龙马!当场录用了

面试了个985硕士,期望月薪7万,老板问他:“唐僧师徒四人一马,必须辞退一个,应该辞退谁?”他的回答:白龙马!当场录用了

励职派
2026-05-24 19:21:07
2026-05-24 22:15:00
Linux
Linux
Linux 中国开源社区
8018文章数 73112关注度
往期回顾 全部

科技要闻

我戴着摄像头上班,正在帮AI抢走我饭碗

头条要闻

女子将2万多克黄金存珠宝店起纠纷:老板猥亵我和女儿

头条要闻

女子将2万多克黄金存珠宝店起纠纷:老板猥亵我和女儿

体育要闻

唐斯发牌,大头逆袭:骑士跌向残忍夏季

娱乐要闻

王鹤棣掉粉超20万!代言和作品遭抵制

财经要闻

什么情况下,本轮AI大行情会结束?

汽车要闻

2027款星途瑶光上市 把"全球车"标准卷进13万级市场

态度原创

教育
家居
艺术
公开课
军事航空

教育要闻

不是“双一流”,却深嵌产业链:这4所大学就业底气很足

家居要闻

低调传承 温润沉静

艺术要闻

何镜堂院士力作,深圳国际交流中心,竣工倒计时!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

深夜美伊谈判传来大消息 特朗普最新表态

无障碍浏览 进入关怀版