在GitHub Actions的工作流加入時間變數 / Formatted Time Variables in the Workflow of GitHub Actions
如果要讓工作流產生的檔案(artifact)用時間命名的話,要怎麼做呢?
時間變數 / Time Variables
GitHub Actions提供的情境(context)和變數(variable)功能,兩者都跟變數有關。context主要能提供跟現在保存庫、工作流相關的資訊,vairable則是可讓使用者自訂參數使用。
不過如果我只要時間變數的話,要怎麼取得呢?
https://stackoverflow.com/a/72267176
最接近的答案是「${{ github.event.repository.updated_at}}」,它會產生現在保存庫最近的更新時間,結果是以ISO 8601格式產生,例如「2022-05-15T23:33:38Z」。
不過ISO 8601包含了太多特殊字元,這可沒辦法讓我作為檔案(artifact)的檔名啊。
取得現在的時間 / Get Current Time
https://github.com/josStorer/get-current-time
找了老半天,最後的答案竟然不是用GitHub Action提供的內建變數,而是使用別人製作的Action:get-current-time。
使用方法很簡單,就在工作流的steps加入以下的步驟:
- name: Get current time
uses: josStorer/get-current-time@v2.0.2
id: current-time
with:
format: YYYYMMDD-HHmmSS
utcOffset: "+08:00"
其中「format: YYYYMMDD-HHmmSS」使用了MomemtJS的語法。
然後就可以用以下變數來使用它:
${{ steps.current-time.outputs.formattedTime }}
之後下載檔案就會用當時的時間命名了。
怎麼記得當時用GitLab CI的時候還比較簡單一點,最差也能用$CI_COMMIT_SHORT_SHA吧?
你在設定workflow的時候有遇到什麼問題嗎?
歡迎下面分享~