这篇文章上次修改于 1747 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
突然想试用caddy2,但是caddy2没有caddy1的下载页面来方便下载,要用插件就需要自己编译。(已经有了)
但是大局域网的原因,本地编译一言难尽,之前一直是去vultr开个vps编译完就删除,这次突然就想试试 GitHub Actions。
看了下文档,再搜索一下,折腾了一会也算是可以使用了。
使用xcaddy编译caddy2的完整示例
先放示例文件:
点击此处展开示例配置文件
name: Build caddy-linux-amd64
on:
push:
paths:
- 'caddy-linux-amd64.md'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: install go
uses: actions/setup-go@master
- name: install xcaddy
run: |
tag_name=`curl -s https://api.github.com/repos/caddyserver/xcaddy/releases | grep 'tag_name' | sed -n '1p' | cut -d\" -f4`
wget -O ./xcaddy https://github.com/caddyserver/xcaddy/releases/download/${tag_name}/xcaddy_${tag_name}_linux_amd64
chmod 777 ./xcaddy
- name: build caddy
run: |
export GOARCH=amd64
export GOOS=linux
./xcaddy build \
--with github.com/mholt/caddy-webdav
- name: upload
uses: actions/upload-artifact@master
with:
name: caddy-linux-amd64
path: ./caddy
建立新的仓库 GitHub-Actions
因为只是想借用 GitHub Actions 编译一些自己的东西 ,所以是单独建立了个GitHub-Actions仓库来使用。
配置工作流程文件
关于工作流程的 YAML 语法
工作流程文件使用 YAML 语法,必须有
.yml
或.yaml
文件扩展名。 如果您是 YAML 的新用户并想要了解更多信息,请参阅“五分钟了解 YAML”。必须将工作流程文件存储在仓库的
.github/workflows
目录中。
这里是要用来编译caddy2,所以在.github/workflows
下创建文件caddy-linux-amd64.yml
工作流程文件由多个部分组成,这里只用到3个,分别为:name
,on
,jobs
name | 工作流程的名称 |
on | 触发工作流程的 GitHub 事件的名称,可以是单一或多个 |
jobs | 作业,工作流程运行包括一项或多项作业 |
name
这里就直接写
name: Build caddy-linux-amd64
on
由于这里只是想借用 GitHub Actions 编译 caddy ,所以并不想随意触发该工作流程,考虑后设定为提交caddy-linux-amd64.md
才会触发,caddy-linux-amd64.md
则用来记录触发编译时的相关信息。
on:
push:
paths:
- 'caddy-linux-amd64.md'
jobs
jobs由一项或多项作业组成,默认是并行运行。需要为每个作业指定<job_id>
,每个作业里同样由多个部分组成,其中最常用也也这里只用到的两项为runs-on: 运行作业的机器类型
和steps: 步骤
jobs:
<job_id_1>:
runs-on:
steps:
.
.
.
<job_id_2>:
runs-on:
steps:
.
.
.
这里只用来编译caddy,所以只需要一个作业,不用考虑运行顺序问题。
runs-on
其中 runs-on 支持的列表为:
虚拟环境 | YAML 工作流程标签 |
---|---|
Windows Server 2019 | windows-latest 或 windows-2019 |
Ubuntu 20.04 | ubuntu-20.04 |
Ubuntu 18.04 | ubuntu-latest 或 ubuntu-18.04 |
Ubuntu 16.04 | ubuntu-16.04 |
macOS Catalina 10.15 | macos-latest 或 macos-10.15 |
这里选择ubuntu-latest
steps
steps包含一系列的步骤,可以用- id:
和- name:
分开多个部分,这里只用- name:
steps:
- name: <steps_1>
run:
.
.
.
- name: <steps_2>
run:
.
.
.
upload-artifact
需要获取编译好的文件,所以最后需要用到actions/upload-artifact。特别要注意的是上传到Artifacts的文件只会保留90天,而且私有仓库只有500Mb的限额,超出要收费。详情见“关于 GitHub 操作 的计费”
- name: upload
uses: actions/upload-artifact@master
with:
name: caddy #上传后的文件名
path: ./caddy #可以指定文件和文件夹,支持通配符
官方文档:https://docs.github.com/cn/actions
参考资料:
没有评论