我正在努力为我的詹金斯管道获得正确的配置。
它工作,但我不知道如何分离测试
要求:
当前设置:
Jenkinsfile:
pipeline {
environment {
...
}
options {
...
}
stages {
stage('Restore') {
...
}
stage('Lint') {
...
}
stage('Build & Test DEV') {
steps {
script {
dockerImage = docker.build(...)
}
}
}
stage('Publish DEV') {
steps {
script {
docker.withRegistry(...) {
dockerImage.push()
}
}
}
}
Dockerfile:
FROM node:12.16.1-alpine AS build
#add chromium for unit tests
RUN apk add chromium
...
ENV CHROME_BIN=/usr/bin/chromium-browser
...
# works but runs both tests & build in the same jenkins stage
RUN npm run test-ci
RUN npm run build
...
这很有效,但正如您所看到的“构建
我想要 2 个独立的 jenkins 阶段(测试、构建)
我已经尝试使用Jenkins代理docker并在Jenkins文件中定义测试阶段的映像,但我不知道如何在那里添加缺少的chromium包。
Jenkinsfile:
pipeline {
agent {
docker {
image 'node:12.16.1-alpine'
//add chromium package here?
//set Chrome_bin env?
}
}
我还考虑使用已经包含铬的docker映像,但找不到任何官方图像
非常感谢您的帮助/见解如何使这项工作。
因此,一般来说,我会在时髦的语法中执行npm run命令,而不是在dockerfile中执行。所以你的代码看起来像这样:
pipeline {
agent {
docker {
image 'node:12.16.1-alpine'
args '-u root:root' // better would be to use sudo, but this should work
}
}
stages {
stage('Preparation') {
steps {
sh 'apk add chromium'
}
}
stage('build') {
steps {
sh 'npm run build'
}
}
stage('test') {
steps {
sh 'npm run test'
}
}
}
}
我还建议您使用警告ng jenkins插件在Jenkins中收集结果
您可以构建您的定制映像(包括Chromium的安装),并将其推送到一个注册表中,然后从该注册表中取出:
node {
docker.withRegistry('https://my-registry') {
docker.image('my-custom-image').inside {
sh 'make test'
}
}
}
或者直接使用 Jenkins 和 Dockerfile
构建映像:
node {
def testImage = docker.build("test-image", "./dockerfiles/test")
testImage.inside {
sh 'make test'
}
}
从位于< code >的< code>Dockerfile构建< code>test-image。/dockerfiles/test/Dockerfile。
参考:将Docker与管道一起使用
我的 Jenkins 管道中有这个阶段: 在Jenkins"管理Jenkins"全局工具配置中,我有一个名为的Maven安装,版本。 运行此管道时,<code>mvnHome</code>为空,因为我在日志中得到了以下信息: 我确实在Jenkins服务器上找到了一个路径,它可以工作,但我不希望在此脚本中使用到mvn的硬编码路径。 我该如何解决这个问题? 编辑:答案摘要,使用。 我的工作代码现在是:
我的dockerfile和wildfly配置有问题。我使用以下Dockerfile作为基础:https://github.com/mosaic-hgw/wildfly/blob/master/Dockerfile,我根据我的私人项目的需要对其进行了扩展。我想将现有的项目迁移到Docker,但是在部署WAR文件时,我得到了以下我不明白的错误消息。 现在错误是: 10:06:33,316错误[org.
我遇到了JENKINS-38706。由于它已经开放了一段时间,我正在努力解决这个问题。 我的问题是我正在运行一个多节点管道,其中一个节点是Windows从节点,具有255个字符路径限制。 因此,我正在尝试更改我的Windows从属阶段的工作区,而不是使用多分支管道使用的C:\jenkins\workspace\job-分支-随机字符,我正在尝试将其移动到c:\w\Jobs\分支。 它立即失效: 我
问题内容: 我有一个GIT存储库。当我将GIT更改推送到Gerrit中时,它会触发jenkins构建,如果成功,它将代码合并到GIT存储库中。 但是,Jenkins始终从GIT回购中构建源。它不是在挑选推送到Gerrit的更改。 我应该在Gerrit / Jenkins中更改哪些设置? 问题答案: 在git Source Code Management部分的jenkins配置中,单击高级按钮,并将
问题内容: 我正在使用声明性管道语法在Docker容器中执行一些CI工作。 我注意到,用于Jenkins的Docker插件使用主机中jenkins用户的用户ID和组ID运行一个容器(即,如果jenkins用户具有用户ID 100和组ID 111,它将运行管道以创建带有命令)。 我遇到了一些问题,因为该容器将以不存在的用户运行(特别是我遇到了用户没有主目录的问题)。所以我想到了创建一个Dockerf
我在dockerfile中使用映像jenkins/ssh slave作为基础。我想安装一个特定的maven版本并配置设置。但它不起作用,它没有选择从我的nexus下载工件的设置。此外,我不知道谁应该指定maven版本:( 你可以在下面看到我的dockerfile。我尝试安装Maven键入maven: 3.5.6,但它说找不到。我也复制了我的设置,但maven不会去我的nexus下载依赖项(sett