小编Bak*_*vic的帖子

使用Groovy脚本插件从Jenkins运行Groovy命令

我想在Jenkins中强制执行以下场景:

  1. 我有工作A和工作B.
  2. 我想在执行作业B时禁用作业A,并且在执行作业B之后,我想再次启用作业A.

要启用/禁用作业A,我使用了Groovy插件:Groovy插件

Groovy插件提供了两种可能性:执行Groovy脚本执行系统Groovy脚本.

我在作业B的执行开始时添加了以下代码片段:

Jenkins.instance.getItem("job_A").disable()
Run Code Online (Sandbox Code Playgroud)

并在执行工作B后:

Jenkins.instance.getItem("job_A").enable()
Run Code Online (Sandbox Code Playgroud)

使用Execute Groovy脚本:

当我运行作业B时,它失败并出现以下异常:

Caught: groovy.lang.MissingPropertyException: No such property: Jenkins for class: hudson7198966217090520732
    at hudson7198966217090520732.run(hudson7198966217090520732.groovy:1)
Run Code Online (Sandbox Code Playgroud)

使用Execute系统Groovy脚本:

当我运行作业B时,它失败并出现以下异常:

FATAL: No such property: Jenkins for class: Script1
groovy.lang.MissingPropertyException: No such property: Jenkins for class: Script1
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
    at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231)
    at Script1.run(Script1.groovy:1)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:682)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:666)
    at hudson.plugins.groovy.SystemGroovy.perform(SystemGroovy.java:80)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
    at hudson.model.Build$BuildExecution.build(Build.java:199)
    at hudson.model.Build$BuildExecution.doRun(Build.java:160)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:586)
    at hudson.model.Run.execute(Run.java:1576)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88) …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-plugins

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

如何使用aws ruby​​ SDK为AWS Lambda创建CloudWatch日志触发器?

我知道应该有一种方法可以使用aws ruby​​ sdk为AWS Lambda创建触发器(就像可以使用AWS管理控制台一样).

*更新,我能够找到一种创建触发器的方法.我正在使用以下代码来做到这一点:

@cloudwatchlogs = Aws::CloudWatchLogs::Client.new(region: region, credentials: Aws::Credentials.new(aws_access_key_id, aws_secret_access_key))
@cloudwatchlogs.put_subscription_filter({
   log_group_name: "RDSOSMetrics",
   filter_name: "RDS metrics filter",
   filter_pattern: "RDS metrics filter pattern",
   destination_arn: function_arn
})
Run Code Online (Sandbox Code Playgroud)

我在尝试这样做时遇到以下错误:

*** Aws::CloudWatchLogs::Errors::InvalidParameterException Exception: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function
Run Code Online (Sandbox Code Playgroud)

只是为了测试它,我有角色X附加到Lambda函数,并且该角色添加了AWSLambdaFullAccess策略,但我仍然收到此错误.

我还缺少别人的东西

谢谢,巴基尔

ruby amazon-web-services aws-sdk

9
推荐指数
1
解决办法
3292
查看次数

将文件从HDFS复制到本地计算机

我在尝试从HDFS文件系统"下载"文件到我的本地系统时遇到问题.(即使相反的操作没有问题).*注意:文件存在于指定路径上的HDFS文件系统上

这是一段代码:

    Configuration conf = new Configuration();
    conf.set("fs.defaultFS", "${NAMENODE_URI}");
    FileSystem hdfsFileSystem = FileSystem.get(conf);

    String result = "";

    Path local = new Path("${SOME_LOCAL_PATH}");
    Path hdfs = new Path("${SOME_HDFS_PATH}");

    String fileName = hdfs.getName();

    if (hdfsFileSystem.exists(hdfs))
    {
        hdfsFileSystem.copyToLocalFile(hdfs, local);
        result = "File " + fileName + " copied to local machine on location: " + localPath;
    }
    else
    {
        result = "File " + fileName + " does not exist on HDFS on location: " + localPath;
    }

    return result;
Run Code Online (Sandbox Code Playgroud)

我得到的例外情况如下:

12/07/13 14:57:46 …
Run Code Online (Sandbox Code Playgroud)

java hadoop hdfs

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

在Jenkins中将变量从shell传递到email-ext

我有一个执行shell部分的Jenkins作业,其中我有一些动态填充的变量BUILD.

构建执行后,我想将此变量传递给email-ext插件默认内容,以便能够显示它的值.

我尝试了几种方法却没有成功:

  1. 无法识别在默认内容中传递此$ {BUILD}值(在此上下文中仅显示Jenkins环境变量)
  2. 定义了新的Jenkins全局环境变量,并试图在shell上下文中覆盖它的初始值,这显然是不可能的

有关如何做到这一点的任何想法?

jenkins jenkins-plugins

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

尝试在 AWS Fargate 上安排 Pod 时,Pod 停留在 Pending 状态

我有一个 EKS 集群,我添加了对在混合模式下工作的支持(换句话说,我向它添加了 Fargate 配置文件)。我的目的是只在 AWS Fargate 上运行特定的工作负载,同时为其他类型的工作负载保留 EKS 工作节点。

为了测试这一点,我的 Fargate 配置文件定义为:

  • 仅限于特定的命名空间(比方说:mynamespace
  • 具有特定标签,以便 pod 需要匹配它才能在 Fargate 上进行调度(标签是:fargate: myvalue

为了测试 k8s 资源,我正在尝试部署简单的 nginx 部署,如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: mynamespace
  labels:
    fargate: myvalue
spec:
  selector:
    matchLabels:
      app: nginx
      version: 1.7.9
      fargate: myvalue
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
        version: 1.7.9
        fargate: myvalue
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
Run Code Online (Sandbox Code Playgroud)

当我尝试应用此资源时,我得到以下信息:

$ kubectl get pods -n mynamespace -o …
Run Code Online (Sandbox Code Playgroud)

kubernetes aws-fargate amazon-eks

8
推荐指数
1
解决办法
4436
查看次数

AWS Lambda Layers - Typescript - 在索引处理程序中指定导入时出现问题,因为在层中需要采用 /opt/nodejs/ 形式

我使用 Typescript 编写 AWS Lambda 代码(处理程序和共享代码),然后转换代码,将 node_modules 添加到转换代码所在的目录并发布 Lambda。这工作正常。

\n

现在,如果我想添加共享代码作为 AWS Lambda 层的一部分,这就是 Typescript 变得棘手的地方。\n请考虑我拥有的以下代码结构:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.ts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 userData.ts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package-lock.json\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tsconfig.json\n
Run Code Online (Sandbox Code Playgroud)\n

我想要一个包含以下内容的层:

\n
node_modules\nuserData.ts\n
Run Code Online (Sandbox Code Playgroud)\n

我知道发布图层时需要存在的结构以及如何在index.ts(处理程序方法)代码中引用它。

\n

在层之前,我的 index.ts 代码如下所示:

\n
import { UserData } from "./lib/userData";\n\nexport const handler = async (event: any = {}): Promise<any> => {\n   # some code here\n}\n
Run Code Online (Sandbox Code Playgroud)\n

因为我想从图层导入 UserData,所以导入需要如下所示:

\n
import { UserData } from "./opt/nodejs/userData";\n
Run Code Online (Sandbox Code Playgroud)\n

但是,如果我指定这一点,并尝试转译代码(在创建 aws lambda 包之前),我将收到一个明显的错误:

\n
index.ts:1:26 - error TS2307: Cannot find …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services node.js typescript aws-lambda

7
推荐指数
1
解决办法
2074
查看次数

Kubernetes ALB 入口:如何在入口资源上公开多个端口

我正在尝试为这个看起来很常见的问题找到解决方案。

  1. 我有一个 k8s 集群 ip 服务,它暴露了两个端口:8088 和 60004
  2. 我想在 ALB 上公开这些相同的端口而不使用基于路径的路由

这适用于在 8088 端口上公开一项服务:

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myingress
  namespace: myns
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/healthcheck-path: /ping
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 8088}]'
spec:
  rules:
    - host: myhost
      http:
        paths:
          - path: /*
            backend:
              serviceName: firstservice
              servicePort: 8088
Run Code Online (Sandbox Code Playgroud)

如何使用 ONE Ingress 为两种服务实现相同的目标?

提前致谢。

kubernetes kubernetes-ingress aws-alb

6
推荐指数
1
解决办法
3421
查看次数

Artillery - 如何在 POST 请求中指定嵌套的 json 主体

我正在尝试将 Artillery 配置设置为能够发送嵌套的 JSON 正文。这是我的配置的样子:

config:
  target: <URL>
  phases:
    - duration: 10
      arrivalRate: 20
  processor: "./input-parser.js"
scenarios:
  - flow:
    - function: "parseJsonFile"
    - post:
        url: /workflow-instance
        headers:
           Content-Type: "application/json"
        json:
          name: "{{ name }}"
          namespace: "{{ namespace }}"
          template_name: "{{ template_name }}"
          attributes: "{{ attributes }}"
    - get:
        url: "/workflow-instance/status?name={{ template_name }}&namespace={{ namespace }}"
Run Code Online (Sandbox Code Playgroud)

我对“属性”有疑问,因为属性的内容是:

{ pod_name: 'POD_NAME', port: 'PORT_NUMBER' }
Run Code Online (Sandbox Code Playgroud)

所以基本上,这行不通:

attributes: "{ pod_name: 'POD_NAME', port: 'PORT_NUMBER' }"
Run Code Online (Sandbox Code Playgroud)

还有这个:

attributes:
  pod_name: 'POD_NAME'
  port: 'PORT_NUMBER'
Run Code Online (Sandbox Code Playgroud)

我没有在 Artillery 文档中找到这个特殊案例的好例子。

load-testing artillery

6
推荐指数
1
解决办法
1513
查看次数

在多个上下文之间传递变量的rspec方式

我想知道在 rspec 中的多个上下文(或多个它的)之间传递变量但不使用全局变量的最佳方法是什么?

例如,我有这个:

describe "My test" do
    let(:myvar) { @myvar = 0 }

    context "First test pass" do
        it "passes" do
            myvar = 20
            expect(myvar).to eq(20)
        end
    end

    context "Second test pass" do
        it "passes" do
            expect(myvar).to eq(20)
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

现在,显然,这不适用于 let 因为有了新的上下文,myvar 变量将回到初始状态,即 = 0。我需要在两个上下文之间“缓存状态”的机制,这反过来又会给我 myvar = 的值20 在第二种情况下

欢迎任何意见、建议和改进。谢谢

ruby rspec rspec2

4
推荐指数
2
解决办法
5413
查看次数

第一次失败时停止执行特定的rspec测试(非测试套件)

是否有某种编程方式可以强制rspec测试在首次失败时停止?

例如,

  1. 我有一个包含两个rspec测试的测试套件,我可以一次运行它们。
  2. 每个rspec测试都位于单独的spec.rb文件中

如果这些测试中的任何一个发生故障,我想在失败的特定测试步骤上进一步停止执行该特定测试,但不要停止执行我正在运行的整个测试套件。

我知道有以下几种方法:

RSpec.configure do |c|
  c.fail_fast = true
end
Run Code Online (Sandbox Code Playgroud)

但是在我在测试套件中运行的任何规范文件中定义它会导致套件的所有执行失败。

有什么办法可以处理这种情况?

提前致谢

ruby testing rspec

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

哪种Kubernetes模式适合点对点配置略有不同的点对点场景?

我正在尝试在kubernetes上运行私有恒星区块链基础设施(不加入现有的公共或测试恒星网络),但我的问题可以概括为在kubernetes上运行任何对等服务的场景。因此,我将尝试以一种概括的方式来解释我的问题(希望它可以产生适用于kubernetes上运行的任何类似拓扑的答案)。

这是场景:

我想运行3个对等点(以kube术语表示:pod),它们能够以分散的方式相互通信,但是问题在于每个对等点的配置都略有不同。通常,配置如下所示(这是pod0的示例):

NETWORK_PASSPHRASE="my private network"

NODE_SEED=<pod0_private_key>

KNOWN_PEERS=[
    "stellar-0",
    "stellar-1",
    "stellar-2"]

[QUORUM_SET]
VALIDATORS=[ <pod1_pub_key>, <pod2_pub_key> ]
Run Code Online (Sandbox Code Playgroud)

问题在于每个吊舱都有不同的事实:

  • NODE_SEED
  • 验证者清单

我的第一个想法(在意识到这个问题之前)是:

  • 为此配置创建配置图
  • 使用无头服务创建有状态集(3个副本),以实现吊舱(stellar-0,stellar-1,stellar-2 ...等)之间的稳定可达性。

另一个想法(在意识到此问题之后)将是:

  • 为每个对等方创建单独的配置映射
  • 使用服务创建状态集(1个副本)

我想知道是否有更好的解决方案/模式可用于此目的,而不是运行配置完全相同的服务,而配置与作为单独实体(statefulset,deploy ..)的单独实体略有不同,它们可以通过这些对等实体使用(但是这种破坏了使用kubernetes高级资源来实现复制的目的)?

谢谢

peer kubernetes stellar

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

如何计算每个节点上特定 pod CPU 使用率的百分比?

我在具有 3 个节点的 k8s 集群上有一个 Fluentd 守护进程集。我想获得一个代表百分比的值,它可以让我了解 fluidd pod 目前在每个节点上占用了多少 CPU(以%为单位)。

在普罗米修斯中该怎么做?

谢谢。

kubernetes prometheus promql

0
推荐指数
1
解决办法
8073
查看次数