GitHub Actions 魔法入门

GitHub Actions 魔法入门

这篇文章已经过时原因是GitHub修改了Actions的配置方式,新的文章->使用GitHub Actions自动构建镜像并推送到阿里云容器镜像服务

GitHub Actions是一种生命周期钩子出发的任务流。大致可以描述为,当什时候(如push时)就做啥啥啥(比如自动部署、测试)。怎么和IFTTT有点像?(逃

在Github网站上,是这么描述Actions的

Focus on what matters: code. With GitHub Actions you can automate your workflow from idea to production.

GitHub Actions 特性/原理

  • 通过 Docker 隔离
  • GitHub 提供慷慨的计算资源(每个 workflow 会独享 1 核虚拟 CPU, 3.75GB 内存, 网络权限和 100GB 的磁盘空间, 感觉比我的 VPS 性能还好)
  • 代码上下文(可以获取触发 Actions 的代码上下文环境, 比如当前分支)
  • workflow 有一定限制
  • 提供一种新的配置语言和一个体验非常现代化的 workflow 编辑器
  • 支持在代码仓库的 Settings 中增加不超过 100 个密钥(比如 Slack, S3 等), 供 workflow 使用; 也可以直接使用可视化编辑器增加
  • Workflow 的 Action 支持设置 Icon 和 Icon 背景色

使用

假设我们有一个基于Docker部署的项目——hello-actions

建立项目结构:

1
2
3
4
5
6
hello-actions
├── custom-action
│ ├── Dockerfile
│ └── entrypoint.sh
└── .github
└── main.workflow

在项目里,为的Actions建立一个Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
FROM debian:9-slim

LABEL "com.github.actions.name"="Hello World"
LABEL "com.github.actions.description"="Write message to the standard output"
LABEL "com.github.actions.icon"="mic"
LABEL "com.github.actions.color"="green"

LABEL "repository"="https://github.com/bulabula/bulabula"
LABEL "maintainer"="xlui <bulabula@bulabula.me>"

ADD entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

entrypoint.sh

1
2
3
#!/bin/bash

sh -c "echo $*"

最后编辑main.workflow文件(workflow语法文档):

1
2
3
4
5
6
7
8
9
10
11
12
workflow "Hello world workflow" {
on = "push"
resolves = ["Echo"]
}

action "Echo" {
uses = "./custom-action"
env = {
NAME = "bulabula"
}
args = "\"Hello world, I'm $NAME!\""
}

我们在workflow中定义的触发事件是pushworkflowon的值),所以当有新的commitpush到仓库时,该 workflow就会被触发执行

链接

一组实用的 GitHub Actions 集合 - Linux开发社区 | CTOLib码库

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×