我有一个小的测试脚本如下;
TESTDIR="$HOSTNAME"
ssh user@server.com "\$TESTDIR"
mkdir -p ~/$TESTDIR/test
exit
Run Code Online (Sandbox Code Playgroud)
输出bash -x是;
+ TESTDIR=ndx
+ ssh user@server.com '$TESTDIR'
+ mkdir -p /home/user/ndx/test
+ exit
Run Code Online (Sandbox Code Playgroud)
但是在远程服务器上,没有目录?
我有一个Jenkins管道,我想让用户输入以检查他们选择的特定分支。即,如果我创建一个分支'foo'并提交,我希望能够从菜单上建立该分支。由于有多个用户都在创建分支,因此我希望它位于声明性管道而不是GUI中。在下面显示的这个阶段,我希望用户输入在詹金斯(Jenkins)对git进行轮询以找出可用的分支之后检出该分支。这可能吗?
stage('Checkout') {
checkout([$class: 'GitSCM',
branches: [[name: '*/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CloneOption', noTags: true, reference: '', shallow: true]],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: 'secretkeys', url: 'git@github.com:somekindofrepo']]
]);
}
}
Run Code Online (Sandbox Code Playgroud)
我目前有这个,但是还不漂亮。
pipeline {
agent any
stages {
stage("Checkout") {
steps {
checkout([$class: 'GitSCM',
branches: [
[name: '**']
],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'LocalBranch', localBranch: "**"]],
submoduleCfg: [],
userRemoteConfigs: [
[credentialsId: 'repo.notification-sender', url: 'git@github.com:repo/notification-sender.git']
]
])
}
}
stage("Branch To Build") {
steps {
script {
def gitBranches = sh(returnStdout: true, script: …Run Code Online (Sandbox Code Playgroud) 我有一个Jenkinsfile我想基于env.JOB_NAME. 作为测试,我已经这样做了;
#!/usr/bin/env groovy
pipeline {
agent any
stages {
stage('Get ID') {
when {
"${env.JOB_NAME}" == 'Notification Sender (dev)'
}
steps {
echo "${env.JOB_NAME}"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了错误;
WorkflowScript: 6: Expected a when condition @ line 6, column 11.
when {
^
WorkflowScript: 6: Empty when closure, remove the property or add some content. @ line 6, column 11.
when {
^
Run Code Online (Sandbox Code Playgroud)
我可以根据env.JOB_NAME使用when条件来运行阶段吗?
我找不到列出具有以下信息的 IAM 用户的方法:
我试过了,aws iam list-users但这并没有告诉我太多。
这可以使用 AWS CLI 吗?如果是这样,如何?
我有一个 AWS 环境,我需要安全组的 json 配置文件。我想过找到GroupID然后仅使用 ID 创建文件。从这里我想将创建的文件传递到数组中并使用命令;
aws ec2 describe-security-groups --group-ids $<name> > $<name>.json创建n大量的 json 文件。我使用了另一篇文章https://unix.stackexchange.com/questions/70934/bash-reading-txt-file-and-storing-in-array将文件的内容读入数组。我现在需要的是使用上面的命令来创建 json 文件。
我认为它已经完成,[[ ${a[$i-1]} = $name ]] && echo "${a[$i]}"但我不确定,因为我不太了解数组..
#!/bin/bash
# get security-group id's from aws and create a file
aws ec2 describe-security-groups | grep -i groupid | sort -bdu > sg-names-unsorted.txt
# clear leading/trailing text so only sg's remain & cleanup
cat sg-names-unsorted.txt | sed 's/^[ \t]*//;s/[ \t]*$//' > output.txt
cat output.txt | …Run Code Online (Sandbox Code Playgroud) 仅当键名称为 时,我才需要使用 jq 提取键值Name。下面是一个例子。我有一些没有密钥名称的 AMI Name,我想忽略它们。
aws ec2 describe-snapshots --snapshot-id snap-123 --region eu-west-1 --profile myprofile
{
"Snapshots": [
{
"Description": "AMI upgrader",
"Tags": [
{
"Value": "AMI upgrader",
"Key": "Name"
}
],
"Encrypted": false,
"VolumeId": "vol-9356e811",
"State": "completed",
"VolumeSize": 20,
"StartTime": "2018-05-31T13:58:31.000Z",
"Progress": "100%",
"OwnerId": "1234",
"SnapshotId": "snap-1234"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我努力了;
aws ec2 describe-snapshots --snapshot-id snap-123 --region eu-west-1 --profile myprofile | jq -r '.Snapshots[].Tags[]|.Name?.Value'
Run Code Online (Sandbox Code Playgroud)
但它返回null
我有以下输入json:
{
"TagList": [
{
"Key": "Environment",
"Value": "foo"
},
{
"Key": "ENVIRONMENT",
"Value": "bar"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想使用以下方法获取带有键 ENVIRONMENT 的标签值jq:
jq -r '.TagList[] | select(.Key=="ENVIRONMENT") | .Value' input.json
Run Code Online (Sandbox Code Playgroud)
但事实证明,关键也可能是Environment。我尝试使用此命令同时获取:
jq -r '.TagList[] | select((.Key=="ENVIRONMENT") | .Value' or .Key=="Environment" | .Value)
Run Code Online (Sandbox Code Playgroud)
但得到以下错误:
jq: error: syntax error, unexpected $end, expecting ';' or ')' (Unix shell quoting issues?) at <top-level>, line 1:
.TagList[] | select((.Key=="ENVIRONMENT") | .Value
jq: 1 compile error
Run Code Online (Sandbox Code Playgroud)
如何获得这两个标签?
我有一个 Jenkinsfle。我需要从“使用参数构建”插件传递参数,并且还需要在脚本中定义变量。我都无法上班。可能是语法问题?
#!/usr/bin/env groovy
pipeline {
agent any
stages {
stage('Config API (dev)') {
steps {
script {
apiName = "config_API"
taskDefinitionFamily = "mis-core-dev-config"
taskDefinition = "mis-core-dev-config"
if (params.apiName.contains('Stop Task')) {
build(job: 'Stop ECS Task (utility)',
parameters: [
string(name: 'region', value: params.region),
string(name: 'cluster', value: params.cluster),
string(name: 'family', value: params.taskDefinitionFamily)
])
}
else if (params."${apiName}".contains('Start Task')) {
build(job: 'Start ECS Task (utility)',
parameters: [
string(name: 'region', value: params."${region}"),
string(name: 'cluster', value: params."${cluster}"),
string(name: 'taskDefinition', value: params."${taskDefinition}"),
string(name: 'containerInstanceIds', …Run Code Online (Sandbox Code Playgroud)