小编mdo*_*123的帖子

如何使用Jenkins Pipeline插件启用SCM轮询

这是一个与如何使用Jenkins Workflow插件进行SCM轮询相关的问题.这线程回答如何使用SCM轮询管道中的脚本,一旦 SCM查询的方式,但不涉及如何使 SCM投票.

例如,如果您想使用mulit-branch管道插件使用Jenkinsfile自动创建作业,我不知道在作业中启用"Poll SCM"选项.这使得难以配置按需环境,例如创建从头开始设置作业的docker容器.因为您必须登录Jenkins并转到配置并在容器启动后选择"Poll SCM"选项.Cloudbees提供了一个模板插件来帮助解决这个问题.

但是,Jenkins无法使用免费版本.在Jenkins的免费版本上有没有针对用户的解决方法或解决方案?

jenkins docker jenkins-pipeline

16
推荐指数
2
解决办法
3万
查看次数

如何使用Jenkinsfile在groovy函数中使用环境变量

我正在尝试使用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)

groovy jenkins jenkins-pipeline

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

如何使用docker Registry API v2将映像推送到docker注册表

我正在编写一个docker注册表api包装器,用于从一个私有注册表中提取图像并将它们推送到另一个私有注册表.

首先根据文档我需要拉出清单和图层image:tag.在 Puling An Image之后,我已经成功下载了特定image:tag和清单的所有图层.

下面推的图像,我遵循的步骤:

  1. POST /v2/<name>/blobs/uploads/(获取UUID即Location标题)
  2. HEAD /v2/<name>/blobs/<digest> (检查注册表中是否已存在)
  3. PUT /v2/<name>/blobs/uploads/<uuid>?digest=<digest>(Monolithic Upload)

对我来说不清楚的是:

  1. UUID我推送的每个单独层是唯一的还是对所有层重用的(例如,我是否需要为每个层运行一个新的POST,UUID然后在尝试上传之前获取新的?).
  2. 完成上传部分指示

要使上传被视为完成,客户端必须在上传端点上使用摘要参数提交PUT请求

但是,正如我所提到的,我正在使用单片上传,它使用的是PUT与完成上传部分中显示的相同的请求.所以通过单片上传,我还可以同时完成上传吗?

问题

  1. 当我完成上述所有步骤时,我BLOB_UNKNOWN 在上传摘要时收到错误,例如

    {"errors:"[{"code":"BLOB_UNKNOWN","message":"blob unknown to registry","detail":{"digest":}},...]}

根据文档,在推送清单时会产生此错误,并且清单中的其中一个层未知:

如果注册表未知一个或多个图层,则返回BLOB_UNKNOWN错误.错误响应的详细信息字段将具有标识丢失的blob的摘要字段.每个未知blob都会返回一个错误.响应格式如下:

令我困惑的是

  1. 我正在推送一个摘要(也就是一个层)而不是清单,为什么这个错误会返回?
  2. 我希望blob是未知的,因为我正在将新图像推入注册表

现在我将使用docker客户端,但是我没有在线找到任何包装器示例,看看它是如何被拉出来的.据推测,我错过了一些逻辑或误解了文档,但我不确定我哪里出错了?

docker docker-registry docker-api

12
推荐指数
1
解决办法
516
查看次数

Jenkins管道 - 如何遍历列表

我需要从管道中的文件中读取值.我正在使用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)

groovy jenkins delivery-pipeline jenkins-pipeline

6
推荐指数
2
解决办法
3万
查看次数

如果只有一个阶段失败,为什么Jenkins管道的阶段视图在所有阶段都显示为红色?

我注意到,如果任何管道阶段失败,那么所有先前阶段都会显示为红色。是否可以控制前几个阶段的颜色,使它们变为绿色,而不管下一个阶段是什么?我的最后一个阶段遇到了错误。如果将鼠标悬停在任何先前阶段,它会显示“成功”,但显示为红色。 在此处输入图片说明

jenkins jenkins-pipeline

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

C-fgets()删除用户输入

我正在尝试收集用户输入,但我的"标题"正在逐渐消失.如果我评论"评级"和"年份"的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)

c scanf fgets

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

Prolog :: f(x)递归

我是Prolog的初学者,有两个要求:

  1. f(1) = 1

  2. 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)的值?

recursion arithmetic-expressions prolog instantiation-error

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