术语(看看就好)
GitHub Actions 有一些自己的术语。
(1)workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。(一个workflow对应一个.github/workflows/*.yml文件)
(2)job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。(在workflow文件里写jobs字段)
(3)step(步骤):每个 job 由多个 step 构成,一步步完成。(在job里写step字段)
(4)action (动作):每个 step 可以依次执行一个或多个命令(action)。(step下面的字段)
workflow文件
GitHub Actions 的配置文件叫做 workflow 文件,存放在代码仓库的.github/workflows目录。
workflow 文件采用 YAML 格式,文件名可以任意取,但是后缀名统一为.yml,比如foo.yml。一个库可以有多个 workflow 文件。GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行该文件。
workflow 文件的配置字段非常多,详见官方文档。
目标一:使用Github Actions打印日志😪
在项目根目录下创建一个.github/workflows/suibian.yml文件,文件内容如下:
# 每个workflow文件的说明
name: learn-github-actions
# 在push代码后触发jobs工作流
on: [push]
# 工作流(工作流中的所有job组合在一起形成了这个workflow文件)
jobs:
# 一个工作的id(key)
check-bats-version:
# 运行的环境
runs-on: ubuntu-latest
# 一个工作分为很多步骤(下面的每个步骤都是一个单独的操作或则脚本)
steps:
# 将你的仓库迁出到运行器上操作,每当你的工作将对仓库的代码操作时,都应该使用 checkout 操作。
- name: Checkout
uses: actions/checkout@v3
# 安装node,可以指定版本
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '14'
# 安装依赖项(bats就是一个npm包)
- name: Install
run: npm install -g bats
# 查看bats包版本
- name: Show version
run: bats -v
然后提交到github上,在Actions一栏里面可以看到。标红的部分分别与上面yml文件中的字段对应。
点开check-bar-version工作,查看步骤。如果能看到安装包的版本,说明就成功了!
目标二:每次push代码到github时,自动构建部署github-pages😀
要实现自动构建github-pages,其实就是使用了github的一个开源库。actions-gh-pages
里面也推荐了官方的自动构建部署github-pages服务。
然后新建一个.github/workflows/buil_docs.yml文件。这里使用的是nodejs项目,每次push到master分支都打包vitepress文档。
name: GitHub Actions Build and Deploy Demo
# 当 master 分支 push 代码的时候触发 workflow
on:
push:
branches:
- master
jobs:
# job-id:
build-and-deploy:
name: 构建并部署
runs-on: ubuntu-latest
steps:
# 获取源码
- name: Checkout
uses: actions/checkout@v3
# 安装 node
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '16.x'
# 缓存依赖项
cache: 'npm'
# 安装依赖项
- name: Install
run: npm i
# 打打包文档
- name: Build docs
run: npm run docs:build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.MY_COURSE_TOKEN }}
publish_dir: docs/.vitepress/dist
不是特别难,但是需要动手去操作下!
目标三:实现自动提交代码,让github commit一片绿 😅
每小时的1到6分钟制动提交一次。每次提交间隔不能小于5分钟。
name: ci
on:
push:
branches:
- master
schedule:
# 分钟,小时,日,月,星期
- cron: "1,6 * * * *"
jobs:
autogreen:
runs-on: ubuntu-latest
steps:
- name: Clone repository
uses: actions/checkout@v2
- name: Auto green
run: |
git config --local user.email "lukecheng233@163.com"
git config --local user.name "lukecheng"
git remote set-url origin https://${{ github.actor }}:${{ secrets.MY_COURSE_TOKEN }}@github.com/${{ github.repository }}
git pull --rebase
git commit --allow-empty -m "a commit a day keeps your girlfriend away"
git push
目标四:实现自动签到掘金领矿石😂
专业版才有这个功能
可能对你有用的参考链接
-
help.github.com/en/articles… - 官方文档
-
www.ruanyifeng.com/blog/2019/0… - 阮一峰GitHub Actions 入门教程
-
[juejin.cn/post/700652…] - (掘金)
-
[juejin.cn/post/710861…] - (掘金)