Github Actions简介

简介

GitHub Actions可帮助开发人员在软件开发生命周期内自动化任务。 GitHub Actions是事件驱动的,这意味着可以在发生指定事件后运行一系列命令。例如,每当有人为仓库新建pr时,可以自动运行测试脚本。

该图演示了如何使用GitHub Actions自动运行软件测试脚本。事件自动触发包job含的workflow。然后,job将使用step来控制action的执行顺序。这些action即是自动化测试软件的命令。

Workflow overview

Github Actions的组件

以下是可协同运行job的多个GitHub Actions组件的列表。可以看到这些组件之间如何交互

Component and service overview

workflow

workflow您添加到代码仓库中的自动化过程。其由一个或多个job组成,可以由事件调度或触发。该workflow可用于在GitHub上构建,测试,打包,发布或部署项目。

Events

event是触发workflow的特定活动。例如,当有人将commit 推送到仓库或创建issuepr时,Github会产生envent。还可以使用 repository dispatch webhook在发生外部事件时触发workflow。有关可用于触发workflowevrnt的完整列表,查看Events that trigger workflows

Jobs

job是在同一runner上执行的一组step。默认情况下,具有多个jobworkflow程将并行运行这些job。还可以配置workflow以按顺序运行job。例如,一个workflow可以有两个顺序执行的job来构建和测试代码,其中测试job取决于构建job的状态。如果构建job失败,则测试job将不会运行。

Steps

step是可以在job中运行命令的单个任务。step可以是操作或shell命令。job中的每个step都在同一runner上执行,从而使该job中的操作可以彼此共享数据。

Actions

action是独立的命令,组合成step以构建job, action是工作流中最小的可移植构建块。可以创建自己的action,也可以使用GitHub社区创建的action。要在工作流中使用action,必须将其包括在一个step中。

Runners

runner是已安装GitHub Actions runner 应用程序的服务器。可以使用GitHub托管的runner,也可以使用自己的runnerrunner监听可用的job,一次运行一个job,并将进度,日志和结果反馈给GitHub。对于由GitHub托管的runnerworkflow中的每个job都在全新的虚拟环境中运行。

GitHub托管的runner基于Ubuntu Linux,Microsoft Windows和macOS。有关GitHub托管的runner的信息,请参阅”Virtual environments for GitHub-hosted runners“。如果需要其他的OS或特定的硬件配置,则可以托管自己的runner。有关自托管runner的信息,请参阅”Hosting your own runners“。

创建样例workflow

GitHub Actions使用YAML语法定义eventjobstep。这些YAML文件存储在代码存储库中的.github / workflows目录中。

可以在仓库中创建示例的workflow,该workflow在每次推送代码时自动触发一系列命令。在此workflow中,GitHub Actions 使用了actions市场checkoutsetup-node action,然后安装软件依赖项,并运行bat -v

  • 首先在项目中创建.github/workflow目录

  • 在其中,创建一个learn-github-actions.yml文件,内容如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    name: learn-github-actions
    on: [push]
    jobs:
    check-bats-version:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/[email protected]
    - uses: actions/[email protected]
    - run: npm install -g bats
    - run: bats -v
  • commit这些修改并且push代码到仓库

现在,新的GitHub Actions工作流文件已安装在代码仓库中,并且每次有人将更改推送到仓库时,它将自动运行。有关作业的执行历史记录的详细信息,请参阅”Viewing the workflow’s activity“。

要更详细了解workflow文件,参阅Understanding the workflow file

自动构建Hexo博客

新建 Secret

在博客项目的的Secrets里面新建一个Secret,名为CI_PRIVATE_KEY,将内容设置为配置在 GitHub 中的公钥对应的私钥,以此在执行action时获取仓库的访问权限。

配置workflow

在项目根目录下新建.github/workflow/nodejs.yaml,内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
name: Hexo CI

on:
push:
branches:
- hexo
pull_request:
branches:
- hexo

jobs:
deploy:

runs-on: ubuntu-latest

strategy:
matrix:
node-version: [12.x]

steps:
- uses: actions/[email protected]
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/[email protected]
with:
node-version: ${{ matrix.node-version }}
- name: Setup Hexo
env:
ACTION_DEPLOY_KEY: ${{ secrets.CI_PRIVATE_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.email "[email protected]"
git config --global user.name "Jason210314"
npm install -g hexo-cli
yarn install
- name: Hexo Deploy
run: |
hexo c
hexo g
hexo d
env:
CI: true

评论

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×