小编jmr*_*cha的帖子

如何限制Jenkins并发多分支管道构建?

我正在考虑在Jenkins中将并发构建的数量限制为特定的数量,利用多分支管道工作流程,但在docs或google中找不到任何好的方法.

有些文档说这可以在stageJenkins文件的步骤中使用并发来完成,但我也在其他地方读过,这是一种不赞成使用它的方式.

看起来最近发布了一些用于限制并发性的东西,Job Properties但我找不到它的文档,而且我在跟踪代码时遇到了麻烦.我发现PR的唯一一件事就是:

properties([concurrentBuilds(false)])

但是我无法让它正常工作.

有没有人知道或有一个很好的例子来说明如何限制给定的多分支项目的并发构建数量?也许是一个Jenkinsfile片段,展示了如何限制或限制多分支并发构建的数量?

concurrency groovy jenkins jenkins-pipeline

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

基于环境的Terraform条件块

我正在考虑在Terraform 中使用新的条件基本上打开或关闭配置块取决于evnironment.

这是我想要成为条件的块,例如,我有一个变量可以打开生产.

access_logs {
    bucket = "my-bucket"
    prefix = "${var.environment_name}-alb"
}
Run Code Online (Sandbox Code Playgroud)

我认为我有条件检查环境的逻辑,但我不知道如何将上述配置粘贴到逻辑中.

"${var.environment_name == "production" ? 1 : 0 }"
Run Code Online (Sandbox Code Playgroud)

是否可以access_logs通过environment_name变量打开和关闭块?如果无法做到这一点,是否有解决方法?

if-statement conditional-statements terraform

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

当VIM启动时,NERDtree不是默认窗口?

我刚刚开始使用NERDtree和VIM,并且无法弄清楚如何使NERDtree 在打开时不是默认窗口.

我想在一个窗格中打开NERDTree,在另一个窗格中打开相关文件,但是当它打开时,不是让NERDTree选项卡获得焦点,而是让我按默认焦点编辑文件.

我查看了github项目,但是对于我来说,如何改变它的行为并不明显.其他一切都很完美.

是否有配置指定VIM启动时要关注哪个窗口,或者这是否需要设置NERDtree特定配置?

编辑:

相关.vimrc配置:

" Open Nerdtree automatically
autocmd vimenter * NERDTree
" Close Nerdtree if no files specified
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
" Nerdtree behavior
map <C-n> :NERDTreeToggle<CR>
let NERDTreeHighlightCursorline=1
Run Code Online (Sandbox Code Playgroud)

vim vim-plugin nerdtree

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

TypeError:driver.isElementPresent不是函数

我正在尝试编写一个登录到网站的节点功能,并且无法使其正常工作.我试图等待页面加载使用该帖子中isElementPresent引用的函数,但它似乎没有工作.

这是我到目前为止所拥有的:

const webdriver = require('selenium-webdriver')
const By = webdriver.By

var username = ''
var password = ''
var timeout = 5000

function FacebookLogin(username, password) {

    var driver = new webdriver.Builder()
        .withCapabilities(webdriver.Capabilities.chrome())
        .build()

    driver.get('http://www.facebook.com')

    driver.wait(function() {
        return driver.isElementPresent(By.id('email'))
    }, timeout)

    var user = driver.findElement(By.id('email'))
    user.sendKeys(username)

    var pass = driver.findElement(By.id('pass'))
    pass.sendKeys(password)

    pass.submit()
    driver.sleep(5000)
    driver.quit()
}

FacebookLogin(username, password)
Run Code Online (Sandbox Code Playgroud)

当我运行该功能虽然我收到错误TypeError: driver.isElementPresent is not a function.这里发生了什么,我错过了什么?

javascript selenium node.js

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

如何在 Prometheus 查询中组合单独的时间序列标签?

我有以下时间序列条目。

ifDescr{ifDescr="GigabitEthernet1/1",ifIndex="1",instance="x.x.x.x",job="snmp"} 1
ifDescr{ifDescr="GigabitEthernet1/2",ifIndex="2",instance="x.x.x.x",job="snmp"} 1
ifDescr{ifDescr="GigabitEthernet5/3",ifIndex="3",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="1",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="2",instance="x.x.x.x",job="snmp"}
ifHCInOctets{ifIndex="2",instance="x.x.x.x",job="snmp"}
Run Code Online (Sandbox Code Playgroud)

照原样,我无法判断哪个索引与哪个描述匹配,这让事情变得混乱。

有没有办法基本上将上述标签ifIndex与 ifDesc 标签关联起来?或者该工作可用于将两个时间序列联系在一起?

我已经查看了该group_left功能,但无法弄清楚如何使其工作以组合/聚合标签。

prometheus promql

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

将数百万个文件从S3复制到GCS的最佳方法?

我正在寻找一种将S3存储桶中的大量文件(超过1000万个)移至Google Cloud Storage的方法,但到目前为止仍然存在问题。

目前,我正在使用gsutil,因为它对S3和GCS之间的通信提供了本机支持,但是我获得的性能却不尽人意。也许我只是在做错事,但我一直在使用以下gsutil命令:

gsutil -m cp -R s3://bucket gs://bucket
Run Code Online (Sandbox Code Playgroud)

我启动了一个c3.2xlarge AWS实例(16GB 8CPU),以便可以拥有足够的功率,但是看来该包装箱的吞吐能力没有2GB 2CPU包装箱好,我不明白吗?

我一直在搞弄~/.boto配置文件,目前设置了以下选项:

parallel_process_count = 8
parallel_thread_count = 100
Run Code Online (Sandbox Code Playgroud)

我认为可以肯定的是,将线程数增加10倍会有所帮助,但是到目前为止,从我的测试来看,这并没有什么改变。还有什么可以做来提高性能的吗?

还是有更好的工具将S3数据移至GCS?我正在看SDK,并且半心想用Java编写某些东西。

amazon-s3 cloud-storage google-cloud-storage

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

类型 *string 和 string 不匹配

我试图运行一个条件来基本上查看对象是否为空,但我不断收到此错误(类似的变体):

invalid operation: release.Name == "" (mismatched types *string and string)
Run Code Online (Sandbox Code Playgroud)

这是即将消亡的代码:

import (
    "github.com/google/go-github/github"
)

func TestLatestTag(user, project string) {

    var client *github.Client
    client = github.NewClient(nil)

    releases, _, err := client.Repositories.ListTags(user, project, nil)
    var release github.RepositoryTag

    if err != nil {
        fmt.Println("Error")
    } else {
        if release.Name == "" {
            fmt.Println("None")
        } else {
            fmt.Println(releases[0])
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我将 if 语句更改为*release.Name == ""错误所暗示的那样,我会得到一个不同的错误,我不太明白:

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 …
Run Code Online (Sandbox Code Playgroud)

api go github-api

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

使用powershell和xpath解析html

这是我上周问到的一个跟进问题,发布在这里.我已经超越了原始问题,但现在我遇到了一个稍微不同的问题.

我现在能够获得我感兴趣的项目的属性,如果html标签没有使用GetAttributeValue方法嵌套,这里它是data-pid但我现在无法抓取项目的属性在嵌套标签中,在我的代码片段中,它是日期.我使用xpath和HtmlAgility包来解析这里的html,但在下面的例子中,相同的日期会一遍又一遍地返回.

这是$ item对象的样子:

Attributes           : {class, data-pid}
ChildNodes           : {#text, a, #text, span...}
Closed               : True
ClosingAttributes    : {}
FirstChild           : HtmlAgilityPack.HtmlTextNode
HasAttributes        : True
HasChildNodes        : True
HasClosingAttributes : False
Id                   : 
InnerHtml            :  <a href="/mod/4175126893.html" class="i"><span class="price">$20</span></a> <span class="star"></span> <span class="pl"> <span class="date">Nov 
                       30</span>  <a href="/mod/4175126893.html">Unlock Any GSM Cell Phone Today!</a> </span> <span class="l2"> <span class="price">$20</span>  <span 
                       class="pnr"> <small> (Des Moines)</small> <span class="px"> <span class="p"> </span></span> </span>  <a class="gc" href="/mod/" 
                       data-cat="mod">cell …
Run Code Online (Sandbox Code Playgroud)

html powershell xpath html-parsing html-agility-pack

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

如何将AWS中给定卷的特定标记与boto匹配?

我想做的是检查一个卷是否包含某个标签,即is_managed.如果卷具有标记,请跳过它,否则将标记添加到卷.

volumes = conn.get_all_volumes()
tags = conn.get_all_tags()

for volume in volumes:
  for tag in tags:
    if tag.name.startswith('is_managed'):
      pass
    else:
      volume.add_tag('is_managed', True)
Run Code Online (Sandbox Code Playgroud)

此代码有效(有点),但它会迭代所有标记,即使它们与我正在搜索的条件不匹配.所以它最终添加了is_managed标签,但它错误地计算了要匹配的标签数量,加上它真的很慢.

如何查看单个标签以查看它是否符合我要查找的标准?

python amazon-ec2 boto amazon-web-services

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

WebdriverJS ElementNotVisibleError:元素不可见

我是 Selenium 的新手,我想我只是不明白代码和浏览器中发生了什么。我可以通过用 a 替换 driver.wait 代码(在下面发布)来解决我的问题,driver.sleep(1000)但我一直在读到 sleep 语句并不理想。

有人可以帮我弄清楚为什么我的代码不起作用以及到底发生了什么?如果有帮助,我可以提供完整的堆栈跟踪。

下面是代码的样子。

const webdriver = require('selenium-webdriver')
const chrome = require("selenium-webdriver/chrome");
const By = webdriver.By
const until = webdriver.until

var username = "XXX"
var password = "XXX"

function login(username, password) {    
    // This part works fine
    driver.wait(until.elementLocated(By.id('Email')))
    driver.findElement(By.id('Email')).sendKeys(username)
    driver.findElement(By.id('next')).click()

    // Here is where the element not visible happens
    driver.wait(until.elementLocated(By.id('Passwd')), 5000)
    // driver.sleep(1000) works but I'm not sure why?
    driver.findElement(By.id('Passwd')).sendKeys(password)

    // Login
    driver.findElement(By.id('signIn')).click()
}

var driver = new webdriver.Builder()
        .withCapabilities({'browserName': 'chrome'}).build() …
Run Code Online (Sandbox Code Playgroud)

selenium node.js selenium-webdriver

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

Jenkins Pipeline 外部脚本返回空值

我的问题与此类似,关于如何加载外部 groovy 脚本,然后在不同的 groovy 脚本中调用其中的方法。到目前为止,我已经能够获得不返回值的方法,但我在将返回值获取到被调用的变量中时遇到问题。

例如,以下管道代码可以工作,但在我运行 Jenkins 管道时给出了nullfor值。$build_user它实际上并没有返回我期望的结果,我也不知道为什么。

node {
    stage('test') {
        def tools = load "/var/lib/jenkins/workflow-libs/vars/tools.groovy"
        build_user = tools.get_user()
        echo "build_user: $build_user"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是相关内容tools.groovy的样子。

def exampleMethod() {
    // Do stuff
}

// Try to get a build username
def get_user() {

    try {
        wrap([$class: 'BuildUser']) {
            // Set up our variables
            fallback_user = 'GitHub'
            github_user = BUILD_USER
            commit_author = 'Test1'

            // Try to use Jenkins build user first
            if (github_user) { …
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-pipeline

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

迭代 Terraform 动态块内的单个地图

我在资源块中有以下代码片段,

...
condition {
    dynamic "http_header" {
      for_each = var.http_headers
      content {
        http_header_name  = http_header.value.header_name[0]
        values            = [http_header.value.values[0]]
      }
    }
}
...
Run Code Online (Sandbox Code Playgroud)

变量当前设置为:

variable "http_headers" {
  type = map
  default = {}
}
Run Code Online (Sandbox Code Playgroud)

我想提供一个地图并让 Terraform 在内容块内设置它们的值,例如

http_headers =  {
    header_name = "foo"
    values      = "bar"
}
Run Code Online (Sandbox Code Playgroud)

我认为根据我迄今为止所做的阅读,这会起作用,但我收到类似于以下内容的错误。

Error: Unsupported attribute

  on .terraform/main.tf line 138, in resource "aws_alb_listener_rule" "listener_rule":
 138:         values            = [http_header.value.values[0]]
    |----------------
    | http_header.value is "foo"

This value does not have any attributes.

Run Code Online (Sandbox Code Playgroud)

FWIW,如果我将变量包装在列表中并对其进行迭代,我就能够实现此工作,http_headers但我想简化配置以仅使用单个映射。这可能吗?

terraform terraform-provider-aws terraform0.12+

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