iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0

目錄

摘要

在上一篇我們學到透過在workflow內呼叫另一個workflow的方式複用workflow(reusable workflow)

這篇我們會來會來看一下另一種叫做composite actions的複用workflow的方式

composite actions概述

這個方法尤其適合workflow中的某些step經常重複且執行順序幾乎不變時使用

composite action包含多個step,這些step在caller workflow中會被當作job下的一個step運作

它和reusable workflow有幾個差異

  1. 不放在.github/workflows內
  2. 裡面不能有job
  3. 無法使用secret,不過可以透過input傳入secret

步驟

建立metadata file

在專案的非.github資料夾底下的地方新增action.yaml,但建議放在action(js檔)附近

metadata file 是用來定義該 composite action 的結構和屬性

大致上語法和撰寫一般workflow差不多,但因為並不是一個獨立的workflow,所以沒有on、jobs屬性

另外也是因為它不是獨立的workflow,所以在裡面使用actions/checkout的話clone的會是呼叫workflow的repo,而不是這個composite action所在的repo

name: 'Say Hello'
description: 'Today is a perfect day to day hello to everyone'
inputs:
  name:
    description: 'user name'
    required: true
  
outputs:
  reply:
    description: "How's it going with your new workflow"
    value: ${{ steps.reply-your-friend.outputs.output1 }}

runs:
  using: 'composite'
  steps:
    - name: greeting
      run: echo "Hello $INPUT_WHO_TO_GREET."
      shell: bash
      env:
        INPUT_WHO_TO_GREET: ${{ inputs.name }}

    - name: Reply question
      id: reply-your-friend
      run: |
        echo "output1=Amazing! I can composite several steps into a action." >> $GITHUB_OUTPUT
      shell: bash

然後打tag

git tag v1.0.0
# 或者
git tag -a -m "如果需要的話,可以在這打註解" v1.0.0
git push --follow-tags

使用composite action

不管是不是跨repo,都可以呼叫composite action

在要呼叫composite action的repo的.github/workflows底下新增<檔名>.yml即可

name: Try to use composite action

on:
  push:
    branches:
      - master

jobs:
  call_composite_action_1:
    runs-on: ubuntu-latest
    name: A job to say hello
    steps:
      - id: trial
        uses: tempura327/try-github-actions@v1.0.1
        with:
          name: 'Jasmine'
      
      - run: |
          echo How\'s it going with your new workflow?
          echo ${{ steps.trial.outputs.reply }}
        shell: bash

用路徑指定就噴錯

另外注意一定要以<owner name>/<repo name>@<tag>去指定呼叫的composite action,不能以檔案路徑指定


上一篇
Day 16 - 複用workflow (上)
下一篇
Day 18 - 用JS寫action
系列文
菜逼八用Github Actions28
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言