我正在运行以下命令Jenkinsfile
.但是,我收到错误"输入设备不是TTY".
docker run -v $PWD:/foobar -it cloudfoundry/cflinuxfs2 /foobar/script.sh
Run Code Online (Sandbox Code Playgroud)
有没有办法Jenkinsfile
从不进行交互模式运行脚本?
我基本上有一个名为的文件script.sh
,我想在Docker容器中运行.
我在Jenkinsfile(Groovy)上有这样的东西,我想在变量中记录stdout和退出代码,以便稍后使用这些信息.
sh "ls -l"
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,特别是因为你似乎无法在里面运行任何类型的groovy代码Jenkinsfile
?
在编写jenkins管道时,为了查看它是否有效,提交每个新更改似乎非常不方便.
有没有办法在不提交代码的情况下在本地执行这些?
Jenkins文件中是否有注释?如果是这样,语法是什么?
我正在使用声明性管道语法.
我想在下面的"帖子"部分注释掉,直到我的SMTP服务器正常工作.
pipeline {
agent { label 'docker-build-slave' }
environment {
IMAGE = 'registry.gitlab.com/XXXXX/bible-server'
DOCKER_REGISTRY_CREDENTIALS = credentials('DOCKER_REGISTRY_CREDENTIALS')
}
options {
timeout(10)
}
stages {
stage('Test') {
steps {
sh 'yarn'
sh 'npm test'
}
}
stage('Build') {
when {
branch '*/master'
}
steps {
sh 'docker login -u ${DOCKER_REGISTRY_CREDENTIALS_USR} -p ${DOCKER_REGISTRY_CREDENTIALS_PSW} registry.gitlab.com'
sh 'docker build -t ${IMAGE}:${BRANCH_NAME} .'
sh 'docker push ${IMAGE}:${BRANCH_NAME}'
}
}
stage('Deploy') {
when {
branch '*/master'
}
steps {
echo 'Deploying ..'
}
}
} …
Run Code Online (Sandbox Code Playgroud) 我们正在运行Jenkins 2.x并喜欢新的Pipeline插件.但是,如果存储库中有如此多的分支,则磁盘空间会很快填满.
是否有任何与Pipeline兼容的插件可以在成功的构建中消除工作空间?
如何从内部触发另一个作业的构建Jenkinsfile
?
我假设这个工作是同一个github组织下的另一个存储库,一个已经有自己的Jenkins文件.
我也想在分支名称为master时执行此操作,因为触发任何本地分支的下游构建没有意义.
更新:
stage 'test-downstream'
node {
def job = build job: 'some-downtream-job-name'
}
Run Code Online (Sandbox Code Playgroud)
仍然,执行时我得到一个错误
找不到名为some-downtream-job-name的参数化作业
我确信这个工作存在于jenkins中,并且与当前工作文件夹在同一组织文件夹下.这是另一项有自己的工作Jenkinsfile
.
请注意,此问题特定于GitHub组织插件,该插件可从GitHub组织自动创建和维护每个存储库和分支的作业.
我是码头工人的新手.我只是尝试在我的本地机器(Ubuntu 16.04)中使用docker和Jenkins.
我使用下面的管道脚本配置了一个新作业.
node {
stage('Build') {
docker.image('maven:3.3.3').inside {
sh 'mvn --version'
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它失败并出现以下错误.
我正在尝试创建一个声明性的Jenkins管道脚本,但是遇到了简单变量声明的问题.
这是我的脚本:
pipeline {
agent none
stages {
stage("first") {
def foo = "foo" // fails with "WorkflowScript: 5: Expected a step @ line 5, column 13."
sh "echo ${foo}"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Expected a step @ line 5, column 13.
def foo = "foo"
^
Run Code Online (Sandbox Code Playgroud)
我在Jenkins 2.7.4和Pipeline 2.4上.
鉴于jenkins 2.1构建管道,jenkins将一个env
变量注入到node{}
.例如,BRANCH_NAME
可以使用
node {
echo ${env.BRANCH_NAME}
...
Run Code Online (Sandbox Code Playgroud)
env
属性.我正在寻找像这样的代码
node {
for(e in env){
echo e + " is " + ${e}
}
...
Run Code Online (Sandbox Code Playgroud)
这会像回应一样
BRANCH_NAME is myBranch2
CHANGE_ID is 44
...
Run Code Online (Sandbox Code Playgroud)