小编Sam*_*ARD的帖子

Jenkins:从队列中的项目中获取作业名称(通过 API)

我似乎无法通过 API 找到队列中某个项目的作业名称。我错过了什么(明显的)?

我创建了两个虚拟作业,它们需要一台名为“build1”的离线机器。

当我访问http://JENKINS_URL:8080/queue/api/json我得到这个:

{
  "_class": "hudson.model.Queue",
  "discoverableItems": [],
  "items": [
    {
      "_class": "hudson.model.Queue$BuildableItem",
      "actions": [
        {}
      ],
      "blocked": false,
      "buildable": true,
      "id": 262,
      "inQueueSince": 1529331225093,
      "params": "",
      "stuck": true,
      "task": {
        "_class": "org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask"
      },
      "url": "queue/item/262/",
      "why": "build1 is offline",
      "buildableStartMilliseconds": 1529331225094,
      "pending": false
    },
    {
      "_class": "hudson.model.Queue$BuildableItem",
      "actions": [
        {}
      ],
      "blocked": false,
      "buildable": true,
      "id": 260,
      "inQueueSince": 1529331219128,
      "params": "",
      "stuck": true,
      "task": {
        "_class": "org.jenkinsci.plugins.workflow.support.steps.ExecutorStepExecution$PlaceholderTask"
      },
      "url": "queue/item/260/",
      "why": "build1 is offline",
      "buildableStartMilliseconds": …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-api

6
推荐指数
0
解决办法
1501
查看次数

Jenkins 按标签锁定

我想要实现的目标

  • jobA在一台机器上需要 1 个执行器。
  • 我需要jobB在同一台机器上有 2 个执行器,在 X 台机器上需要 1 个执行器。
  • 我希望他们能够使用相同的机器(尽管不是同时)-> 他们目前使用不同的机器。
  • 他们的所有任务都使用 100% CPU。因此,同一台机器上不能同时存在两个构建。

我如何解决这个问题

  • 因为jobB单个节点上至少需要 2 个执行器,并且jobA需要 1 个,所以我需要将执行器的数量更改为每个节点 2 个。
  • 应该有一个锁定机制,以便如果jobAjobB构建在节点上运行,则任何jobAjobB构建都无法在该节点上启动。

我做了什么

我将机器上的执行器数量从 1 更改为 2。

解决方案一:锁定资源

jobA在的管道中,我有:

node('windows-agent-label') {
    lock("${env.NODE_NAME}-exclusive") {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)

运行该作业(第一次)给了我:

[Pipeline] Start of Pipeline
[Pipeline] node
Running on build1 in J:\jenkins\workspace\jobA
[Pipeline] {
[Pipeline] lock
Trying to acquire lock on [build1-exclusive]
Resource [build1-exclusive] …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-plugins jenkins-pipeline

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

GCE:如何查找附加到实例的所有磁盘?

我想找到连接到实例的所有磁盘。

当我这样做时gcloud compute disks list,我得到了所有这些。大概有一个--filter可以提供帮助,但我在文档中找不到有关这些过滤器的任何有用信息。

除非我对磁盘名称做出假设以获取实例名称(我不想基于任何逻辑),否则我仍在寻找如何获取该名称。

google-compute-engine google-cloud-platform

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