Github Actions入门实操

之前看了阮一峰老师的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-on :运行脚本的环境,是必填字段,目前支持(来源阮一峰老师文章):

  • ubuntu-latestubuntu-18.04ubuntu-16.04
  • windows-latestwindows-2019windows-2016
  • macOS-latestmacOS-10.14

steps :工作执行步骤,从上而下

uses :使用来自市场的action,文章开头已经提供两个actions获取来源啦,格式为: actions/包名@版本号,在我这是用的actions/checkout@v2则是拉取当前仓库到当前目录。

接下来执行的是安装Python的actions: actions/setup-python@v2,并且传递Python的版本参数

run :则是执行shell命令,一行一句命令。(在run:后面是有一个 “|” 的)


自动化部署实例 ---> Github推送代码后利用Actions部署到服务器


介绍就到这了,后续把自己的项目搭起来了再写一篇Hyperf的推送部署的文章(留坑)。如果需要更多了解可以直接查看阮一峰老师的文章官方文档