我有bash脚本构建,标记和推docker图像到存储库。这是我的Jenkinsfile的一部分;
pipeline {
agent {
kubernetes {
label 'bmf-worker'
defaultContainer 'jnlp'
yaml """
apiVersion: v1
kind: Pod
metadata:
labels:
component: ci
spec:
# Use service account that can deploy to all namespaces
serviceAccountName: service-reader
containers:
- name: docker
image: docker
command:
- cat
tty: true
- name: kubectl
image: gcr.io/cloud-builders/kubectl
command:
- cat
tty: true
- name: gcloud
image: google/cloud-sdk
command:
- cat
tty: true
"""
}
}
stages {
stage('Code Checkout and Setup') {
steps {
echo 'Code Checkout and Setup'
}
}
stage('Build') {
parallel {
stage('Build') {
steps {
echo 'Start building Frontend and Backend Docker images'
}
}
stage('Build BMF Frontend') {
steps {
container('gcloud') {
echo 'Building Bmf Frontend Image'
sh 'chmod +x build.sh'
sh './build.sh --build_bmf_frontend'
}
}
}
stage('Tag BMF Frontend') {
steps {
container('gcloud') {
echo 'Building Bmf Frontend Image'
sh 'chmod +x build.sh'
sh './build.sh --tag_frontend'
}
}
}
stage('Build BMF Backend') {
steps {
container('gcloud') {
echo 'Buildinging Bmf Backend Images'
sh 'chmod +x build.sh'
sh './build.sh --build_bmf_backend'
}
}
}
stage('Tag BMF Backend') {
steps {
container('gcloud') {
echo 'Building Bmf Frontend Image'
sh 'chmod +x build.sh'
sh './build.sh --tag_frontend'
}
}
}
}
}
如何使用podTemplate执行我的步骤。当我使用docker容器进行阶段构建BMF后端时,我有这些错误;
在PodTemplate中定义了gcloud容器;
>
time=“2019-03-12t13:40:56z”level=error msg=“未能拨号GRPC:无法连接到Docker守护进程。'Docker守护进程‘正在此主机上运行吗?:拨号unix/var/run/Docker。sock:connect:没有这样的文件或目录”
无法连接到UNIX:///var/run/Docker.sock上的Docker守护进程。docker守护进程正在运行吗?
你面临的第一个问题与Docker有关,而不是詹金斯。
Docker命令只能由root用户或Docker
组中的用户运行。
如果您希望Jenkins用户能够执行Docker命令,那么您可以作为root用户运行以下命令,将Jenkins添加到Docker组:
问题内容: 我当前正在尝试触发现有作业,并在当前作业的工作区中接收生成的工件。 以下工作正常: 问题是,这确实需要最后一次成功的构建,这意味着如果其他一些用户设法比我更快地运行并行构建,那么我将采用他们的工件而不是我的工件。 根据此页面 ,应该有一种使用特定作业的方法: 但是,没有关于如何在声明式管道中使用它的解释或示例。 有什么提示吗? 在此先感谢您的帮助。 问题答案: 我找到了一个不错的解决方
问题内容: 我想在声明性Jenkins管道内的锁内运行多个阶段: 我收到以下错误: 这是什么问题 该文档明确指出: 也可以用于将多个阶段包装到单个并发单元中 问题答案: 问题是,尽管事实上在2016年9月Beta版中提供了声明式管道,但您引用的博客文章(自10月起)记录的是脚本化管道,而不是声明式的(声明不多,所以我觉得您痛)。尚未将可锁定资源作为声明性管道步骤来使用,而该方式不能启用您正在寻找的
问题内容: 已解决 :感谢S.Richmond的以下答复我需要取消所有类型的存储映射,这意味着将变量和使用后作废。 附加 :搜索此错误的人员可能有兴趣使用Jenkins管道步骤- 在此处查找更多信息。 我正在尝试使用Jenkins Pipeline从用户那里获取输入,该输入作为json字符串传递给作业。管道然后使用隔离器对此进行解析,然后选择重要信息。然后,它将使用该信息与不同的作业参数并行运行1
下面是我简单的jenkins pipeline groovy脚本,它将用这两个阶段和我们想要构建的作业创建一个管道,我希望在job configuration下的脚本中每次都更新用于构建和代码分析的作业名,方法是从用户界面中获取数据,用户将使用Eclipse提供构建作业名和代码分析作业名- jenkinsfile脚本:-
问题内容: 我们有几个Java项目。每个项目都有自己的交付管道。 所有管道都具有以下共同的步骤(简化): 建立项目 发布项目 部署到测试环境 部署到生产环境 项目管道仅在项目特定的属性(例如服务名称或测试和生产环境的IP地址)上有所不同。 问题是:我们如何避免所有项目都有共同之处?Jenkins的“管道作为代码”是否提供类似管道模板的内容? 我可以想象一个模板将在我们的项目管道中节省很多冗余代码/
我们能比较詹金斯和声纳吗?如果是,怎么做。我想知道詹金斯和声纳的优缺点。比如为什么要使用声纳,它比詹金斯有什么优势,反之亦然?