0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何本地运行和测试Github Actions?

冬至子 来源:dejavudwh 作者:dejavudwh 2023-08-02 16:44 次阅读

前言
一般来说,使用 Github Actions 都需要在 Repo 里完成相应的 event 才能够触发(比如push/pull_request等),然后在 Github 提供的服务器(容器)中运行。这样有两个缺点:

每次都需要在 Repo 完成相应的 evenet,操作较为费时。
一个 event 可能会触发多个 Action,并且在 Github 的服务器上运行时需要排队,运行较为耗时。
所以,本文介绍如何在本地运行 Github Actions 来解决上述两个问题,主要有以下两个依赖:

Docker Desktop on Windows(Backend 是 WSL)
act

依赖安装

Docker Desktop on Windows

安装 Docker Desktop on Windows 前需要先安装 WSL,安装 WSL 的操作可以参考官方文档

安装 Docker Desktop on Windows,

进入 Docker Desktop on Windows 时可能会一直停留在 starting the docker engine 界面,可以考虑以下解决方法:

重启 Docker 服务
net stop com.docker.service

net start com.docker.service

先点击右上角登录 Docker 账号
act
act 是在本地运行 Github Actions 的工具,它依赖于 Docker。安装可以参考 nektos/act: Run your GitHub Actions locally ,或者直接在这个仓库的 release 当中下载,只有一个 Windows 可执行文件(exe)。

本地运行 Github Actions
act 使用说明

Command structure:

act [] [options]
If no event name passed, will default to "on: push"
If actions handles only one event it will be used as default instead of "on: push"

List all actions for all events:

act -l

List the actions for a specific event:

act workflow_dispatch -l

List the actions for a specific job:

act -j test -l

Run the default (push) event:

act

Run a specific event:

act pull_request

Run a specific job:

act -j test

Collect artifacts to the /tmp/artifacts folder:

act --artifact-server-path /tmp/artifacts

Run a job in a specific workflow (useful if you have duplicate job names)

act -j lint -W .github/workflows/checks.yml

Run in dry-run mode:

act -n

Enable verbose-logging (can be used with any of the above commands)

act -v
示例:RT-Thread 的 Github Actions
进入 RT-Thread 源代码目录(只要进入第一层即可,act 会自动搜索 .github/workflow 目录)
使用act -l​查看当前目录下的 Action

1.jpg

可以看到有重名(Job ID)的 Action,所以需要指定要运行的 Action(act -j test -W ..githubworkflowsaction_tools.yml​)
如果运行时拉不下镜像可以修改一下 daemon.json 中的镜像源

"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]

运行结果如下:

1.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 触发器
    +关注

    关注

    14

    文章

    1685

    浏览量

    60412
  • RT-Thread
    +关注

    关注

    31

    文章

    1149

    浏览量

    38908
收藏 人收藏

    评论

    相关推荐

    #PikaScript 进阶-Github自动测试-Github Actions CI 3.1

    嵌入式
    lyon1998
    发布于 :2022年01月18日 11:40:54

    Github发布史上最大更新

    了。以前我们用Github基本上只有几个动作:上传、搜索、下载,如果我们需要测试Github上面一个项目,我们必须下载到本地运行。很多情况一
    发表于 10-17 10:03

    Linux 下建立 Git 与 GitHub的连接并clone至本地

    SSH 建立本地 Git 与 GitHub 的连接了。创建GitHub仓库↑ 创建一个名为 baidu 的仓库↑ SSH 地址为 git@github.com:woider/baid
    发表于 07-09 08:13

    【触觉智能 Purple Pi开发板试用】 GitHub Actions 在线编译 uboot by jf_84491108

    https://github.com/wireless-tag-com/uboot-ssd20x提供了本地编译Purple Pi R1 uboot的教程。但本地编译需要一台安装了Linux或在虚拟机
    发表于 11-01 19:48

    【触觉智能 Purple Pi开发板试用】 GitHub Actions 在线编译 Buildroot by jf_84491108

    https://github.com/industio/PurPle-Pi-R1提供了本地编译Purple Pi R1 Buildroot的教程。但本地编译需要一台安装了Linux或在虚拟机中安装
    发表于 11-01 22:17

    【触觉智能 Purple Pi开发板试用】 GitHub Actions 在线编译 qmsd by jf_84491108

    https://github.com/wireless-tag-com/8ms-sigmastar提供了本地编译Purple Pi R1 qmsd的教程。但本地编译需要一台安装了Linux或在虚拟机
    发表于 11-02 21:25

    【触觉智能 Purple Pi开发板试用】 GitHub Actions 在线编译 OpenWrt 失败 by jf_84491108

    时往往因网络原因导致依赖库安装不完整,需要更换安装源等,但即使换源安装完依赖库,在编译过程中可能还会遇到各种由换源安装导致的稀奇古怪的bug,费时费力。而利用GitHub Actions 在线编译则
    发表于 11-02 22:09

    尝试使用GitHub Actions在线编译瑞萨RZ/G2UL Instructions images

    省流:不行测试流程:(1)新建项目https://github.com/LV36/RZ-G2UL/(2)新建文件.github/workflows/RZ-G2UL-images.yml,文本框中输入
    发表于 11-21 10:44

    本地测试环境搭建

    本文主要介绍了本地测试环境搭建搭建一个本地测试环境无疑是个明智的选择,再结合GitHub、Jenkins、Docker等工具,进行持续集成、
    的头像 发表于 01-31 16:01 2625次阅读
    <b class='flag-5'>本地</b><b class='flag-5'>测试</b>环境搭建

    GitHub宣布开放无限私有存储库以及限时访问GitHub Actions

    GitHub 宣布,即日起,所有用户都可以免费使用该平台的核心功能。无论是个人免费账户、还是商业项目团队,都可访问 GitHub 的无限私有存储库、以及每月 2000 分钟的 GitHub A
    的头像 发表于 04-15 09:36 3358次阅读

    上传本地项目代码到github

    GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。本文主要讲解如何将本地代码上传至Github
    的头像 发表于 11-14 16:45 836次阅读
    上传<b class='flag-5'>本地</b>项目代码到<b class='flag-5'>github</b>

    RT-Thread中的Github Actions

    RT-Thread中一共有五个Github Action(rt-thread/.github/workflow) 分别是: RT-Thread BSP build check(.github
    的头像 发表于 06-01 03:10 354次阅读
    RT-Thread中的<b class='flag-5'>Github</b> <b class='flag-5'>Actions</b>

    如何使用pkgs-test工具进行本地调试?

    pkgs-test作为一个可以在github actions上面运行检查软件包编译情况的工具,同时也可以在本地使用。
    的头像 发表于 09-21 15:00 409次阅读

    使用pkgs-test工具对软件包进行qemu测试

    pkgs-test是一个可以在github actions上面检查软件包编译情况的工具。除了检查软件包的编译情况pkgs-test目前还添加了qemu运行测试
    的头像 发表于 09-25 16:19 405次阅读

    php运行环境本地测试地址是

    PHP运行环境本地测试地址是指在本地计算机上搭建的用于测试运行PHP代码的的环境地址。搭建该
    的头像 发表于 12-04 15:25 296次阅读