瞅瞅Github Actions怎么整活的

什么是Github Actions?

Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you’d like, including CI/CD, and combine actions in a completely customized workflow.

GitHub Actions是github的持续集成服务,简单来讲就是使得你的repository可以执行一些自动化的动作,例如:

  1. 每次repository有新的提交或者pr就自动执行自定义好的操作
  2. 在repository中定时执行自定义好的操作

如在 master 分支上提交了一段代码, GitHub Action 可以自动的帮我部署到我自己的服务器上去,或者它还可以帮我把代码打成镜像,将镜像自动提交到镜像仓库里
自定义操作的操作也可以是:定时发送消息提醒大伙点外卖了,点奶茶了!(毕竟干饭人?)
image.png
很简单,在repository中的Actions中就可以找到,下面来简单使用一下吧。
image.png

淦茶小助手

在项目根目录文件夹.github下面的workflows下创建xx.yml写入如下代码:

name: 3点几啦!喝杯奶茶先啦

# 触发条件
on: 
  # 触发条件1:main分支有提交时候触发
  push:
    branches:
      - main
  # 触发条件2:定时任务,每天15点触发
  schedule:
    - cron: "0 15 * * *"
jobs:
  drink_tea:
    runs-on: ubuntu-latest
    steps:
      - name: 这就给大家发消息
        run: |
          curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='yourKey'' \
          -H 'Content-Type: application/json' \
          -d '
          {
                "msgtype": "text",
                "text": {
                    "content": "都别给我愣着,赶紧滴干饭?"
                }
          }'


复制代码

为方便测试,这里有两个触发条件,一个是代码main分支有更新时触发,一个是每天的15点触发。

schedule中cron的值 "* * * * *"表示如下
┌───────────── 分钟 (0 - 59)
 ┌───────────── 小时 (0 - 23)
  ┌─────────────  (1 - 31)
   ┌─────────────  (1 - 12  JAN-DEC)
    ┌───────────── 星期 (0 - 6  SUN-SAT)
    
    
    
* * * * *

复制代码

而后打开Actions就会开始运行任务。
image.png
怎么看任务执行成功? 绿了,且运行没报错
image.png
这时候企业微信就收到了干饭?的消息。(还可以帮行政小姐姐设置一些繁琐的每天自动提醒工作哟?)
image.png

基本语法

上面做了个小实践也加了些注释,下面就给大家伙看个基本语法
image.png

GitHub Actions 有一些自己的术语。
(1)workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。
(2)job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
(3)step(步骤):每个 job 由多个 step 构成,一步步完成。
(4)action (动作):每个 step 可以依次执行一个或多个命令(action)。

GitHub Actions 的配置文件叫做 workflow 文件,存放在代码.github/workflows仓库目录。
workflow 文件采用 YAML 格式

文件名可以任意取,如xxx.yml。一个库可以有多个 workflow 文件。GitHub 只要发现.github/workflows目录里面有.yml文件,就会自动运行该文件。

在官方文档中有每个语法的示例,让我们使用起来就非常的方便了,如要在action在集成环境,插件都有相关示例以及对于workflows权限的管理。workflow 文件的配置字段非常多,详见官方文档

我绿了

github上很简单的一个自动绿的项目,通过定时任务git方式向repository提交代码,使得 yml代码如下:
image.png

name: ci

on:
  push:
    branches:
      - master
#  schedule:
#    - cron: "0 0 * * *"

jobs:
  autogreen:
    runs-on: ubuntu-latest
    steps:
      - name: Clone repository
        uses: actions/checkout@v2
      - name: Auto green
        run: |
          git config --local user.email "xxx@qq.com"
          git config --local user.name "Autumn"
          git remote set-url origin https://${{ github.actor }}:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
          git pull --rebase
          git commit --allow-empty -m "a commit a day keeps your girlfriend away"
          git push
复制代码

总结

以上是Github Action初探,其实觉得Github Action在CI/CD上是大有可为的,CI\CD :「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery)」、「持续部署(Continuous Deployment)」。在公司中我看着文档用Github Action做了一些小尝试,后续也会分享出来给大家。
以上有误的欢迎dalao们指正,
本次demo代码地址:github.com/AutumnWhj/G… 欢迎star(卑微.jpg)

参考

GitHub Actions文档
GitHub Actions 入门教程—阮一峰

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享