257

私は次のようなことができるようになりたいです:

AOEU=$(echo aoeu)

Jenkinsを設定しAOEU=aoeuます。

Jenkinsの環境変数セクションはそれを行いません。代わりに、を設定しますAOEU='$(echo aoeu)'

Jenkinsにシェルコマンドを評価させ、出力を環境変数に割り当てるにはどうすればよいですか?

最終的には、ジョブのエグゼキュータを、他のスクリプトに渡したり、他のスクリプトで使用したりできる環境変数に割り当てられるようにしたいと考えています。

4

15 に答える 15

231

これは、次の方法でEnvInjectプラグインを介して実行できます。

  1. 以下を実行する「シェルの実行」ビルドステップを作成します。

    echo AOEU=$(echo aoeu) > propsfile
    
  2. インジェクト環境変数ビルドステップを作成し、「プロパティファイルパス」をに設定しますpropsfile

:このプラグインは(ほとんど)Pipelineプラグインと互換性がありません。

于 2012-05-16T20:28:09.473 に答える
119

最も簡単な方法

EnvInjectプラグインを使用して、ビルドの起動時に環境変数を挿入できます。例えば:

「ビルド環境」->「ビルドプロセスへの環境変数の挿入」->「プロパティコンテンツ」の下にkey=value(bash OK!)を追加します。

それが機能していることをどのように知っていますか

EnvInject-変数が正常に注入されました

于 2015-06-18T23:07:14.390 に答える
66

私の場合、スクリプト内のローカルビルド環境(WindowsおよびMac)に干渉しないように、Jenkinsサーバー(Linux)上のすべてのプロジェクトでAntビルドスクリプトを介して使用できるように環境変数を追加する必要がJMETER_HOMEありました。build.xml[Jenkinsの管理]-[システムの構成]-[グローバルプロパティ]を使用して環境変数を設定するのが、これを実現するための最も簡単で邪魔にならない方法でした。プラグインは必要ありません。

Jenkinsグローバルプロパティを管理する


その後、環境変数は次の方法でAntで使用できます。

<property environment="env" />
<property name="jmeter.home" value="${env.JMETER_HOME}" />

これは、以下を追加することで機能することを確認できます。

<echo message="JMeter Home: ${jmeter.home}"/>

生成するもの:

JMeterホーム:〜/ .jmeter

于 2016-08-17T18:52:34.887 に答える
28

私の場合、次のオプションを使用して環境変数を構成しましたが、機能しました-

Manage Jenkins -> Configure System -> Global Properties -> Environment Variables -> Add
于 2019-02-21T13:04:54.587 に答える
23

あなたはこのようなことを試すことができます

stages {
        stage('Build') {
            environment { 
                    AOEU= sh (returnStdout: true, script: 'echo aoeu').trim()
                }
            steps {
                sh 'env'
                sh 'echo $AOEU'
            }
        }
    }
于 2017-07-24T20:37:38.030 に答える
22

Environment Injectorプラグインを使用して、Jenkinsの環境変数をジョブおよびノー​​ドレベルで設定できます。以下に、ジョブレベルでそれらを設定する方法を示します。

  1. Jenkins WebインターフェイスからManage Jenkins > Manage Plugins、プラグインに移動してインストールします。

環境インジェクタープラグイン

  1. 仕事のConfigure画面に移動します
  2. セクションで検索Add build stepして選択しますBuildInject environment variables
  3. 目的の環境変数をVARIABLE_NAME=VALUEパターンとして設定します。私の場合、USERPROFILE変数の値を変更しました

ここに画像の説明を入力してください

いくつかの条件(ジョブパラメータなど)に応じて新しい環境変数を定義する必要がある場合は、この回答を参照できます。

于 2017-11-21T10:32:03.387 に答える
15

EnvInjectプラグイン別名(Environment Injector Plugin)は、Jenkins構成から環境変数を設定するためのいくつかのオプションを提供します。

選択すると、次のInject environment variables to the build processようになります。

  • Properties File Path
  • Properties Content
  • Script File Path

  • Script Content

  • そして最後にEvaluated Groovy script


Evaluated Groovy script実行したコマンドの結果に基づいて環境変数を設定する可能性があります。

  • 方法でexecute
    return [HOSTNAME_SHELL: 'hostname'.execute().text, 
        DATE_SHELL: 'date'.execute().text,
        ECHO_SHELL: 'echo hello world!'.execute().text
    ]
  • または明示的なGroovyコードで:
    return [HOSTNAME_GROOVY: java.net.InetAddress.getLocalHost().getHostName(),
        DATE_GROOVY: new Date()
    ] 

(各メソッドの詳細については、組み込みのヘルプ(?)を参照してください)


Script Content残念ながら、次のように記載されているとおりに行うことはできません。

フォルダの作成やファイルのコピーなどの環境設定を目的としたスクリプトファイルを実行します。スクリプトファイルの内容を提供します。上記のプロパティ変数を使用できます。 ただし、スクリプトで環境変数を追加またはオーバーライドしても、ビルドジョブには影響しません

于 2016-05-14T06:59:52.707 に答える
13

新しいビルド環境変数を追加できるBuildEnvPropagatorプラグインがあります。

Jenkinsビルド-ビルド環境変数を伝達する

後続のPropagateビルド環境変数ステップは、以前に定義された環境変数値をオーバーライドします。

于 2016-07-09T21:09:36.603 に答える
7

通常、環境変数は、システムの構成のグローバルプロパティで構成できます。

ただし、シェル置換を使用する動的変数の場合は、Jenkins HOMEディレクトリにスクリプトファイルを作成し、ビルド中に実行することをお勧めします。SSHアクセスが必要です。例えば。

  1. Jenkinsとしてログイン:sudo su - jenkinsまたはsudo su - jenkins -s /bin/bash
  2. シェルスクリプトを作成します。例:

    echo 'export VM_NAME="$JOB_NAME"' > ~/load_env.sh
    echo "export AOEU=$(echo aoeu)" >> ~/load_env.sh
    chmod 750 ~/load_env.sh
    
  3. Jenkinsビルド(シェルの実行)で、スクリプトとその変数を他の何よりも先に呼び出します。

    source ~/load_env.sh
    
于 2016-07-09T22:07:09.383 に答える
7

これは、環境変数を保存してアクセスするためのスニペットです。

node {
   withEnv(["ENABLE_TESTS=true", "DISABLE_SQL=false"]) {
      stage('Select Jenkinsfile') {
          echo "Enable test?: ${env.DEVOPS_SKIP_TESTS}
          customStep script: this
      }
   }
}

注:環境変数の値は文字列として提供されます。ブール値として使用する場合は、Boolean.parse(env.DISABLE_SQL)を使用して解析する必要があります。

于 2019-05-31T15:49:08.210 に答える
4

EnvInjectに非常によく似た環境スクリプトプラグインGitHub )を試してください。これにより、ビルドの前(SCMチェックアウト後)にスクリプトを実行して、そのスクリプトの環境変数を生成できます。例えば

Jenkinsビルド-通常のジョブ-ビルド環境

スクリプトでは、たとえばFOO=bar標準出力に出力して、その変数を設定できます。

PATH既存のスタイルの変数に追加する例:

echo PATH+unique_identifier=/usr/local/bin

したがって、スクリプトで必要なことは何でも自由に実行できます。catファイルにするか、プロジェクトのソースツリーから他の言語でスクリプトを実行するかなどです。

于 2018-02-08T01:18:57.503 に答える
2

何らかの理由でユーザーsudo su - jenkinsにログが記録されないため、別のアプローチを使用することになりました。jenkins

外部プラグインを使用せずに、(Linux / RHELにインストールされている)jenkinsを使用してグローバル環境変数を設定することに成功しましたconfig.xml/var/lib/jenkins/config.xml

jenkinsの追加を停止してから追加してからglobalNodeProperties再起動するだけで済みました。

例、私は変数を定義しています、APPLICATION_ENVIRONMENTそして以下に、SPRING_PROFILES_ACTIVEcontinious_integration

<?xml version='1.0' encoding='UTF-8'?>
<hudson>

  <globalNodeProperties>
    <hudson.slaves.EnvironmentVariablesNodeProperty>
      <envVars serialization="custom">
        <unserializable-parents/>
        <tree-map>
          <default>
            <comparator class="hudson.util.CaseInsensitiveComparator"/>
          </default>
          <int>2</int>
          <string>APPLICATION_ENVIRONMENT</string>
          <string>continious_integration</string>
          <string>SPRING_PROFILES_ACTIVE</string>
          <string>continious_integration</string>
        </tree-map>
      </envVars>
    </hudson.slaves.EnvironmentVariablesNodeProperty>
  </globalNodeProperties>
</hudson>
于 2017-05-09T02:22:54.823 に答える
2

@JSixfaceの答えを拡張します:

宣言型パイプラインのすべてのステージ内からアクセスするための環境変数をグローバルに定義するには、ブロック内にセクションを追加します。environmentpipeline

pipeline {                                                                                               
  agent {                                                                                                
    node {                                                                                               
      label 'myAgent'                                                                                   
    }                                                                                                    
  }                                                                                                      
  environment {
    AOEU = "${sh(returnStdout: true, script: 'echo aoeu').trim()}"                
  }                                                                                                      
  stages {
    ...
  }
}                                                                                               
于 2021-10-19T12:30:26.690 に答える
1

以下にリストされている次のいずれかの方法を使用できます。

  1. 環境変数を作成するには、EnvInjectプラグインを使用します。使用法と詳細については、これに従ってくださいhttps://github.com/jenkinsci/envinject-plugin
    1. 以下に移動して追加できます

Jenkinsの管理->システムの構成->グローバルプロパティ->環境変数->追加

ここに画像の説明を入力してください

于 2019-12-08T09:28:31.310 に答える
-3

グルーヴィーなジョブファイルを使用します。

description('')
steps {
    environmentVariables {
        envs(PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: true)
    }
}
于 2018-12-07T18:50:10.053 に答える