这是一个与如何使用Jenkins Workflow插件进行SCM轮询相关的问题.这线程回答如何使用SCM轮询管道中的脚本,一旦 SCM查询的方式,但不涉及如何使 SCM投票.
例如,如果您想使用mulit-branch管道插件使用Jenkinsfile自动创建作业,我不知道在作业中启用"Poll SCM"选项.这使得难以配置按需环境,例如创建从头开始设置作业的docker容器.因为您必须登录Jenkins并转到配置并在容器启动后选择"Poll SCM"选项.Cloudbees提供了一个模板插件来帮助解决这个问题.
但是,Jenkins无法使用免费版本.在Jenkins的免费版本上有没有针对用户的解决方法或解决方案?
我正在尝试使用Jenkinsfile中任何节点外部定义的环境变量.我可以将它们放在任何节点中的任何管道步骤的范围内,但不能在函数内部.我现在能想到的唯一解决方案是将它们作为参数传递.但我想直接在函数内部引用env变量,所以我不必传递这么多参数.这是我的代码.如何让函数输出正确的值BRANCH_TEST?
def BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
Run Code Online (Sandbox Code Playgroud)
Jenkins控制台输出:
[Pipeline]
[Pipeline] echo
null
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud) 我正在编写一个docker注册表api包装器,用于从一个私有注册表中提取图像并将它们推送到另一个私有注册表.
首先根据文档我需要拉出清单和图层image:tag.在 Puling An Image之后,我已经成功下载了特定image:tag和清单的所有图层.
下面推的图像,我遵循的步骤:
POST /v2/<name>/blobs/uploads/(获取UUID即Location标题)HEAD /v2/<name>/blobs/<digest> (检查注册表中是否已存在)PUT /v2/<name>/blobs/uploads/<uuid>?digest=<digest>(Monolithic Upload)对我来说不清楚的是:
UUID我推送的每个单独层是唯一的还是对所有层重用的(例如,我是否需要为每个层运行一个新的POST,UUID然后在尝试上传之前获取新的?).要使上传被视为完成,客户端必须在上传端点上使用摘要参数提交PUT请求
但是,正如我所提到的,我正在使用单片上传,它使用的是PUT与完成上传部分中显示的相同的请求.所以通过单片上传,我还可以同时完成上传吗?
问题
当我完成上述所有步骤时,我BLOB_UNKNOWN 在上传摘要时收到错误,例如
{"errors:"[{"code":"BLOB_UNKNOWN","message":"blob unknown to registry","detail":{"digest":}},...]}
根据文档,在推送清单时会产生此错误,并且清单中的其中一个层未知:
如果注册表未知一个或多个图层,则返回BLOB_UNKNOWN错误.错误响应的详细信息字段将具有标识丢失的blob的摘要字段.每个未知blob都会返回一个错误.响应格式如下:
令我困惑的是
现在我将使用docker客户端,但是我没有在线找到任何包装器示例,看看它是如何被拉出来的.据推测,我错过了一些逻辑或误解了文档,但我不确定我哪里出错了?
我需要从管道中的文件中读取值.我正在使用split()将它们放入一个数组中.我需要将它们放入Arraylist中,所以我使用的是Arrays.asList().我遇到的问题是我无法使用size()或length()方法,所以我不能做一个for循环,如
for (ii = 0; ii < var.length; ii++)
Run Code Online (Sandbox Code Playgroud)
要么
for (ii = 0; ii < var.size; ii++)
Run Code Online (Sandbox Code Playgroud)
因为我得到错误:unclassified field java.util.Arrays $ ArrayList length
所以我尝试在每个循环中使用a,但是当我在finally块中执行某些操作(例如ls命令)时,它只迭代1次.但是,如果我只是运行命令'echo',它将按照它应该的方式迭代每个元素.有关如何修改我的代码以使其在使用任何命令时对列表中的每个元素进行迭代的任何建议吗?
工作正常....
node{
wrap([$class: 'ConfigFileBuildWrapper', managedFiles: [[fileId: 'dest_hosts.txt', targetLocation: '', variable: 'DEST_HOST']]]) {
HOST = Arrays.asList(readFile(env.DEST_HOST).split("\\r?\\n"))
deploy(HOST)
}
}
@NonCPS
def deploy(host){
for (String target : host){
try {
echo target
}
finally {
echo target
}
}
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT(为每个元素迭代):
[Pipeline] node
Running …Run Code Online (Sandbox Code Playgroud) 我正在尝试收集用户输入,但我的"标题"正在逐渐消失.如果我评论"评级"和"年份"的fgets,它不会被消灭.我不明白为什么?
另外,使用fgets时我的int输出不正确(参见输出).但如果我使用scanf就是.这是为什么?
MOVIE.C
#include <stdio.h>
#include <stdlib.h>
#include "movie.h"
void print_movie(const movie_t * mvi) {
printf("Title:%s", mvi->title);
printf("Director:%s", mvi->director);
printf("Rating:%c\n", mvi->rating);
printf("Year: %d\n", mvi->year);
}
void get_movie(movie_t * mvi) {
printf("Title:");
fgets(&mvi->title, 50, stdin);
printf("Enter Director Name:");
fgets(&mvi->director, 50, stdin);
printf("Enter Movie Rating:");
fgets(&mvi->rating,5, stdin);
printf("Enter Movie Year:");
fgets(&mvi->year, 5, stdin);
//scanf will output correct year
//scanf("%d",&mvi->year);
}
Run Code Online (Sandbox Code Playgroud)
MOVIE.H
#ifndef MOVIE_H
#define MOVIE_H
#define SIZE_LIMIT 25
#define RATING_SIZE 5
typedef enum {G, PG, PG13, R} rating_t;
typedef struct {
char …Run Code Online (Sandbox Code Playgroud) 我是Prolog的初学者,有两个要求:
f(1) = 1
f(x) = 5x + x^2 + f(x - 1)
规则:
f(1,1).
f(X,Y) :-
Y is 5 * X + X * X + f(X-1,Y).
查询:
f(4,X).
输出:
ERROR: is/2: Arguments are not sufficiently instantiated
如何添加f(X-1)的值?