我正在考虑在Jenkins中将并发构建的数量限制为特定的数量,利用多分支管道工作流程,但在docs或google中找不到任何好的方法.
有些文档说这可以在stage
Jenkins文件的步骤中使用并发来完成,但我也在其他地方读过,这是一种不赞成使用它的方式.
看起来最近发布了一些用于限制并发性的东西,Job Properties
但我找不到它的文档,而且我在跟踪代码时遇到了麻烦.我发现PR的唯一一件事就是:
properties([concurrentBuilds(false)])
但是我无法让它正常工作.
有没有人知道或有一个很好的例子来说明如何限制给定的多分支项目的并发构建数量?也许是一个Jenkinsfile片段,展示了如何限制或限制多分支并发构建的数量?
我正在考虑在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
变量打开和关闭块?如果无法做到这一点,是否有解决方法?
我刚刚开始使用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) 我正在尝试编写一个登录到网站的节点功能,并且无法使其正常工作.我试图等待页面加载使用该帖子中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
.这里发生了什么,我错过了什么?
我有以下时间序列条目。
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
功能,但无法弄清楚如何使其工作以组合/聚合标签。
我正在寻找一种将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编写某些东西。
我试图运行一个条件来基本上查看对象是否为空,但我不断收到此错误(类似的变体):
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) 这是我上周问到的一个跟进问题,发布在这里.我已经超越了原始问题,但现在我遇到了一个稍微不同的问题.
我现在能够获得我感兴趣的项目的属性,如果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) 我想做的是检查一个卷是否包含某个标签,即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
标签,但它错误地计算了要匹配的标签数量,加上它真的很慢.
如何查看单个标签以查看它是否符合我要查找的标准?
我是 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) 我的问题与此类似,关于如何加载外部 groovy 脚本,然后在不同的 groovy 脚本中调用其中的方法。到目前为止,我已经能够获得不返回值的方法,但我在将返回值获取到被调用的变量中时遇到问题。
例如,以下管道代码可以工作,但在我运行 Jenkins 管道时给出了null
for值。$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) 我在资源块中有以下代码片段,
...
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
但我想简化配置以仅使用单个映射。这可能吗?
groovy ×2
jenkins ×2
node.js ×2
selenium ×2
terraform ×2
amazon-ec2 ×1
amazon-s3 ×1
api ×1
boto ×1
concurrency ×1
github-api ×1
go ×1
html ×1
html-parsing ×1
if-statement ×1
javascript ×1
nerdtree ×1
powershell ×1
prometheus ×1
promql ×1
python ×1
vim ×1
vim-plugin ×1
xpath ×1