标签: jenkins-job-builder

Jenkins - Git Submodule Credentials与Parent Repo不同

背景

Jenkins被用于从具有Git子模块的Git仓库构建工件.子模块与父项目不在同一个repo中,甚至不在同一端点.问题是父repo检查正常,因为凭证ssh密钥A与主/父repo相关联,但不出所料,在子模块上失败,因为凭证ssh密钥B与Jenkins的repo没有关联' 观点看法.

令人惊讶的是Jenkins对Git子模块没有更好的开箱即用支持; 贡献的时间.

问题

  1. 有没有办法为单个Git仓库存储多个凭证?
  2. 如果答案是否定的,为什么Jenkins在Advanced子模块行为下提供了从父存储库的默认远程使用凭证的选项,如下所示?
  3. 还有什么方法可以处理具有不同凭据的Jenkins和Git子模块?

在此输入图像描述

系统信息

在Docker机器上运行Jenkins(本地)

在CentOS上运行Jenkins(生产)

詹金斯版本:2.60.2(两者)

Git插件版本:3.6.4(两者)

git github jenkins jenkins-plugins jenkins-job-builder

12
推荐指数
1
解决办法
898
查看次数

Jenkins Job-Builder:如何正确地包含外部文件中的作业模板?

我正在调查使用Jenkins Job-Builder(来自OpenStack)作为管理jenkins作业配置的方法.在这样做的过程中,我试图找出使用!include自定义标记从外部文件中包含作业模板的正确(最佳?)方式.

在当前的用例中,我们基本上会有一个模板将被很多工作使用.由于这里超出范围的原因,每个作业都需要存在于自己的文件中.

到目前为止,我已经得到了这个工作:

作业template.yml

name: 'pre-build-{proj}-{repo}'
project-type: freestyle
... etc ...
Run Code Online (Sandbox Code Playgroud)

作业1.yml

- job-template:
    !include job-template.yml

- project: 
    name: job-1
    proj: my-proj
    repo: my-repo
    jobs:
      - 'build-config-{proj}-{repo}'
Run Code Online (Sandbox Code Playgroud)

这似乎是错误的,因为模板定义会在两个文件中分开,并且需要-job-template:在每个作业文件中进行不必要的重复行.我希望以下工作:

作业template.yml

- job-template:
    name: 'pre-build-{proj}-{repo}'
    project-type: freestyle
    ... etc ...
Run Code Online (Sandbox Code Playgroud)

作业1.yml

!include job-template.yml

- project: 
    name: job-1
    proj: my-proj
    repo: my-repo
    jobs:
      - 'build-config-{proj}-{repo}'
Run Code Online (Sandbox Code Playgroud)

不幸的是,后者导致行上的yaml解析错误- project::

yaml.scanner.ScannerError:"job-1.yml",第3行,第10列中不允许使用映射值

有没有办法将整个模板定义放入模板文件中?如果我们需要从多个文件中提取多个模板,这将变得特别烦人.

jenkins jenkins-job-builder

9
推荐指数
1
解决办法
4117
查看次数

Jenkins作业构建器gitlab触发器被忽略

我有以下Jenkins Job定义:

- scm:
  name: some-project
  scm:
    - git:
      url: git@gitlab.****/some-project.git
      credentials-id: some-ssh-username-with-private-key
      branches:
        - origin/master
- project:
    name: some-project
    jobs:
      - '{name}':
        triggers:
          gitlab:
            trigger-push: true
            trigger-merge-request: false
            trigger-open-merge-request-push: never
Run Code Online (Sandbox Code Playgroud)

现在这个工作可以上传到詹金斯没有错误,但如果我去Configure的页面some-project在詹金斯的Web UI,我可以看到,Build when a change is pushed to GitLab触发器未启用部分.GitLab回购被正确配置- 源代码管理这项工作的部分有git@gitlab.****/some-project.gitsome-ssh-username-with-private-key证书和分支origin/master配置.但没有工作触发器,这是没用的.

我究竟做错了什么?

请注意,我不是问如何配置GitLab WebHooks来触发Jenkins作业.我可以手动执行此操作并且工作正常.但是我们希望使用Jenkins Job构建器管理我们的Jenkins作业,以避免通过Web UI配置它们的错误过程并跟踪作业配置的变化 - 我们正在使用Jenkins作业定义创建git存储库.

jenkins gitlab jenkins-job-builder

7
推荐指数
1
解决办法
517
查看次数

如何在Jenkins Job Builder中使用`inject-passwords`?

我正在使用一个yaml文件来配置jenkins作业,并且遇到了该功能inject-passwords(请参阅此处)。但是,本文档既没有描述如何在jenkins环境中使用变量,也没有描述“加密”密码的含义(“ 如何加密”)。指向EnvInjectPlugin的链接也没有所需的信息。

在哪里可以找到有用的信息/文档?为什么本文档如此不完整?

内容:

我想以安全的方式将密码注入詹金斯工作。在此jenkins作业中,我想使用此密码作为登录在线服务的密码,以便测试该服务的多个方面。我需要测试脚本来获取该密码(环境变量?)才能登录服务。

未解决的参考文档中未回答的问题:

  • Name of passwordhere)是环境变量名称的信息在哪里?
  • 如何加密密码的信息在哪里:(password (str) Encrypted password请参阅此处

yaml jenkins jenkins-job-builder

6
推荐指数
1
解决办法
509
查看次数

使用 Jenkins Job Builder (JJB) 时如何覆盖特定作业的属性

我们有一个 Jenkins 设置(目前未使用 Jenkins Job Builder 进行管理),其中每个 Web 项目都有 5 个非常相似的 Jenkins 作业。这是一个简化的 Jenkins Job Builder yaml 文件,可以满足我们的需求:

- defaults:
    name: global
    project-type: 'freestyle'
    disabled: false
    buildTargets: 'build'
- job-template:
    name: '{jobNameFirstSegment}-{jobNameSecondSegment}'
    defaults: global
    builders:
      - ant:
          targets: '{buildTargets}'
          buildfile: 'build.xml'
- project:
    name: lorem
    jobNameFirstSegment:
      - foo:
          displayNameFirstSegment: 'Foo'
          urlGitRepository: 'git@bitbucket.org:mycompany/foo.git'
      - bar:
          displayNameFirstSegment: 'Bar'
          urlGitRepository: 'git@bitbucket.org:mycompany/bar.git'
      - baz:
          displayNameFirstSegment: 'Baz'
          urlGitRepository: 'git@bitbucket.org:mycompany/baz.git'
    jobNameSecondSegment:
      - lorem:
          buildTargets: 'build-lorem'
      - ipsum:
          buildTargets: 'build-ipsum'
      - dolor:
          buildTargets: 'build-dolor'
      - sit:
          buildTargets: …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-job-builder

5
推荐指数
1
解决办法
2628
查看次数

Jenkins 作业失败,错误为 java.lang.NoClassDefFoundError

我们已安排 Jenkins 构建来创建 AWS VM,VM 已成功联机,但在归档工件时,作业失败并显示以下错误消息。

\n\n
Archiving artifacts\nERROR: Step \xe2\x80\x98Archive the artifacts\xe2\x80\x99 aborted due to exception: \njava.lang.NoClassDefFoundError: Could not initialize class sun.nio.fs.LinuxNativeDispatcher\n    at sun.nio.fs.LinuxUserDefinedFileAttributeView.copyExtendedAttributes(LinuxUserDefinedFileAttributeView.java:291)\n    at sun.nio.fs.LinuxFileSystem.copyNonPosixAttributes(LinuxFileSystem.java:72)\n    at sun.nio.fs.UnixCopyFile.copyFile(UnixCopyFile.java:267)\n    at sun.nio.fs.UnixCopyFile.copy(UnixCopyFile.java:581)\n    at sun.nio.fs.UnixFileSystemProvider.copy(UnixFileSystemProvider.java:253)\n    at java.nio.file.Files.copy(Files.java:1274)\n    at hudson.FilePath$31$1.visit(FilePath.java:2296)\n    at hudson.util.DirScanner.scanSingle(DirScanner.java:44)\n    at hudson.FilePath$ExplicitlySpecifiedDirScanner.scan(FilePath.java:2991)\n    at hudson.FilePath$31.invoke(FilePath.java:2290)\n    at hudson.FilePath$31.invoke(FilePath.java:2283)\n    at hudson.FilePath.act(FilePath.java:1042)\n    at hudson.FilePath.act(FilePath.java:1025)\n    at hudson.FilePath.copyRecursiveTo(FilePath.java:2283)\n    at jenkins.model.StandardArtifactManager.archive(StandardArtifactManager.java:61)\n    at hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:235)\n    at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)\n    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)\n    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:744)\n    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:690)\n    at hudson.model.Build$BuildExecution.post2(Build.java:186)\n    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:635)\n    at hudson.model.Run.execute(Run.java:1823)\n    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)\n    at hudson.model.ResourceController.execute(ResourceController.java:97)\n    at hudson.model.Executor.run(Executor.java:429)\n
Run Code Online (Sandbox Code Playgroud)\n\n

造成此问题的原因是什么以及如何解决?

\n

java artifacts build jenkins jenkins-job-builder

5
推荐指数
1
解决办法
1万
查看次数

Jenkins 中轻量级签出和浅层克隆之间的区别

在Jenkins作业构建器的管道SCM配置中,我们有两个选项——轻量级签出和浅层克隆。这些选项之间有什么区别以及我们何时使用每个选项?

jenkins jenkins-plugins jenkins-job-builder

4
推荐指数
1
解决办法
3404
查看次数

Jenkins Job Builder:项目级变量

在 JJB 中,您可以像这样定义项目级变量:

- defaults:
    name: global
    git_url: "git@....."

- project
    name: some-test
    jobs:
      - test-{name}

- job-template
    name: test-{name}
    scm:
      - git:
          url: "{git_url}"
          branches:
            - master
Run Code Online (Sandbox Code Playgroud)

我的问题是,我必须在默认级别对 git_url 的值进行硬编码,还是可以使用某种 JJB 机制在作业加载/执行时将其引入?

我问的原因是包含这些 JJB 作业的 yaml 脚本可用于定义 TEST、QA 和 PROD。最好只指向一个包含 git_url 值和任何其他全局变量值的属性文件。我看了看:http : //docs.openstack.org/infra/jenkins-job-builder/definition.html?highlight=default#defaults,我没有看到任何机制。

jenkins jenkins-job-builder

3
推荐指数
1
解决办法
2086
查看次数

Jenkins SCM Sync配置插件和Jenkins Job Builder有什么区别?

我正在寻找在Git中维护Jenkins作业和插件配置的可能解决方案。我的动机是对Jenkins实例所做的更改进行轻松(可能是自动)备份,以及在需要恢复到以前版本的配置时进行快速恢复。(或者可能设置一个新的Jenkins实例。)

我遇到了SCM Sync配置插件Jenkins Job Builder,并且很难确定这些解决方案是否适合我以及它们之间有什么区别。

有什么信息可以帮助我确定差异并选择适合我的需求?

git jenkins jenkins-plugins jenkins-job-builder

2
推荐指数
1
解决办法
877
查看次数

如何通过 jenkins 作业构建器配置“定期构建”构建触发器?

我目前有一份詹金斯工作,我试图将其设置为通过 jjb 每 4 小时运行一次。我已将其配置为当前每 4 小时运行一次,方法是手动编辑作业并选择“定期构建”触发器并输入适当的值。然而,我想找到一种方法来自动化这个过程。我查看了这里的文档:https://media.readthedocs.org/pdf/jenkins-job-builder/latest/jenkins-job-builder.pdf但我没有任何运气。

这就是我目前所拥有的:

- 'build-job-jjb-{type}-{label}': type: build label: Build git_repo: XXXXXXX git_url: git@github.com:XXXXXXXX/{git_repo}.git git_branch: origin/develop home: pipeline/scripts cmd: ./build.sh triggers: - timed: "00 08,12,16,20,00,04 * * *"

jenkins jenkins-job-builder

1
推荐指数
1
解决办法
1042
查看次数

使用REST API远程创建Jenkins Job

我无法远程创建Job(REST API + Postman),我尝试

开机自检:

http://localhost:8080/createItem?name=NEWJOB

要么

http://localhost:8080/job/NEWJOB/build

并且总是有403错误(GET方法起作用)。

在这里,我看到我需要为POST创建config.xml:

https://issues.jenkins-ci.org/browse/JENKINS-9410?focusedCommentId=204821&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-204821

我不明白如何创建此配置?我需要这个配置吗?如何远程创建jenkins Job?

rest jenkins jenkins-job-builder

1
推荐指数
1
解决办法
3286
查看次数

通过python脚本SSL连接在Jenkins中构建作业

我想通过 python 脚本在 jenkins 中构建一个作业。我对 python 完全陌生。我正在使用 python-jenkins 中的以下方法。我的 jenkins url 是 https。

 server = jenkins.Jenkins(ci_jenkins_url, username=username, password=token)
Run Code Online (Sandbox Code Playgroud)

我得到了

SSLError: HTTPSConnectionPool(host='{myjenkinsur}', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))
Run Code Online (Sandbox Code Playgroud)

如何通过 SSL 进行连接?

python ssl jenkins jenkins-job-builder

0
推荐指数
1
解决办法
1615
查看次数