小编And*_*ray的帖子

@NonCPS在Jenkins管道脚本中的作用是什么?

我在Jenkins有一个管道脚本.

我以前得到这个例外:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:不允许使用方法的脚本groovy.json.JsonSlurperClassic parseText java.lang.String

我查看了异常,我发现了一些迹象表明我应该注释发生异常的方法@NonCPS.我做到了这一点,却没有真正理解这是做什么的.

然而,在那之后,我投入该方法的异常不再被一个try子句捕获.

那背后的想法是@NonCPS什么?使用它有什么影响?

groovy jenkins

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

吉普错误!堆栈错误:`C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe`

运行 Jenkins 作业时出现以下错误。我已经安装了 MSBuild 15 和 17 并指定了正确的路径。

Can anyone shed some light on this? Where the issue is. Thanks.

(x86)\Jenkins\workspace\POS4> npm install

pos4@1.0.10 install C:\Program Files (x86)\Jenkins\workspace\POS4 node-gyp rebuild

C:\Program Files (x86)\Jenkins\workspace\POS4>if not defined npm_config_node_gyp (node "C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\....\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild ) Warning: Missing input files: C:\Program Files (x86)\Jenkins\workspace\POS4\build..\build\Release\binding.node Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch. C:\Program Files (x86)\Jenkins\workspace\POS4\build\binding.vcxproj(20,3):

error MSB4019: The imported …

msbuild node.js npm jenkins npm-install

11
推荐指数
4
解决办法
2万
查看次数

Jenkins管道输入步骤中的强制文本参数

我们正在Jenkins中构建多个管道任务,以便在某些部署作业上更轻松.其中一个需要手动输入几个参数.为此,我们使用这样的输入步骤:

def userInput = input ( message : 'Select deployment versión and input deployment code:',
     parameters: [[$class: 'TextParameterDefinition', defaultValue: '', description: 'Clarive code', name: 'code']] )
Run Code Online (Sandbox Code Playgroud)

这些参数是强制性的.我们没有在文档中找到任何会使TextParameterDefinition成为必需的属性.现在我们重新运行该步骤,直到所有参数都不为空,但解决方案对用户来说有点混乱.

是否有另一种方法来处理强制参数,以避免在循环上运行相同的步骤?

jenkins jenkins-pipeline

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

詹金斯无法找到npm

在这个linux服务器上,我有一个名为"myuser"的用户.对于这个用户,当回显路径时,我得到这个:

/home/myuser/bin:/home/myuser/.local/bin:/home/myuser/.nvm/versions/node/v6.11.1/bin:/usr/local/sbin:/usr/local/bin:/ usr/sbin目录:在/ usr/bin中:/ sbin目录:/ bin中:在/ usr /游戏:在/ usr /本地/游戏:/卡/箱

拥有节点应用程序,在手动部署时运行:

npm i
Run Code Online (Sandbox Code Playgroud)

它有效.

现在,我安装了詹金斯.我正在尝试安装的Jenkins项目位于:

/var/lib/jenkins/workspace/test
Run Code Online (Sandbox Code Playgroud)

构建正在执行shell脚本.在那个窗口我输入了:

#!/bin/bash
npm i
Run Code Online (Sandbox Code Playgroud)

与Jenkins一起构建时,我得到了这个:

[test] $ /bin/bash /tmp/jenkins756533162549346948.sh
/tmp/jenkins756533162549346948.sh: line 3: npm: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)

如果我只写:

echo $PATH
Run Code Online (Sandbox Code Playgroud)

在Jenkins shell中,我得到了这个:

[test] $ /bin/sh -xe /tmp/jenkins5067097808572366507.sh
+ echo /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
[test] $ /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/6.11.1/bin/node /tmp/jenkins8733250738704177758.js
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud)

如您所见,我安装了nodejs插件.无论如何,当使用Jenkins shell时,找不到npm和even节点.如何让Jenkins知道npm/node在哪里?我试着先在shell中写这个:

$ PATH = /家/ myuser的/ .nvm /版本/节点/ v6.11.1 /箱

但仍然没有运气.

linux node.js npm jenkins

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

如何在Jenkins服务器上运行Jest测试

我试图在Jenkins部署期间运行我的Jest测试.如果我进入服务器,我可以sudo到Jenkins用户并成功运行工作区中的测试.但是,当我尝试从GUI构建项目时出现错误.这是我的项目设置:

我已经安装了nodejs插件,后者又在全局安装了gulp,jest-cli和babel. 在此输入图像描述

然后在构建步骤中:

在此输入图像描述

测试失败,出现此错误:

TypeError: Cannot read property 'getResourceByPath' of null
    at Loader.getDependenciesFromPath (/var/lib/jenkins/workspace/PHPStaging/node_modules/jest-cli/src/HasteModuleLoader/HasteModuleLoader.js:570:39)
    at /var/lib/jenkins/workspace/PHPStaging/node_modules/jest-cli/src/TestRunner.js:250:22
    at process._tickCallback (node.js:368:9)
Running 6 test suites...
 FAIL  resources/__tests__/myTest.js
Run Code Online (Sandbox Code Playgroud)

似乎Node在测试中需要模块时遇到问题,但我并不完全确定.任何帮助或方向将不胜感激.

node.js jenkins jestjs

8
推荐指数
0
解决办法
3266
查看次数

如何在ion3中将视频文件从ios转换为base64

我正在尝试转换我们可以从iOS设备检索的视频网址,并将其转换为离子3中的BASE64,但我无法实现BASE64网址.

iOS视频网址:filePath = /var/mobile/Containers/Data/Application/3436A7EB-4684-4618-8125-3E6AE1645FCE/Documents/MUS_RA/1534429730643_capturedvideo.MOV

我尝试使用BASE64 cordova插件将以下代码转换为BASE64,但没有运气

this.base64.encodeFile(filePath)
            .then((base64String: string) => {
                 console.log("base64VideoChange");
                resolve(base64String);
             }, (err) => {
                 console.log("base64VideoNOTChange");
                 reject(err);
             });
Run Code Online (Sandbox Code Playgroud)

注意:我使用离子3.请帮忙.

javascript base64 ionic3 angular

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

哪个git工作流用于产品开发和产品定制

我们已经使用git-flow了一段时间来开发软件框架.我们在一个存储库中有masterdevelopment分支.

最近,不同的客户开始对购买框架感兴趣,这需要为每个客户定制框架.

到目前为止,我们feature-customerXYZ从主服务器为每个客户分支了一个新分支,在那里进行了自定义并在自定义完成后保持分支打开(这可以防止产品master/ development分支的"感染" 来自定制).

与此相对应,在框架本身的发展继续使用该产品通常混帐流工作流程master,development,features,hotfixesrelease分支机构.

在这种情况下发生了两种常见的情况,我认为我们的工作流程无法以最佳方式处理:

  1. feature-customerXYZ分支的开发可以包含值得在产品master/ development分支中实现的提交.由于feature-customerXYZ分支永远不会被关闭,因此这些提交必须是rebased或者cherrypicked是产品分支,这需要在定制之后进行额外的工作并且容易出错.

  2. feature-customer分支打开时发现的修补程序git-flow通过将hotfix修复后的已打开分支仅合并到产品masterdevelopment分支来处理,但不会合并到打开的feature-customer分支中(更准确地说:它们不会合并到所有打开的feature分支中).

是否有一个git工作流可以简洁地处理这个?是否有一个聪明的替代,而不是merge,cherrypickrebase的提交到产品master/ develop或开feature分店,分别?

git version-control git-rebase git-flow git-cherry-pick

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

Jenkins 离线安装插件

在 Linux 服务器上安装了 Jenkins,想手动安装一些插件。

我想安装 Blue Ocean 和 Artifactory。

对于这两个插件,我都下载了 hpi 文件并尝试安装它,但是我遇到了很多依赖项错误。

我现在是否也必须手动安装这些依赖项?或者有更好的方法来做到这一点?

我尝试安装这些依赖项之一,并且该依赖项也有一些依赖项错误:-(

Linux 服务器无法访问 Internet。

谢谢!

罗伯特

plugins artifactory jenkins jenkins-blueocean

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

Jenkins消耗了很大一部分物理内存

我在虚拟操作系统上安装了Jenkins.每当我启动Jenkins服务时,物理内存都会达到94%.然后它永远不会减少.所以我的系统变得非常缓慢且没有反应.结果Jenkins网页变得缓慢.我为RAM分配了4GB.有没有办法加快我的机器限制詹金斯的内存使用?

memory-management jenkins

6
推荐指数
0
解决办法
5911
查看次数

Docker Jenkins Blue Ocean无法在管道中运行ssh scp

我从像这样的jenkins指令构建了一个Jenkins码头工人:

docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v /root/.ssh/id_rsa:/root/.ssh/id_rsa -v jenkins-home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
Run Code Online (Sandbox Code Playgroud)

它按我的预期工作。

然后,我设置了一个新的Pipeline作业,即Jenkinsfile,如下所示:

pipeline {
agent {
    docker {
        image 'maven:3-alpine'
        args '-v /root/.m2:/root/.m2'
    }
}
stages {
    stage('Build') {
        steps {
            sh 'mvn -B -DskipTests clean package'
        }
    }
    stage('Test') {
        steps {
            echo "Testing!"
        }

    } 
    stage('Deploy') {
        steps {
            sh "ssh docker@192.168.99.101 rm -rf /home/docker/wildfly_deployments/*" 
            sh "scp target/test-docker-app-1.0.war docker@192.168.99.101:/home/docker/wildfly_deployments/"
        }

    } 
}
}
Run Code Online (Sandbox Code Playgroud)

当我运行此作业时,在“部署”阶段,它向我显示此错误消息

[test-docker-app] Running shell script
+ ssh …
Run Code Online (Sandbox Code Playgroud)

ssh scp jenkins docker jenkins-pipeline

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