之前看了阮一峰老师的Github Actions入门操作后迫不及待的想实操一下,看了后自我感觉算是自动化部署入门了😄
随手为了实操这个东西,便写出了利用Github Action每日更新网抑云听歌记录这个脚本。同时记录下别的操作和解释里面的内容写这篇文章备用一下(虽然再看一遍老师的教程也行)
关于Actions是什么建议直接查看老师的文章介绍。
Actions官方市场地址:https://github.com/marketplace?type=actions
以及awesome-actions仓库:https://github.com/sdras/awesome-actions(不要盲目使用,建议审查下代码)
为了让Github发现我们的Actions,需要把脚本文件都放在 .github/workflows
下,并且为.yml后缀的YAML结构文件。
在官方文档你能看到更多Actions的操作命令,本篇先从我已经写好的这个脚本解释里面相关的命令:
name: Python application
on:
schedule:
- cron: '0 1 * * *'
watch:
types: started
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: set git config
run: |
git config --global user.name "sohyunQVQ[bot]"
git config --global user.email "abigeater@163.com"
- name: git pull erp
run: |
git pull
- name: run srcipt
run: |
python 163music.py 136164194 1
- name: commit to rep
run: |
git add README.md
git commit -m "Update README.md"
git push
从最外层到里解释:
name
:这个工作流的名称,该名称将会显示在仓库内的Actions标签内
on
:执行条件,支持多个执行条件,每行一个,再缩进去就是参数,具体可以看官方文档,比较常用的有:定时(schedule
)、监听行为(watch
)、推送(push
)
schedule
:定时执行,里面的cron
为定时规则(写法与Linux的Crontab一致),每行一条,支持多条
watch
:监听行为,里面的types目前只有started,指当前仓库被star后执行
push
:推送执行,当仓库被push执行,可配合用于实现自动部署,具体用法为:
on:
push:
branches:
- master
该段代码意思为,当推送分支为master执行,如果不需要控制分支则需要以下两段即可:
on:
push
多个执行条件记得放一起,比如在刚才的脚本增加上push执行,则:
on:
schedule:
- cron: '0 1 * * *'
watch:
types: started
push
jobs
:则是这个脚本需要执行的作业了,可以有多个,在我这里是执行了一段名为build的作业(这个只是作业名), 如果需要有依赖关系, 可以在build下面增加一句:
job_name:
needs:last_job #依赖单个任务完成
needs:[last_job1, last_job2] #依赖两个任务完成
runs-o
n :运行脚本的环境,是必填字段,目前支持(来源阮一峰老师文章):
ubuntu-latest
,ubuntu-18.04
或ubuntu-16.04
windows-latest
,windows-2019
或windows-2016
macOS-latest
或macOS-10.14
steps
:工作执行步骤,从上而下
uses
:使用来自市场的action,文章开头已经提供两个actions获取来源啦,格式为: actions/包名@
版本号,在我这是用的actions/checkout@v2则是拉取当前仓库到当前目录。
接下来执行的是安装Python的actions: actions/setup-python@v2
,并且传递Python的版本参数
run
:则是执行shell命令,一行一句命令。(在run:后面是有一个 “|” 的)
自动化部署实例 ---> Github推送代码后利用Actions部署到服务器
介绍就到这了,后续把自己的项目搭起来了再写一篇Hyperf的推送部署的文章(留坑)。如果需要更多了解可以直接查看阮一峰老师的文章和官方文档。