第 18 題(D2-O1)
在舊的執行上按 Re-run failed jobs,重跑使用的 GITHUB_SHA 與 GITHUB_REF,與原本那次執行相同。
是非題:判斷敘述是否正確。
看答案與解析
正確答案:正確
解析:重跑沿用原事件的 GITHUB_SHA 與 GITHUB_REF,並以最初觸發者的權限執行,所以不會拿到之後推送的新 commit。
常見陷阱:修好程式碼後直覺會想「重跑一次看看」;重跑驗證不到新程式碼,要看新推送所觸發的新執行。
D2「使用與疑難排解工作流程」14 題原創模擬題,附正確答案、解析與常見陷阱。選項順序在互動版會隨機排列。
在舊的執行上按 Re-run failed jobs,重跑使用的 GITHUB_SHA 與 GITHUB_REF,與原本那次執行相同。
是非題:判斷敘述是否正確。
正確答案:正確
解析:重跑沿用原事件的 GITHUB_SHA 與 GITHUB_REF,並以最初觸發者的權限執行,所以不會拿到之後推送的新 commit。
常見陷阱:修好程式碼後直覺會想「重跑一次看看」;重跑驗證不到新程式碼,要看新推送所觸發的新執行。
關於重新執行工作流程的限制,下列哪一項正確?
單選題,選項:
正確答案:初次執行後 30 天內,最多重跑 50 次
解析:官方限制是初次執行後 30 天內可以重跑,一次執行最多重跑 50 次,完整重跑與部分重跑都計入。
常見陷阱:天數與次數各有一個容易記混的數字;兩個限制要一起記,只對一個仍會選錯。
要讓下載的日誌封存檔多出 runner-diagnostic-logs 資料夾,應該啟用哪一個設定?
單選題,選項:
正確答案:ACTIONS_RUNNER_DEBUG 設為 true,啟用 runner 診斷
解析:ACTIONS_RUNNER_DEBUG 啟用 runner 診斷記錄,封存檔會多出 runner-diagnostic-logs,內含 runner 與 worker 程序記錄;ACTIONS_STEP_DEBUG 則讓步驟日誌更詳細。
常見陷阱:兩個名稱都有 DEBUG,容易互換;STEP 管步驟日誌與 ::debug:: 訊息,RUNNER 管 runner 本身的診斷。
同一個 repository 同時把 ACTIONS_STEP_DEBUG 建成 secret(值為 false)與 variable(值為 true)。哪一個會生效?
單選題,選項:
正確答案:secret 生效,值為 false,secret 的優先順序較高
解析:兩者都可以建成 secret 或 variable;同時存在時 secret 優先,所以實際為 false。
常見陷阱:一般會以為「範圍小的覆蓋範圍大的」或「後建立的覆蓋先建立的」;除錯記錄這兩個設定是以類型決定優先。
重新執行時勾選 Enable debug logging,會同時啟用 runner 診斷記錄與步驟除錯記錄。
是非題:判斷敘述是否正確。
正確答案:正確
解析:重新執行時的 Enable debug logging(CLI 為 --debug)會同時啟用兩者,不必改 secret 或 variable;任何能執行該工作流程的人都能這樣做。
常見陷阱:不少人以為只有 repository 寫入權限的人才能開除錯記錄;重新執行的勾選項不需要先建立設定。
在 job 日誌頁用 Search logs 搜尋一段你確定存在的文字,卻沒有結果。最可能的原因是什麼?
單選題,選項:
正確答案:那個步驟還沒展開,搜尋只涵蓋已展開的步驟
解析:Search logs 只搜尋已展開的步驟;要找的步驟要先展開。需要完整日誌時可以下載 log archive。
常見陷阱:搜尋框在頁面上,看起來像是全文搜尋;實際範圍取決於哪些步驟已展開。
在終端機只想看某次執行中失敗的步驟日誌,該用哪個指令?
單選題,選項:
正確答案:gh run view RUN_ID --log-failed
解析:gh run view RUN_ID --log-failed 只顯示失敗步驟的日誌;--log 顯示整次執行,--job 搭配 --log 看單一 job。
常見陷阱:gh run rerun 是重新執行,不是查看日誌;名稱裡有 failed 不代表它會輸出失敗的日誌。
呼叫 REST API 下載成品,回應是 302 與 Location 標頭。這個下載網址的有效時間是多久?
單選題,選項:
正確答案:只有 1 分鐘,需要立刻跟著抓
解析:成品下載與日誌下載的 302 導向網址都只有 1 分鐘有效,每次下載都應重新呼叫端點取得新網址。
常見陷阱:存下網址稍後再用是自然的做法;這個網址是短效的,隔一陣子就會失效。
關於 REST API 下載成品端點,下列哪些正確?(選 2 項)
複選題,選項:
正確答案:回應是 302,網址在 Location 標頭;archive_format 參數只能指定為 zip
解析:archive_format 只能是 zip;回應是 302 重新導向,網址在 Location 標頭,且只有 1 分鐘有效。
常見陷阱:「重新導向」與「直接回內容」是兩種不同行為;這個端點要先跟著導向才拿得到檔案。
用 DELETE 刪除一次工作流程執行時,那次執行的成品會怎樣?
單選題,選項:
正確答案:一併從儲存空間中刪除,不另保留
解析:刪除一次執行時,它的成品也會一起從儲存空間刪除;只想留下日誌就改刪個別成品。
常見陷阱:日誌與成品是分開管理的兩種資料,容易以為刪除動作不會連動;實際上刪整次執行會一併清除成品。
actions/download-artifact 預設可以直接下載其他工作流程執行所上傳的成品,不需額外設定。
是非題:判斷敘述是否正確。
正確答案:錯誤
解析:預設只能取得同一次執行稍早上傳的成品;跨執行下載要提供 token 與執行編號。
常見陷阱:成品在 repository 裡看得到,容易以為任何執行都能取用;跨執行取用要明確指定來源。
複合 action 需要用到一個 secret,卻無法從 secrets context 讀到。應該怎麼做?
單選題,選項:
正確答案:由呼叫它的工作流程把 secret 當作 input 傳入
解析:複合 action 不能直接使用 secrets context,要由呼叫它的工作流程把 secret 當作 input 傳入。
常見陷阱:可重用工作流程可以用 secrets,複合 action 不行;兩種重用機制常被混為一談。
依據:Reusing workflow configurations (concepts)、Create a composite action
要讓組織成員在 New workflow 頁面挑選範本,每個範本需要放在哪裡、包含哪些檔案?
單選題,選項:
正確答案:組織 .github repo 的 workflow-templates 目錄,含工作流程檔與同名 .properties.json
解析:範本放在組織 .github repository 的 workflow-templates 目錄;每個範本需要工作流程檔,以及同名、副檔名為 .properties.json 的中繼資料檔(name 與 description 必填)。
常見陷阱:放 .github/workflows 的檔案是會被執行的工作流程,不是範本;範本要放在 workflow-templates,並附中繼資料檔。
對一個正在執行的工作流程按 Disable workflow,進行中的執行會怎樣?
單選題,選項:
正確答案:不會被取消,但停用期間無法重新執行
解析:停用只是讓工作流程不再觸發,不會取消進行中的執行;停用期間也不能重新執行那些執行,要先啟用。
常見陷阱:停用不等於取消,也不等於刪除;檔案保留、之後可以啟用,與刪除檔案是兩回事。