关于javascript:还不会用-GitHub-Actions-看看这篇

38次阅读

共计 3931 个字符,预计需要花费 10 分钟才能阅读完成。

前言

在上篇《一篇教你代码同步 GitHub 和 Gitee》中,咱们应用 GitHub Actions 解决了 GitHub 代码主动同步 Gitee 的问题,这篇我翻译整顿了 GitHub Actions 的官网文档,为大家介绍 GitHub Actions 的同时,并解说上篇同步 Gitee 的 Actions 代码。

GitHub Actions

GitHub Actions 是一个继续集成 (Continuous integration)和继续交付 (Continuous delivery)的平台,它能够做到自动化构建、测试、部署。你能够创立工作流,构建和测试每一个 pull request 或者部署合并后的代码到生产环境。

GitHub Actions 能够在你的代码仓库产生某个事件时运行一个工作流。举个例子,当有人给你的代码仓库新建了一个 issue,你能够跑一个工作流主动的增加适合的标签。

GitHub 提供了 Linux、Windows、和 macOS 虚拟机运行你的工作流,当然你也能够自定义运行环境。

GitHub Actions 组件

你能够配置一个 GitHub Actions 工作流(workflow),它会在你的仓库产生某个事件时被触发,就比方一个 pull request 或者一个 issue 被创立的时候。

你的工作流蕴含一个或者多个 工作(jobs),它们能够并行或者串行执行。每一个工作(jobs)都会在它本人的虚拟机 运行器 (runner) 上,工作能够有一个或者多个 步骤(steps),能够运行一个自定义的脚本或者运行一个 动作(action),所谓动作(action)是一个可复用的扩大,用于简化你的工作流。

Workflows(工作流)

工作流是一个可配置的自动化的程序。创立一个工作流,你须要定义一个 YAML 文件,当你的仓库触发某个事件的时候,工作流就会运行,当然也能够手动触发,或者定义一个时间表。

一个仓库能够创立多个工作流,每一个都执行不同的步骤,举个例子,一个工作流用于构建和测试 pull request,一个用于部署你的利用,再来一个,当有人新建 issue 的时候主动增加一个标签。

你也能够在一个工作流中援用另外一个工作流,查看「可复用工作流」。

事件(Events)

事件是指仓库触发运行工作流的具体的行为,比方创立一个 pull request,新建一个 issue、或者推送一个 commit。你也能够应用时间表触发一个工作流,或者通过申请一个 REST API,再或者手动触发。

事件残缺的列表,能够查看「触发工作流的事件」。

工作(Jobs)

工作是在同一个运行器上执行的一组步骤(steps)。一个步骤(steps)要么是一个 shell 脚本(script)要么是一个动作(action)。步骤会程序执行,并彼此独立。因为每一个步骤都在同一个运行器上被执行,所以你能够从一个步骤(step)传递数据到另一个步骤(step)。

你能够配置一个工作依赖其余工作,默认状况下,工作没有依赖,并行执行。当一个工作须要另外一个工作的时候,它会等到依赖的工作实现再执行。

动作(Actions)

动作是 GitHub Actions 平台的一个自定义的利用,它会执行一个简单然而须要频繁反复的作业。应用动作能够缩小反复代码。比方一个 action 能够实现从 GitHub 拉取你的 git 仓库,为你的构建环境创立适合的工具链等。

你能够写本人的动作,或者在 GitHub 市场找曾经实现好的动作。

运行器(Runners)

一个运行器是一个能够运行工作流的服务。每一个运行器一次只运行一个独自的工作。GitHub 提供 Ubuntu Linux,Microsoft Windows 和 macOS 运行器,每一个工作流都运行在一个独立新建的虚拟机中。如果你须要一个不同的操作系统,你能够自定义运行器。请查看「自定义运行器」。

创立一个工作流

GitHub Actions 应用 YAML 语法定义工作流。每一个工作流保留为一个独立的 YAML 文件,目录是 .github/workflows

当初咱们在代码仓库创立一个示例工作流,当代码被推送的时候,会主动执行一系列的命令。在这个示例工作流中,GitHub Actions 会检出提交的代码,装置依赖,运行 bats -v

  1. 在你的仓库,创立一个 .github/workflows/ 目录
  2. .github/workflows/ 目录,创立一个文件,名为 learn-github-actions.yml,增加上面的代码:

    name: learn-github-actions
    on: [push]
    jobs:
      check-bats-version:
     runs-on: ubuntu-latest
     steps:
       - uses: actions/checkout@v2
       - uses: actions/setup-node@v2
         with:
           node-version: '14'
       - run: npm install -g bats
       - run: bats -v
  3. 提交这些改变,推送到你的 GitHub 仓库。

你的新 GitHub Actions 工作流文件就会被装置在你的仓库,当有人提交代码的时候,工作流就会主动执行。对于一个工作的执行历史,查看「查看工作流流动」章节。

了解工作流文件

为了帮忙你了解 YAML 语法,这节会解释例子中的每行代码:

name: learn-github-actions

可选,工作流的名字,会呈现在 GitHub 仓库的 Actions 选项栏里。

on: [push]

指定工作流的触发事件。这个例子里,应用是 push 事件,当有人提交了一个代码批改或者合并了一个 pull request,工作流就会触发。提交到每个分支都会被触发,如果你想在指定分支、门路、标签,查看「GitHub Actions 工作流语法」

jobs:

将运行在 learn-github-actions 工作流的所有工作分组在一起。

check-bats-version:

定义了一个名为check-bats-version 的工作,子键(child key)会定义该工作的属性。

  runs-on: ubuntu-latest

配置工作运行在最新的 Ubuntu Linux 运行器。

 steps:

check-bats-version 工作下的所有步骤分为一组,嵌套的每一个条目都是一个独立的 action 或者 shell 脚本。

- uses: actions/checkout@v2

uses 关键字指定了这个步骤运行 actions/checkout 动作的 v2 大版本。这是一个能够检出仓库代码到运行器的动作,它容许你运行脚本或者其余动作侵入你的代码(比方构建或者测试工具)。

- uses: actions/setup-node@v2
  with:
    node-version: '14'

这个步骤会应用 actions/setup-node@v2 动作装置指定版本的 Nodejs,这会在你的 PATH 加上 nodenpm 命令。

- run: npm install -g bats

run 关键字会通知工作在运行器上执行一个命令。在这个例子中,你正在应用 npm 装置 bats 软件测试包。

- run: bats -v

最终,你运行 bats 命令,传入一个能够打印软件版本的参数。

可视化工作流文件

在这个图表,你能够看到你刚创立的工作流文件,以及这些 GitHub Actions 组件是如何组织的。每一个步骤都会执行一个独立的动作或者脚本文件。工作 1 和 2 是运行命令,工作 3 和 工作 4 是运行脚本文件。找到更多预构建的动作,查看「查找和自定义动作」。

查看工作流流动

一旦你的工作流开始运行,你能够在 GitHub 看到一个可视化的运行进度图表,查看每一个步骤的执行状况。

  1. 在 GitHub.com,导航至仓库主主页
  2. 在你的仓库名下,点击 Actions

  1. 在左侧 sidebar,点击你想查看的工作流

  1. Workflow runs,点击你想查看的运行记录的名称:

  1. 在 Jobs 或者在可视化图表中,点击你想看到的工作:

  1. 查看每一个步骤的后果:

上篇文章代码解析

当初咱们再来看 GitHub 同步 Gitee 的代码,是不是就分明很多了:

name: syncToGitee
on:
  push:
    branches:
      - gh-pages
jobs:
  repo-sync:
    runs-on: ubuntu-latest
    steps:
      - name: Mirror the Github organization repos to Gitee.
        uses: Yikun/hub-mirror-action@master
        with:
          src: 'github/mqyqingfeng'
          dst: 'gitee/mqyqingfeng'
          dst_key: ${{secrets.GITEE_PRIVATE_KEY}}
          dst_token:  ${{secrets.GITEE_TOKEN}}
          static_list: "learn-typescript"
          force_update: true
          debug: true

在这个例子里,咱们定义了一个名为 syncToGitee 的工作流,指定代码提交到分支 gh-pages 才触发工作流。

工作下只有一个名为 repo-sync 的工作,运行在 ubuntu-latest,具体的步骤下,也只有一个名为 Mirror the GitHub organization repos to Gitee. 的步骤,应用了 Yikun/hub-mirror-action@master 动作,而 with 里的内容则是该动作须要的一些参数。

系列文章

系列文章目录地址:https://github.com/mqyqingfen…

微信:「mqyqingfeng」,加我进冴羽惟一的读者群。

如果有谬误或者不谨严的中央,请务必给予斧正,非常感激。如果喜爱或者 有所启发,欢送 star,对作者也是一种激励。

正文完
 0