我正在使用带有嵌套文件夹的CloudBees文件夹插件和用于管理不同管道作业的秘密的Credentials插件.假设我有一个像这样的Jenkins文件夹结构.
folder1/
folder2/
job1
Run Code Online (Sandbox Code Playgroud)
文件夹插件允许我将凭据域和凭据范围限定到文件夹,以便只有这些文件夹中的作业才能访问这些凭据.
我可以通过UI执行此操作,但我们经常轮换这些凭据并希望自动执行部分操作.
我们想到这样做的一种方法是使用Jenkins CLI.
这里的凭证插件提供了各种不同的命令.例如:
list-credentials - 列出特定商店中的凭据
java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials STORE
列出特定商店中的凭据
商店:商店ID
list-credentials-context-resolvers - 列出凭据上下文解析器
java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials-context-resolvers
列出凭据上下文解析器
list-credentials-providers - 列出凭据提供程序
java -jar jenkins-cli.jar -s http:// localhost:8080 / list-credentials-providers
列出凭据提供程序
Jenkins全局范围的存储由我查看源代码确定,它显示了它system::system::jenkins.
如果我运行一些命令,我可以开始提取一些信息:
? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s http://localhost:8080 list-credentials-context-resolvers --username admin --password password
Run Code Online (Sandbox Code Playgroud)
运行以下内容:
? java -jar credential-management/build/jenkinsAutomation/Localhost/cli/jenkins-cli.jar -s …Run Code Online (Sandbox Code Playgroud) 我是Gradle的新手,所以我正在尝试构建一个Java项目并且不确定依赖项.我从来没有让Gradle配置为能够进行我的测试或现在是一个jar文件来编译和运行.
我的build.gradle:
apply plugin: 'java'
apply plugin: 'maven'
repositories {
jcenter()
}
dependencies {
compile 'org.slf4j:slf4j-api:1.7.25'
compile 'org.json:json:20160212'
testCompile 'junit:junit:4.12'
}
Run Code Online (Sandbox Code Playgroud)
这就是我在控制台上得到的声明,它没有看到我的导入:
error: package org.json.simple does not exist
import org.json.simple.JSONParser;
Run Code Online (Sandbox Code Playgroud)
这是我的班级:
import org.json.simple.*;
import java.io.*;
import java.util.*;
import java.lang.*;
public class FileLoader {
@SuppressWarnings("unchecked")
public static void main(String args[]) {
JSONParser parser = new JSONParser();
int count = 0;
try {
Object obj = parser.parse(new FileReader(
"Consumers.json"));
JSONObject jsonObject = (JSONObject) obj;
JSONArray array = jsonObject.getJSONArray("people");
} catch …Run Code Online (Sandbox Code Playgroud) 我正在寻找退出声明性Jenkins管道的最简洁方法,具有成功状态.虽然使用错误步骤退出时出错,但我找不到任何与成功代码一样退出的方法.例如:
stage('Should Continue?') {
when {
expression {skipBuild == true }
}
steps {
echo ("Skiped Build")
setBuildStatus("Build complete", "SUCCESS");
// here how can I abort with sucess code?
// Error Would have been:
// error("Error Message")
}
}
stage('Build') {
steps {
echo "my build..."
}
}
Run Code Online (Sandbox Code Playgroud)
对于带脚本化构建的示例,我可以使用以下代码实现它:
if (shouldSkip == true) {
echo ("'ci skip' spotted in all git commits. Aborting.")
currentBuild.result = 'SUCCESS'
return
}
Run Code Online (Sandbox Code Playgroud)
虽然我知道能够在我的声明性pipieline中添加脚本步骤,但我希望找到一种更清洁的方式.
另一种方法可能是抛出错误并将其捕获到某个地方,但同样又非常混乱.
有更干净的方式吗?
我正在尝试将docker-compose环境变量用于由设置的图像名称,Jenkinsfile但是它不起作用。
我有一个Jenkinsfile包含
node() {
stage('Checkout') {
cleanWs()
git credentialsId: 'xxx', url: 'ssh://git@...'
}
stage('Build') {
withMaven(maven: 'maven-3.5.3') {
sh 'mvn clean package'
def pom = readMavenPom file:'pom.xml'
JAR_FILE = pom.artifactId + "-" + pom.version + ".jar"
JAR_VERSION = pom.version
}
}
stage('Build Docker Image') {
echo "Docker Build ..."
docker.withTool('docker') {
app = docker.build("microservices/my-service:${JAR_VERSION}","--build-arg JAR_FILE=${JAR_FILE} .")
}
}
stage('Running Docker Container') {
echo "Docker Run ..."
withEnv(['VERSION=1.0.0']) {
docker.withTool('docker') {
sh "docker-compose rm -f …Run Code Online (Sandbox Code Playgroud) 我正在使用Gradle 1.9(下面的额外详细信息)来构建一个将在Jetty 9(jetty-9.0.5.v20130815)上运行的WAR.
它配置为web.xml-
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
...
Run Code Online (Sandbox Code Playgroud)
build.gradle有这种依赖 -
repositories {
mavenCentral()
}
dependencies {
providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
compile 'org.springframework:spring-webmvc:3.2.2.RELEASE'
compile 'javax.mail:mail:1.4.7'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
compile 'org.apache.directory.studio:org.apache.commons.io:2.4'
compile 'commons-net:commons-net:3.3'
compile 'mysql:mysql-connector-java:5.1.26'
compile 'org.springframework:spring-jdbc:3.2.4.RELEASE'
compile 'commons-fileupload:commons-fileupload:1.3'
compile 'commons-pool:commons-pool:1.6'
compile 'commons-dbcp:commons-dbcp:1.4'
compile 'log4j:log4j:1.2.17'
compile 'org.slf4j:slf4j-api:1.7.5'
compile 'org.slf4j:slf4j-log4j12:1.7.5'
runtime 'javax.servlet:jstl:1.1.2'
}
Run Code Online (Sandbox Code Playgroud)
building using使用in gradle clean war生成一个WAR文件.servlet-api-2.5.jarWEB-INF/lib/
更多环境细节 -
Build time: 2013-11-19 08:20:02 UTC
Build number: none
Revision: 7970ec3503b4f5767ee1c1c69f8b4186c4763e3d
Groovy: 1.8.6
Ant: Apache Ant(TM) version …Run Code Online (Sandbox Code Playgroud) 我现在正在测试 Postgresql 9.4 beta2。我想知道是否可以在嵌入式 json 对象上创建唯一索引?
我创建了一个表名products:
CREATE TABLE products (oid serial primary key, data jsonb)
Run Code Online (Sandbox Code Playgroud)
现在,我尝试将 json 对象插入到数据列中。
{
"id": "12345",
"bags": [
{
"sku": "abc123",
"price": 0,
},
{
"sku": "abc123",
"price": 0,
}
]
}
Run Code Online (Sandbox Code Playgroud)
但是,我希望sku包包独一无二。这意味着 json 不能插入到 products 表中,因为sku在这种情况下它不是唯一的。
我试图创建一个像下面这样的唯一索引,但它失败了。
CREATE UNIQUE INDEX product_sku_index ON products( (data->'bags'->'sku') )
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我正在大量使用Dynamo DB来处理我正在构建的服务.出现了需要云搜索的新客户端请求.我看到可以通过AWS控制台从发电机表创建云搜索域.
我的问题是:
有没有办法通过API或指定的时间间隔自动将数据从发电机表卸载到云搜索域?
我更喜欢这个手动将dynamo文件卸载到cloudsearch.所有帮助非常感谢!
我无法理解全局二级索引和表之间的区别。
如何UID在詹金斯管道作业中访问变量?
我null什么时候做的:
pipeline {
agent any
environment {
def userId = "${env.UID}";
}
stages {
stage('Print UID') {
steps {
script {
echo "${userId}"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jenkins托管在Ubuntu 16.04上
我想在/src目录中创建一个可以访问 docker 和其他插件步骤的类。
所以我有一个看起来像这样的课程;
class someClassName implements Serializable {
def env
def steps
def docker
someclassName(env, steps, docker){
this.step = step
this.docker = docker
this.env = env
}
def runCommands(String img, List commands){
docker.image(img).inside {
commands.each {
steps.sh it
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在在Jenkinsfile我将有
@Library('name@branch') _
def x = new com.JenkinsLibrary.someClassName(env, steps, docker)
x.runCommands('maven:latest', ['mvn clean', 'mvn test'])
Run Code Online (Sandbox Code Playgroud)
我不喜欢的是我如何为每个对象创建一个构造函数,以便我可以调用属于该对象的方法。有没有更好的对象可以用于我的构造函数,而不必使用 env、steps、docker 等?
此外,steps 对象下有哪些管道步骤可用?环境一样吗?
jenkins ×4
gradle ×2
build.gradle ×1
dependencies ×1
docker ×1
indexing ×1
java ×1
jenkins-declarative-pipeline ×1
jetty ×1
json ×1
json-simple ×1
junit ×1
postgresql ×1
ubuntu-16.04 ×1
unique-index ×1
war ×1