簡體   English   中英

檢索 gitlab 管道 docker 映像以調試作業

[英]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-runner

通過在本地安裝 gitlab 運行器並使用gitlab-runner exec命令,您可以或多或少地使用與 GitLab 運行器相同的行為在本地運行作業。

在這種情況下,您可以在本地運行您的作業,然后docker exec進入您的作業:

  1. 在您的本地倉庫中,通過運行gitlab-runner exec命令啟動作業,並提供作業的名稱
  2. 在另一個 shell 中,運行docker ps以查找由gitlab-runner exec啟動的作業的容器 ID
  3. 使用其 ID 執行到容器中: docker exec -it <CONTAINER_ID> /bin/bash (假設 bash 在您的圖像中可用)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM