Я пытаюсь вставить файл конфигурации, представляющий собой набор секретов, в контейнер Docker как часть файла Jenkins, который в настоящее время использует декларативный синтаксис.
Jenkinsfile:
pipeline {
agent {
dockerfile true
}
environment {
CONFIG = credentials('name-of-Jenkins-secret-file')
}
stages {
stage('Build') {
steps {
sh "echo ${CONFIG} > /usr/src/scripts/config/default.json"
}
}
}
}
Dockerfile:
FROM node:carbon
WORKDIR /usr/src/scripts
COPY package*.json ./
RUN npm install
COPY . .
ENTRYPOINT node ./run.js
Выполненные шаги при строительстве:
Record trace of a Docker image used in FROM <1s
docker build -t 47a61bffd47bc4f049a967a05f05889983734f32 -f "Dockerfile" "."— Shell Script 1s
Dockerfile— Read file from workspace <1s
Checks if running on a Unix-like node <1s
General SCM <1s
Shell Script
[repo_branch-4ZXYH5FGLRRVXQLNJJ2SCGKMMGIMGWH5VUJEHPFZ6CDVODQSHRHQ] Running shell script
Error response from daemon: Container 0daa4e0d56818544fd228607d7c6318963f80ad99c0f8781a425163c4fb4fc2f is not running
script returned exit code -2
STATUS: FAILED
Я не уверен, пытаюсь ли я добиться этого странным или необычным способом. Большая часть материалов, которые я нашел, обсуждая создание образов докеров с использованием конвейера, имеет намерение сохранить их в частном репозитории, что указывает на то, что я могу делать что-то странное. Ошибка указывает на то, что операцию нельзя выполнить на неработающем контейнере.