Вы использовали Declarative Pipeline
для своего Jenkinsfile, а не Scripted Pipeline
.Для Declarative Pipeline
docker
- это директива, которая может использоваться только для указания agent
для всего конвейера или этапа следующим образом:
pipeline {
agent { // specify docker container for entire pipeline
docker {
image ''
args ''
}
}
}
stage('test') {
agent { // all steps of this stage will be executed inside this docker container
docker {
image ''
args ''
}
}
}
Вы не можете использовать эту директиву docker
какшаг конвейера, как sh
, 'эхо'.
Jenkins действительно поставляет DSL docker
, который можно напрямую использовать в Scripted Pipeline
.
Declarative Pipeline
укажите шаг script
, в который мы можем поместить сценарий , похожий на сценарий, как показано ниже:
stage('test') {
steps {
script {
def version = ....
def img = docker.build(...)
img.push()
docker.image(...).inside(){}
}
}
}
Таким образом, вы можете изменить свой файл Jenkins каки попробуйте.
pipeline {
agent any
stages {
stage('Build') {
steps {
echo 'Building..'
sh 'npm install'
}
}
stage('Test') {
steps {
echo 'Testing..'
script {
docker.image('selenium/standalone-firefox:3.141.59-gold')
.inside('-p 4444:4444'){}
}
sh 'npm test'
}
}
stage('Deploy') {
steps {
echo 'Deploying....'
}
}
}
}
По умолчанию интегрируется Docker Pipeline, предполагается, что Docker Registry по умолчанию имеет значение Docker Hub .
Если вы собираетесь использовать пользовательскийРеестр Docker, вы можете использовать docker.withRegistry
, чтобы указать пользовательский URL-адрес и учетные данные реестра следующим образом:
stage('Test') {
steps {
echo 'Testing..'
script {
docker.withRegistry('<custom docker registry>',
'<credentialsId for custom docker registry if required>') {
docker.image('selenium/standalone-firefox:3.141.59-gold')
.inside('-p 4444:4444'){}
}
}
sh 'npm test'
}
}
Примечание: Если в реестре настраиваемого Docker требуются учетные данные, вы должны добавить свойучетная запись для настраиваемого реестра докеров в Jenkins через учетные данные Jenkins.После добавления Jenkins назначит для вашей учетной записи идентификатор, который называется credentialsId, который используется в приведенном выше коде.