[英]Retrieve gitlab pipeline docker image to debug job
我有一個在 Gitlab 中運行的構建腳本,並生成一些稍后在構建過程中使用的文件。
原因是Gitlab pipeline 失敗,本地沒有復現失敗。 有沒有辦法解決故障?
據我所知,Gitlab 管道在 Docker 容器中運行。
有沒有辦法讓失敗的 Gitlab 管道的 docker 鏡像在本地進行分析(例如查看生成的文件)?
當作業容器退出時,它會被自動刪除,所以這是不可行的。
但是,您可能還有其他一些選項來調試您的工作:
如果您使用自托管運行器,最好的方法可能是使用交互式網絡會話。 這將允許您在容器內進行交互式 shell 會話。 (請注意,您可能必須將作業編輯為休眠一段時間,以使容器保持足夠長的時間以進行檢查)
如果您不使用自托管運行器,另一種選擇是在失敗時生成生成的文件:
artifacts:
when: on_failure
paths:
- path/to/generated-files/**/*
然后,您可以下載工件並在本地調試它們。
另一種選擇是將調試輸出添加到作業本身。
script:
- generate-files
# this is just an example, you can make this more helpful,
# depending on what information you need for debugging
- cat path/to/generated-files/*
因為調試輸出可能有噪音,您可以考慮默認使用可折疊部分來折疊調試輸出。
script:
- generate-files
- echo "Starting debug section"
# https://docs.gitlab.com/ee/ci/jobs/index.html#custom-collapsible-sections
- echo -e "\e[0Ksection_start:`date +%s`:debugging[collapsed=true]\r\e[0KGenerated File Output"
- cat path/to/generated-files/*
- echo -e "\e[0Ksection_end:`date +%s`:debugging\r\e[0K"
通過在本地安裝 gitlab 運行器並使用gitlab-runner exec
命令,您可以或多或少地使用與 GitLab 運行器相同的行為在本地運行作業。
在這種情況下,您可以在本地運行您的作業,然后docker exec
進入您的作業:
gitlab-runner exec
命令啟動作業,並提供作業的名稱docker ps
以查找由gitlab-runner exec
啟動的作業的容器 IDdocker exec -it <CONTAINER_ID> /bin/bash
(假設 bash 在您的圖像中可用)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.