发现、自定义actions

Ations是驱动Workflow的基础,一个Workflow可以包含由社区所创建的actions,也可以直接repo内自己创建actions。

用于Workflow的actions可以被定义于:

  • 公开的repo
  • 引用此action的Workflow所处的repo
  • 公开的Docker HUB内的容器镜像
  1. 在编辑Workflow时浏览市场

在repo中编辑workflow页面时,右侧会出现MArketPlace,可以用来搜索action

image-20220109163458052

  1. 如何引用actions?

选择好action后直接点击进入,可以看到下面有一个复制的图标。将这些复制的信息作为一个新的Step粘贴至你的Workflow中

image-20220109163636632
3.社区actions创建者的发行管理

共有三种可选的方式来控制发行版本:

  • Tags
  • SHAs
  • Braches
4. 使用带输入输出的actions
name: "Example"
description: "Receives file and generates output"
inputs:
  file-path: # id of input
    description: "Path to test script"
    required: true
    default: "test-file.js"
outputs:
  results-file: # id of output
    description: "Path to results file"

​ 某些actions需要接收一些输入的参数,并且会给出一些输出的参数,如结果存放的路径等。

上面的例子定义需要一个输入变量:file-path,以及一个输出值:results-file

5. 引用同一个repo中的action

如果action和workflow定义在同一个repo中,可以通过两种方式来引用此action:

  • {owner}/{repo}@{ref}
  • ./path/to/dir

举例说明:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # This step checks out a copy of your repository.
      - uses: actions/checkout@v2
      # This step references the directory that contains the action.
      - uses: ./.github/actions/hello-world-action

这个Workflow引用同一个repo中的.github目录下的actions的目录下的hello-world-action,目录结构如下:

|-- hello-world (repository)
|   |__ .github
|       └── workflows
|           └── my-first-workflow.yml
|       └── actions
|           |__ hello-world-action
|               └── action.yml
6. 引用Docker Hub中的容器

如果aciton是定义在公开的DockerHub中的Docker容器镜像中,则需要通过下面的方式来引用:

docker://{image}:{tag},示例如下:

jobs:
  my_first_job:
    steps:
      - name: My first step
        uses: docker://alpine:3.8
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐