-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Welcome to the nocode wiki! Here we introduce some useful action skills
众所周知, 现在 GitHub 的 Action 功能非常强大, 不仅能提供 Free 的多平台/架构/版本的云环境, 还能组合/结合各种不同 action 模块使用, 优点不言而喻. 不过随着功能的加强, 它的复杂性也不可避免的大幅增加, 有许多容易过时/摸不着头脑的设定需要了解, 官方文档作为第一参考没有问题, 这里主要是补充
GitHub Action
内置了一些系统变量, 并不需要/也不允许用户自定义设置, 例如:
- github.token
- xx
由于历史设定, 我们可以在官方建议的配置中看到几种写法, 初见可能很晕, 有以下几个
- GITHUB.TOKEN (全大写)
- github.token (全小写)
-
${{ secrets.GITHUB_TOKEN }}
(完整/严谨引用)
注: secrets.*
前缀基本代表你当前仓库的settings
中配置的 k-v 对, 其中 GITHUB_
前缀开头的是官方内置, 不允许用户使用相同前缀命名
那么很容易想到的下一个问题是 GITHUB.TOKEN
的权限是如何控制的呢, 例如我想让一个 action 运行完自动上传包到 github 仓库中
- 首先, 在每个
repo -> Settings -> Actions -> General -> Workflow permissions
中会有一个基本全局设置, - 通过在每个 action 文件(yml) 的
permissions
变量参数中控制, 详见此
同样很容易让人配置时困扰的③兄弟, 经常傻傻分不清
首先 Secrets
大类最好理解, 它提供的 KV 对是加密的, 只有 action 可以读取它的 value, 但是日志无法显示(例如 echo), 会被自动加密
但是很快点进来又会发现有两个子类 (环境密钥 + 仓库密钥), 其中仓库密钥好理解就是指每个仓库自己的 kv 对, 你 action 中使用 secrets.xx
调用到这里的 KEY
, 那么环境密钥(Env Secret)是啥呢?
由于容器环境的设定, 如果没有缓存存在, 每一次的编译/测试操作都需要重复下载大量文件, 可能会非常耗时, github 官方提供了一个通用的 action@cache
来对满足 k-v
对的常见语言进行包/文件缓存, 这里大体参考官方文档即可理解
但是类似使用 Make
编译 C++ 的项目, 该如何进行缓存就是一个很大的问题, 否则每次编译都朝得着半小时去 (注: 不可直接使用 CMake/XMake
等 action 进行套用)
默认 action 运行在 Github 的官方基础镜像/action 镜像上, 但它居然还允许运行在你指定的服务器/本机环境上, 这个配置在仓库的 repo -> Settings -> Actions -> Runners
中,