gpt4 book ai didi

node.js - 将参数从 Jenkins CI 传递到 npm 脚本

转载 作者:行者123 更新时间:2023-12-04 10:20:15 26 4
gpt4 key购买 nike

当我运行 Jenkins build 时,我想通过 COMMIT_HASHBRANCH_NAME到我的 javascript 文件之一:publish.js ,以便我可以删除 tags 的硬编码值和 consumerVersion .

这是我的代码:

Jenkins 文件

stage('Publish Pacts') {
steps {
script {
sh 'npm run publish:pact -Dpact.consumer.version=${COMMIT_HASH} -Dpact.tag=${env.BRANCH_NAME}'
}
}
}

package.json
"scripts": {
"publish:pact": "node ./src/test/pact/publish.js"
}

./src/test/pact/publish.js
let publisher = require('@pact-foundation/pact-node');
let path = require('path');

let opts = {
providerBaseUrl: `http://localhost:${global.port}`,
pactFilesOrDirs: [path.resolve(process.cwd(), 'pacts')],
pactBroker: 'http://localhost:80',
tags: ["prod", "test"], // $BRANCH_NAME
consumerVersion: "2.0.0" // $COMMIT_HASH
};

publisher.publishPacts(opts).then(() => {
console.log("Pacts successfully published");
done()
});

有谁知道如何做到这一点?

最佳答案

您可以将 cli 参数传递给您的 Node 脚本,该脚本以您的 process.argv 结尾。 .
npm 也传递了 cli arguments通过两个破折号 -- .

为了说明这一点,请考虑以下示例:

Jenkins 文件

stage('Publish Pacts') {
steps {
script {
sh 'npm run publish:pact -- ${COMMIT_HASH} ${env.BRANCH_NAME}'
}
}
}

package.json
"scripts": {
"publish:pact": "node ./src/test/pact/publish.js"
}

发布.js

// process.argv[0] = path to node binary
// process.argv[1] = path to script

console.log('COMMIT_HASH:',process.argv[2]);
console.log('BRANCH_NAME:',process.argv[3]);

为简单起见,我省略了 cli 标志。
希望这可以帮助

关于node.js - 将参数从 Jenkins CI 传递到 npm 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60896461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com