我需要通過環境變數將憑據推送到 docker 容器。該容器從 docker-compose 檔案啟動,該檔案由 Jenkins 使用 CI/CD 維護。我將憑據存盤在 Jenkins 中作為 global 域下的單獨秘密文本條目。據我所知,我可以environment使用該credentials函式通過構建階段中的塊填充這些憑據。我對 Jenkinsfile 的嘗試如下所示:
#!groovy
pipeline {
agent any
stages {
stage("build") {
environment {
DISCORD_TOKEN = credentials('DICEBOT_DISCORD_TOKEN')
APPLICATION_ID = credentials('DICEBOT_APPLICATION_ID')
}
steps {
sh 'docker-compose up --build --detach'
}
}
}
}
沒有為錯誤列印太多。我得到的只是這個簡單的錯誤:ERROR: DICEBOT_APPLICATION_ID. 這就對了。那么我存盤秘密文本的范圍不正確嗎?我在讀,因為域是全球性的,任何東西都應該能夠訪問它。所以也許我對域范圍的想法是錯誤的?environmentJenkinsfile 中的位置是否錯誤?我不確定。該錯誤非常平淡,并沒有真正描述它不喜歡的地方DICEBOT_APPLICATION_ID。
更糟糕的是,修復這個問題并沒有真正解決手頭的主要問題:讓 docker 容器保存這些憑據。我目前正在處理的問題只是將環境變數的范圍限定為運行,docker-compose并且可能不會將環境變數填充到我需要它們的容器中。
對于第二部分,讓 docker-compose 將憑據傳遞給容器,我認為下面的代碼段可能會起作用?
version: "3"
services:
dicebot:
environment:
DISCORD_TOKEN: ${DISCORD_TOKEN}
APPLICATION_ID: ${APPLICATION_ID}
build:
context: .
dockerfile: Dockerfile
uj5u.com熱心網友回復:
解決方案
如果您只想在該階段使用這些變數,則環境塊位于正確的位置。您的 docker-compose.yml檔案看起來不錯,但您沒有將環境變數作為構建引數傳遞給docker-compose命令。請看下面我的修改
steps {
sh "docker-compose build --build-arg DISCORD_TOKEN='$DISCORD_TOKEN' --build-arg APPLICATION_ID='$APPLICATION_ID' --detach --verbose"
sh "docker-compose up -d"
}
我假設docker-compose.yml與您的 Jenkinsfile 位于同一存盤庫中。了解您的憑據的范圍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/352070.html
上一篇:種子作業無法決議構建用戶變數插件
