我通过 maven jmeter 插件成功生成了一个 jmeter 仪表板。我在 Jenkins 上配置了这个构建来运行,它也成功生成了仪表板,并显示了所有图形/数据。我现在尝试使用 HTML 发布器发布此仪表板,以便可以从 Jenkins 构建访问它。该插件正常工作并将生成的仪表板和所有必需的文件夹/文件移动到存档位置,并在构建页面上显示一个指向 index.html 的链接。
但是,如果我单击该链接,它会打开索引页面,但所有内容都是空的……仅显示标题/导航,例如: 通过 jenkins 清空仪表板 。如果我通过构建服务器打开完全相同的仪表板索引页面,它会显示正常,并且一切都会显示并正常工作。
我在 jenkins.xml 中添加了以下内容,希望它是 css 等权限问题:
-Dhudson.model.DirectoryBrowserSupport.CSP=
但这并没有起到任何作用。
任何想法为什么 jmeter 仪表板报告可能无法通过 Jenkins 正确显示,但在通过服务器直接访问时却显示正确?作为旁注,我还以完全相同的方式发布 jacoco 和 surefire 报告,并且它们显示良好。我也在使用性能插件,它还可以从 jmeter 中提取数据并显示一些图表……但我也希望漂亮的仪表板能够正常工作。
谢谢!
根据 AWS 文档,我可以创建一个新的 lambda 函数别名,例如:
aws lambda create-alias \
--region us-west-2 \
--function-name helloworld \
--description "sample alias" \
--function-version "\$LATEST" \
--name DEV \
--profile adminuser
据我了解,此命令基本上将代码部署到最新的 lambda 别名。所以我相信一旦我部署它,它就会变得活跃。但我会在让它上线之前对其进行测试。我的问题是,将它置于中间阶段以便它可以等到我的 Jenkins 测试完成然后激活它的最简单方法是什么?我应该创建另一个像 $PRE_LATEST 这样的函数版本吗?
我正在使用声明性管道和单独的管道助手。在助手之一,我有一个文件vars/getTriggerCause.groovy用
/**
* Checks for cause of the job trigger and returns respective cause
* @return user, scm, time or other
*/
def String getCause() {
echo "CAUSE ${currentBuild.rawBuild.getCauses().properties}"
def cause = "${currentBuild.rawBuild.getCauses()}"
if (cause =~ "UserIdCause") {
return "user"
}
}
/**
* Checks if trigger cause of the job is the timer
* @return true if trigger is timer
*/
def boolean isTime() {
return this.call() == "time"
}
Run Code Online (Sandbox Code Playgroud)
现在我想像这样使用 Jenkisfile 中的函数
echo getTriggerCause().isTime()
Run Code Online (Sandbox Code Playgroud)
这会导致 NPE: …
我想用这个input步骤提示用户输入字符串,我在我的Jenkinsfile中使用了脚本管道,即顶层块是node而不是pipeline,但是当我把这input一步放在stage块中时,蓝海只是报告失败而不是提示我输入。
该input步骤是否仅支持声明性而不是脚本化?
代码如下:
node {
input {
message "Should we continue?"
ok "Yes, we should."
parameters {
string(name: 'PERSON', defaultValue: 'Mr Jenkins', description: 'Who should I say hello to?')
}
}
echo "Hello, ${PERSON}"
}
Run Code Online (Sandbox Code Playgroud) 我试图在 jenkinsfile 中转义 json 字符串,但我在线检查的示例有点复杂。
sshagent(credentials: ['keypair']) {
sh """
ssh ansible@ansible-server \
'
# vars
src_env="${params.source_env}"
dest_env="${params.destination_env}"
src_prefix="${params.source_s3_prefix}"
dest_prefix="${params.destination_s3_prefix}"
region="${region}"
ch="${ch}"
aws_account="${aws_account}"
# Run ECS task
echo "---- Run ECS task ----"
task_id=$(aws ecs run-task \
--cluster cluster-\${ch}-\${dest_env} \
--task-definition \$td_id \
--region \${region} \
--overrides {\\\"containerOverrides\\\": [{\\\"name\\\": \\\"s3-sync\\\", \\\"environment\\\": [{\\\"name\\\": \\\"SRC_ENV\\\", \\\"value\\\": \\\"$${src_env}\\\"}, {\\\"name\\\": \\\"DEST_ENV\\\", \\\"value\\\": \\\"$${dest_env}\\\"}, {\\\"name\\\": \\\"SRC_PREFIX\\\", \\\"value\\\": \\\"$${src_prefix}\\\"}, {\\\"name\\\": \\\"DEST_PREFIX\\\", \\\"value\\\": \\\"$${dest_prefix}\\\"}]}], \\\"taskRoleArn\\\": \\\"arn:aws:iam::$${aws_account}:role/$${ch}-$${dest_env}\\\"} \
--query 'tasks[0].taskArn' \
--output text | cut -d'/' -f 2) …Run Code Online (Sandbox Code Playgroud) 想知道 Jenkins 中是否存在诸如唯一作业/管道 ID 之类的东西,在创建作业时生成一次,只有读取访问权限,因此此 ID 可以唯一标识作业以进行身份验证。
提前致谢,
胡安
由于我将我的应用程序迁移到 androidx,因此当我启动任务组合时,Jenkins 出现错误。这是错误:
Program type already present:
android.support.v4.app.INotificationSideChannel$Stub$Proxy
Run Code Online (Sandbox Code Playgroud)
但是我在 Android Studio 上没有这个错误,我可以毫无问题地构建 apk。
因此,我尝试从 google play 服务中排除 support-v4 模块:
implementation( "com.google.android.gms:play-services-maps:16.0.0"){
exclude module: 'support-v4'
}
implementation ("com.google.android.gms:play-services-location:16.0.0"){
exclude module: 'support-v4'
}
implementation ("com.google.android.gms:play-services-places:16.0.0"){
exclude module: 'support-v4'
}
Run Code Online (Sandbox Code Playgroud)
然后生成apk,但在启动应用程序时出现此错误:
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArraySet;
at com.google.android.gms.common.api.internal.c.<init>(Unknown Source:45)
at com.google.android.gms.common.api.internal.c.a(Unknown Source:33)
at com.google.android.gms.common.api.e.<init>(Unknown Source:51)
at com.google.android.gms.common.api.e.<init>(Unknown Source:13)
at com.google.android.gms.location.b.<init>(Unknown Source:8)
at com.google.android.gms.location.f.a(Unknown Source:2)
Run Code Online (Sandbox Code Playgroud)
但是再一次,在 Android Studio 上一切正常,自从迁移到 Androidx 以来,问题只出现在 Jenkins 上。
谢谢你的帮助
所以从我的本地机器我可以做到这一点:
. env_vars.env
Run Code Online (Sandbox Code Playgroud)
它工作正常:
猫 env_vars.env
#!/bin/bash
export abce=def
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在 makefile 中反映相同时,它不返回任何内容:
SHELL=/bin/bash
print-env-vars:
. env_vars.env
echo ${abce}
Run Code Online (Sandbox Code Playgroud)
我还尝试在 makefile 中使用 source env_vars.env 但输出仍然相同。想知道如何在 makefile 中获取变量。
我尝试从 Jenkins 推送到一个私有的 dockerhub 存储库,但我猜我总是因为授权而出错。
这是相关的 Jenkins 管道:
pipeline {
agent {
// run this pipeline inside an docker image with node 8 and git installed
docker {
image 'node/8-alpine'
registryUrl 'https://registry.hub.docker.com'
registryCredentialsId 'dockerhub' // the id of username/password credentials I have in Jenkins
}
}
environment {
registry = '<my-org>/<my-project>'
tag_beta = "${currentBuild.displayName}-${env.BRANCH_NAME}"
}
stages {
stage("Docker") {
steps {
script {
// NPM_TOKEN was set as environment variable inside Jenkins
def image = docker.build("${env.registry}:${env.tag-beta}", "-e NPM_TOKEN=${env.NPM_TOKEN}")
/* Push …Run Code Online (Sandbox Code Playgroud) 我可能会迟到 CI/CD 聚会,但迟到总比不到好。到目前为止,我能够在不包含 XCode 的单独 MAC 上设置 Jenkins。我将此 MAC 用作 24x7 小型服务器以进行小型操作。很多时间都浪费在存档然后上传到我的 iOS 应用程序的 testflight 上,所以我想设置一个 CI/CD 过程。
在 Jenkins 设置之后,我能够为指定的目标(发布/调试)生成 .ipa 文件。
现在我想将此 .ipa 文件上传到 Testflight。这是我已经知道的:
所以基本上,我觉得 Jenkins 本身无法将 iOS 构建分发到 testflight,除非我们使用需要安装 XCode 的 ALTool。是否有一种解决方法可以完全通过詹金斯来完成?