小编eek*_*nky的帖子

mkdir -p over SSH bash

我有一个小的测试脚本如下;

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)

但是在远程服务器上,没有目录?

ssh mkdir

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

Jenkins管道选择特定分支

我有一个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)

linux git jenkins-pipeline

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

Jenkinfile 当 env.JOB_NAME 的条件

我有一个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条件来运行阶段吗?

linux jenkins-pipeline

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

有没有办法列出 AWS Iam 用户属性

我找不到列出具有以下信息的 IAM 用户的方法:

  • 用户名
  • 关键年龄
  • 密码年龄
  • 上次登录
  • 启用 MFA
  • 最后一次使用
  • 键 活动?

我试过了,aws iam list-users但这并没有告诉我太多。

这可以使用 AWS CLI 吗?如果是这样,如何?

aws-cli

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

为文件中的数组中的每个元素运行命令

我有一个 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)

arrays bash

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

如果键名与“Name”匹配,则使用 jq 提取键值

仅当键名称为 时,我才需要使用 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

select json key aws-cli jq

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

jq 选择或语句

我有以下输入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)

如何获得这两个标签?

jq

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

Jenkins 声明性管道 - params 中的用户变量

我有一个 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)

jenkins-plugins jenkins-pipeline

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

标签 统计

jenkins-pipeline ×3

aws-cli ×2

jq ×2

linux ×2

arrays ×1

bash ×1

git ×1

jenkins-plugins ×1

json ×1

key ×1

mkdir ×1

select ×1

ssh ×1