Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何给 GitHub Actions 添加自己的 Runner 主机

如何给 GitHub Actions 添加自己的 Runner 主机

原创
作者头像
陈少文
修改于 2021-01-14 02:51:11
修改于 2021-01-14 02:51:11
9K06
代码可运行
举报
文章被收录于专栏:陈少文陈少文
运行总次数:6
代码可运行

1. 什么是 GitHub Actions

在前面的文档中,我对 GitLab 提供的 CI 功能进行了实践,点击查看 。使用 GitLab 的好处是可以私有化部署、无限的私有仓库数量、CI 配置简单、能接入自建的 Runner 。但随着 GitHub 越来越开放,GitLab 的这些优势在逐步丧失。

从 CICD 的角度看,越接近 Git 仓库的功能,越贴近开发者。未来的开发者市场上,GitHub、GitLab、Coding、Gitee 这样的 SaaS 平台将具有很顽强的生命力。

GitHub Actions 是一个类似 GitLab CI 的服务。GitLab 默认使用的是 .gitlab-ci.yml 文件,描述 CICD 流程。而 GitHub 使用的是 .github/workflows 目录下的 yaml 文件。最大的不同在于,GitHub 提供了一个 Actions 市场,开发者可以基于这些原子快速编排流程。

我在文档 使用镜像部署 Hexo 静态页面 中,使用下面的 yaml 配置进行编译和推送镜像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name: build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Build image
        run: make build

      - name: Login Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GHCR_TOKEN }}

      - name: Push image
        run:
          docker push ghcr.io/shaowenchen/documents:latest

每次 push 代码之后,Actions 就会自动运行,如下图:

这种方式对开发者十分友好,如果网络通畅,GitHub Actions 能够满足很多团队的 CICD 需求。

2. 什么时候需要接入自己 Runner

2.1 对构建机器有要求

目前,GitLab 只提供了下面几类运行环境:

  • windows
  • ubuntu
  • macos

但并不是每个版本的系统都支持,目前只能使用指定的版本,也无法指定 CPU 架构。

另一方面,在构建过程当中,GitHub 提供的构建机,对物理资源也有所限制。构建虚拟机的配置如下:

  • 2 core CPUs
  • 7 GB of RAM memory
  • 14 GB of SSD disk space

可能在未来,相关的物理资源配置会有所提升,但始终会有限制。当需要构建某些大型项目,特别是 C++ 项目时,这样的物理资源配置是不能够满足要求的。

2.2 私有仓库需要大量构建

下图是目前 GitHub 官方给出的构建报价:

非常幸运的是公开仓库免费使用,只有私有仓库的额度有限制。不同付费级别的用户,具有不同的构建时长。需要注意的是,这里的时长指的是 Linux 的构建时长。Windows 使用一分钟,折算为 Linux 的两分钟。MacOS 使用一分钟,折算为 Linux 的十分钟。

对私有仓库有大量构建需求的项目,使用 GitHub Actions 提供的构建机性价比不高。

3. 添加主机 Runner

这里的 Runner 指的是 GitHub Actions 的运行环境,也就是 .github/workflows 文件夹下 yaml 中指令的运行环境。这里主要添加主机 Runner,如果是添加容器或者 Kubernetes Runner ,需要将 actions-runner 打包到镜像中,然后运行接入 GitHub Actions,在其他方面没有差别。

首先进入项目,在 Settings 页面中,找到 Actions 。

点击上图的 Add runner 进入下图的添加主机页面,同样支持三种操作系统,macOS、Linux、Windows。

在页面选择操作系统和架构之后,按照安装提示操作即可。

  • 新建用户 runner:runner
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groupadd -g 1234 runner
useradd runner -u 1234 -g 1234
su runner
cd ~
  • 下载 Runner
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir actions-runner && cd actions-runner
curl -O -L https://github.com/actions/runner/releases/download/v2.274.2/actions-runner-linux-x64-2.274.2.tar.gz
tar xzf ./actions-runner-linux-x64-2.274.2.tar.gz
  • 配置 Runner

在这一步中,可能需要根据提示。执行命令 su root,切换到 root 用户,执行 ./bin/installdependencies.sh 安装依赖。

执行 config.sh 开始配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./config.sh --url https://github.com/shaowenchen/pipeline-test --token AKNLJON6JWRTO35GV3PXGVS7ZHPZO

根据命令的提示,进行如下交互:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Enter the name of runner: [press Enter for node1] mycentos

This runner will have the following labels: 'self-hosted', 'Linux', 'X64'
Enter any additional labels (ex. label-1,label-2): [press Enter to skip] centos

√ Runner successfully added
√ Runner connection is good

# Runner settings

Enter name of work folder: [press Enter for _work] /home/runner/workspaces

√ Settings Saved.
  • 运行 Runner
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./run.sh
  • 页面查看 Runner

在 GitHub 的 Actions 页面可以看到新增加的 Runner。

4. 使用测试

  • 添加 workflows 文件

在项目 master 分支,增加文件 .github/workflows/blank.yml ,内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name: CI
on:
  push:
    branches: [ master ]

jobs:
  hello:
    runs-on: self-hosted
    steps:
      - uses: actions/checkout@v2

      - name: Run a multi-line script
        run: |
          date
          uname -a
  • 查看运行结果

提交文件之后,Actions 马上就会开始运行,执行结果如下图:

  • 查看节点上的 workspaces
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tree -L 3 /home/runner/workspaces/

/home/runner/workspaces/
|-- _actions
|   `-- actions
|       `-- checkout
|-- _PipelineMapping
|   `-- shaowenchen
|       `-- pipeline-test
|-- pipeline-test
|   `-- pipeline-test
|       |-- a
|       |-- choice
|       |-- deploy
|       |-- Jenkinsfile
|       |-- plain-credential
|       `-- readme.md
|-- _temp
`-- _tool

从 workspaces 中的文件可以看到,Actions 将代码 checkout 到主机上,然后在主机上执行了编排命令。

5. 参考

作者: Shaowen Chen

原文链接:https://www.chenshaowen.com/blog/how-to-add-self-hosted-runners-to-github-action.html

更多精彩内容,请关注公众号:问其
更多精彩内容,请关注公众号:问其

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Gitlab-CICD最简单明了的入门教程
由于目前公司使用的gitlab,大部分项目使用的CICD是gitlab的CICD,少部分用的是jenkins,使用了gitlab-ci一段时间后感觉还不错,因此总结一下
全栈程序员站长
2022/09/07
7K0
Gitlab-CICD最简单明了的入门教程
【前端部署第十篇】CICD基础概念了解,并实现基于 docker 的自动部署
大家好,我是山月,这是我最近新开的专栏:「前端部署系列」。包括 Docker、CICD 等内容,大纲图示如下:
山月
2022/05/23
2.4K0
【前端部署第十篇】CICD基础概念了解,并实现基于 docker 的自动部署
零基础入门 GitHub/Gitea Actions 流程自动化
几年前开始,为了将自己的杂七杂八的代码托管起来,自己建了代码私服,当时综合调研了下选择了比较轻量的Gitea,一是防止github、gitee、coding等产品托管的代码审查,二是为了应对墙,不然推送代码真吃力,Gitea1.19 版本之前不支持内置的CI/CD解决方案,所以是我自己使用的Gitea+Drone实现流程自动化。
Lcry
2024/07/17
9380
零基础入门 GitHub/Gitea Actions 流程自动化
突破限制!!!尝试Github Actions
用过Gitlab的同学基本上都了解过Gitlab持续集成与持续部署,Gitlab CICD是通过自管理的一些Runner按照声明式的的配置清单实现持续集成的自动化任务,利用Github Actions可以自动化管理、构建、部署托管在Github上的代码,当然你可以用它自动化管理和部署你的博客,无需人为干预,也可以利用Actions帮你拉取一些国内拉不到的镜像等,功能有了,至于怎么使用就看个人了,前面我写了几篇关于Gitlab CICD的实践文章以及在Kubernetes上如何使用Gitlab CICD,大家有兴趣的可以前来审校:
公众号: 云原生生态圈
2020/12/29
1.4K0
突破限制!!!尝试Github Actions
打造企业级自动化运维平台系列(十):Gitlab Runner 实现 CI/CD 详解
Gitlab实现CICD的方式有很多,比如通过Jenkins,通过Gitlab Runner等,今天主要介绍后者。Gitlab在安装的时候,就默认包含了Gitlab CI的能力,但是该能力只是用于协调作业,并不能真的去执行作业,因此需要搭配Gitlab Runner来作为执行器实现具体的CICD工作。Gitlab Runner可以被安装在任意支持的系统上,比如Linux、Windows、Mac,甚至也可以运行在Docker、Kubernetes集群上。更多关于构建企业自动化运维平台系列的
民工哥
2024/01/18
8020
打造企业级自动化运维平台系列(十):Gitlab Runner 实现 CI/CD 详解
用 GitHub Action 构建一套 CI/CD 系统
Nebula Graph 最早的自动化测试是使用搭建在 Azure 上的 Jenkins,配合着 GitHub 的 Webhook 实现的,在用户提交 Pull Request 时,加个 ready-for-testing 的 label 再评论一句 Jenkins go 就可以自动的运行相应的 UT 测试,效果如下:
NebulaGraph
2020/05/08
1.3K0
用 GitHub Action 构建一套 CI/CD 系统
【玩转腾讯云】Github Actions+CVM实践(CICD如此简单)
简言之:它是github推出的持续集成部署的工具,目前优秀的cicd工具包括:travis ci,jenkins
醉酒鞭名马
2020/04/15
2.6K3
【玩转腾讯云】Github Actions+CVM实践(CICD如此简单)
基于 GitLab CI 搭建自动构建环境
持续集成(Continuous integration,简称CI)指的是,频繁地(一天多次)将代码集成到主干。
DevOps时代
2020/06/16
3.3K0
基于 GitLab CI 搭建自动构建环境
GitHub Actions 自动构建镜像 并发布到 Docker Hub
当 docker-push-release.yml 触发运行时, docker-push-beta 并不会触发运行,(因此不用担心发布release时, 错误push两次)
yiyun
2022/04/01
2.5K0
GitHub Actions 自动构建镜像 并发布到 Docker Hub
GitLab Runner部署(kubernetes环境)
如下图所示,开发者将代码提交到GitLab后,可以触发CI脚本在GitLab Runner上执行,通过编写CI脚本我们可以完成很多使用的功能:编译、构建、生成docker镜像、推送到私有仓库等:
程序员欣宸
2021/05/14
1.4K0
GitLab Runner部署(kubernetes环境)
Gitlab注册runner使用说明
GitLab Runner 是一个开源项目,用于运行您的作业并将结果发送回 GitLab。它与 GitLab CI 结合使用,GitLab CI 是 GitLab 随附的用于协调作业的开源持续集成服务。
mikelLam
2024/07/07
6600
Gitlab注册runner使用说明
利用 GitHub Action 自动部署 Hexo 博客
使用 Hexo 写博客,每次写完都要生成静态文件,而且 Hexo 基于 Node.JS,不能再手机上更新。
OhhhCKY
2022/12/28
1.5K0
利用 GitHub Action 自动部署 Hexo 博客
GitLab Runner介绍及安装
GitLab Runner是一个开源项目,用于运行您的作业并将结果发送回GitLab。它与GitLab CI一起使用,GitLab CI是GitLab随附的开源持续集成服务,用于协调作业。
没有故事的陈师傅
2021/03/19
7.4K0
应用自动化部署篇
截止昨天已经将应用容器化并部署到k8s平台上,但是每次都要手动部署肯定不现实,所以有一个可自动部署的平台或功能是很重要的,这样就能实现随时开发随时部署了。那么有什么办法可以实现自动部署呢?
希里安
2023/10/30
5390
应用自动化部署篇
Docker搭建自己的Gitlab CI Runner
哎_小羊
2018/01/02
15.1K0
Docker搭建自己的Gitlab CI Runner
Gitlab Runner的分布式缓存实战
本文目标是为K8S环境的Gitlab Runner准备好分布式缓存,并在pipeline脚本中使用该缓存,因此,在阅读本文前建议您对GitLab CI有一定了解,最好是阅读过甚至编写过pipeline脚本;
程序员欣宸
2021/05/19
1.3K0
Gitlab Runner的分布式缓存实战
GitHub Actions 指南
GitHub Actions 使你可以直接在你的 GitHub 库中创建自定义的工作流,工作流指的就是自动化的流程,比如构建、测试、打包、发布、部署等等,也就是说你可以直接进行 CI(持续集成)和 CD (持续部署)。
凌虚
2020/07/20
1.1K0
重磅!GitHub 推出容器镜像仓库服务!
微软收购了 GitHub 之后,并没有破坏 GitHub 的中立性,而是不断给开发者带来惊喜,从 GitHub Actions,到 GitHub Package Registry[1],Github 依旧是原来的那个 GitHub。
米开朗基杨
2020/09/10
4.2K0
提升你的CI/CD流水线:使用GitHub Actions自动化 Docker
了解如何使用 GitHub Actions 自动化 Docker 工作流程,以实现更快的部署。
云云众生s
2025/03/05
4240
提升你的CI/CD流水线:使用GitHub Actions自动化 Docker
Gitlab Runner的分布式缓存实战
https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
程序员欣宸
2022/05/09
4920
Gitlab Runner的分布式缓存实战
推荐阅读
相关推荐
Gitlab-CICD最简单明了的入门教程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档