引言
GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务,其主旨是帮助您建立强大而动态的自动化。
之前一直都是 Beta 版本,正式版于 2019 年 11 月正式推出。
GitHub Action :https://github.com/features/actions
GitHub Action 官方市场:https://github.com/marketplace?type=actions
CI\CD 说的是三件事情:持续集成(Continuous Integration)、持续交付(Continuous Delivery)、持续部署(Continuous Deployment)。因为持续交付和持续部署的英文缩写是一样的,所以这三件事情缩写成了 CI\CD 。
GitHub Action 基本概念
GitHub Actions 有一些自己的术语。
- workflow (工作流程):持续集成一次运行的过程,就是一个 workflow。
- job (任务):一个 workflow 由一个或多个 jobs 构成,含义是一次持续集成的运行,可以完成多个任务。
- step(步骤):每个 job 由多个 step 构成,一步步完成。
- action (动作):每个 step 可以依次执行一个或多个命令(action)。
workflow 文件的配置字段非常多,详情可以参考官方文档:Workflow syntax for GitHub Actions
如何使用Github Action
如何快速使用Github Action也给出了官方指南文档https://docs.github.com/cn/actions/learn-github-actions
大家对YAML语言不清楚可以查看,YAML语言教程http://www.ruanyifeng.com/blog/2016/07/yaml.html
下面主要列举一些常见的,示例如下:
name: learn-github-actions
on:
push:
branches:
- 'development*'
jobs:
check-bats-version:
runs-on: ubuntu-latest
outputs:
VERSION: ${{ steps.release_version.outputs.VERSION }}
steps:
- uses: actions/checkout@v2
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBECONFIG_AP_EAST_1_DEV }}
CHART_NAME: payment-dash
- name: install node
uses: actions/setup-node@v1
with:
username: ${{ secrets.DOCKER_HUB_USER }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- run: npm install -g bats
- run: bats -v
name: learn-github-actions | 可选 – 将出现在 GitHub 仓库的 Actions(操作)选项卡中的工作流程名称。 |
---|---|
on: | 指定自动触发工作流程文件的事件。 |
push: | 此示例使用 push 事件,这样每次有人推送更改到仓库时,作业都会运行。 您可以设置工作流程仅在特定分支、路径或标记上运行。 有关包含或排除分支、路径或标记的语法示例,请参阅“GitHub Actions 的工作流程语法”。 |
branches: | |
– ‘development*’ | 指定哪些分支可出发,可指定多个或者使用通配符 |
jobs: | 将 learn-github-actions 工作流程文件中运行的所有作业组合在一起。 |
check-bats-version: | 定义存储在 jobs 部分的 check-bats-version 作业的名称。 |
runs-on: ubuntu-latest | 配置作业在 Ubuntu Linux 运行器上运行。 这意味着该作业将在 GitHub 托管的新虚拟机上执行。 有关使用其他运行器的语法示例,请参阅“GitHub Actions 的工作流程语法”。 |
outputs: | |
VERSION: ${{ steps.release_version.outputs.VERSION }} | 输出是字符串,当每个作业结束时,在运行器上评估包含表达式的作业输出。 包含密码的输出在运行器上编辑,不会发送至 GitHub Actions。${{}} 用来取当前运行环境的环境变量 |
steps: | 将 check-bats-version 作业中运行的所有步骤组合在一起。 此部分下嵌套的每项都是一个单独的操作或 shell 命令。 |
– uses: actions/checkout@v2 | uses 关键字指示作业检索名为 actions/checkout@v2 的社区操作的 v2 。 这是检出仓库并将其下载到运行器的操作,允许针对您的代码运行操作(例如测试工具)。 只要工作流程针对仓库的代码运行,或者您使用仓库中定义的操作,您都必须使用检出操作。 |
env: |
KUBE_CONFIG_DATA: ${{ secrets.KUBECONFIG_AP_EAST_1_DEV }}
CHART_NAME: payment-dash | 设置供步骤用于运行器环境的环境变量。 您也可以设置整个工作流程或某个作业的环境变量。 |
| – name | 步骤名称,可在显示在action步骤里 |
| – uses: actions/setup-node@v1 | 此操作会在运行器上安装 node
软件包,使您可以访问 npm
命令。 |
| with:
username: ${{ secrets.DOCKER_HUB_USER }}
password: $${{ secrets.DOCKER_HUB_TOKEN }} | 每个输入参数都是一个键/值对。 输入参数被设置为环境变量。 该变量的前缀为 INPUT_
,并转换为大写。这些输入变量将被 setup-node 操作作为 INPUT_USERNAME、
和 INPUT_PASSWORD
环境变量使用。 $${{}}
中的可以在我们在项目中settings/secrets设置环境变量,供workflow使用 | | – run: npm install -g bats |run
关键字指示作业在运行器上执行命令。 在这种情况下,使用npm
来安装bats
软件测试包。 | | – run: bats -v | 最后,您将运行bats
命令,并且带有输出软件版本的参数。 |
《“Github Action指北”》 有 1 条评论
Hi, this is a comment.
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from Gravatar.