環境変数を設定してから、Jenkins ScriptedPipelineでスクリプトを実行します

Perplexabot

Jenkins、Groovy、パイプラインは初めてです。私は次のような単純なパイプラインステージを作成しました:

//working build but not setting env variables
node('build-01') {
    stage('Building') {
        echo "[*] Starting build (id: ${env.BUILD_ID}) on ${env.JENKINS_URL}"
        try {
            sh 'ls -l'
            //ls shows the damn file
            sh '. setup-target'
        } catch(all) { 
            sh "echo 'Failed to run setup-target script with error: ' ${all}"
        }
    }    
}

これは機能します。しかし、このスクリプトを実行しているセッションに環境変数を変更/追加したいと思います(このスクリプトは、正しいシバン行が上にあるbashファイルです)。だから私はしました:

node('build-01') {
    withEnv(["CMAKE_INSTALL_DIR=${WORKSPACE}", "SDK_INSTALL_DIR=${WORKSPACE}"]){
        stage('Building') {
            echo "[*] Starting build (id: ${env.BUILD_ID}) on ${env.JENKINS_URL}"
            try {
                sh 'ls -l'
                //ls shows the damn file
                sh '. setup-target'
            } catch(all) { 
                sh "echo 'Failed to run setup-target script with error: ' ${all}"
            }
        }    
    }
}

これは次のエラーでエラーになります:

/home/jenkins-sw/ci/workspace/myWorkSpace@tmp/durable-6d30b48d/script.sh:1行目:。:setup-target:ファイルが見つかりません

そして

セットアップターゲットスクリプトの実行に失敗しました:エラー:hudson.AbortException:スクリプトが終了コード1を返しました

しかし、環境変数が設定されているのでsh 'printenv'ls -l線のすぐ下でこれを確認します。興味深いことにls -l、スクリプトは表示されます。

何が足りないのですか?

更新

以下:

node('build-01') {
    withEnv(["CMAKE_INSTALL_DIR=${WORKSPACE}", "SDK_INSTALL_DIR=${WORKSPACE}"]){
        stage('Building') {
            echo "[*] Starting build (id: ${env.BUILD_ID}) on ${env.JENKINS_URL}"
            try {
                sh 'ls -l'
                //ls shows the damn file
                sh './setup-target'
            } catch(all) { 
                sh "echo 'Failed to run setup-target script with error: ' ${all}"
            }
        }    
    }
}

結果:

/home/jenkins-sw/ci/workspace/myWorkSpace@tmp/durable-6d30b48d/script.sh:1行目:./ setup-target:アクセスが拒否されました

面白い。withEnvは権限にどのように影響しますか?何?!そして、そのファイルをchmodして権限を持たせると、「ワークスペースがありません」に関連する新しいエラーが発生します。

Perplexabot

私はそれを考え出した。ワークスペースに直接クローンを作成してから、ワークスペースも指すように環境変数を設定していました。私はそれらの両方を変更しました。ここで、ワークスペースにdirを作成してクローンを作成し、環境変数をワークスペース内のディレクトリに設定します。そのようです:

node('build-01') {
    withEnv(["CMAKE_INSTALL_DIR=${WORKSPACE}/cmake_install", "SDK_INSTALL_DIR=${WORKSPACE}/sdk"]){
        stage('Building') {
            echo "[*] Starting build (id: ${env.BUILD_ID}) on ${env.JENKINS_URL}"
            try {
                sh 'ls -l'
                //ls shows the damn file
                dir('path/to/checkout/') {
                    sh '. ./setup-target'
                }
            } catch(all) { 
                sh "echo 'Failed to run setup-target script with error: ' ${all}"
            }
        }    
    }
}

これは機能します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JenkinsのGroovyスクリプトから環境変数を設定します

分類Dev

JenkinsのGroovyスクリプトから環境変数を設定します

分類Dev

cmake:スクリプトから環境変数を設定します

分類Dev

forループforリストを使用し、要素を環境変数に設定してから値を取得します

分類Dev

Jenkins-実行スクリプトで環境変数を設定する

分類Dev

バッチから環境変数を設定します

分類Dev

SYSTEMとして実行されているPowershellからユーザー環境変数を設定します

分類Dev

bashスクリプトを介してシステム環境変数を設定しますか?

分類Dev

systemdサービスファイルのshスクリプトから環境変数を設定します

分類Dev

Java関数から環境変数を返し、ビルドを実行するためにJenkinsで同じように設定します

分類Dev

docker stack:シークレットから環境変数を設定します

分類Dev

AWS SAMで!Refを使用して環境変数を設定しますか?

分類Dev

bashコマンドを介してGithubシークレットから環境変数を設定する方法

分類Dev

CLIを使用してheroku環境変数を設定できますか?

分類Dev

このマクロをビルド環境の環境変数として設定しますか?

分類Dev

スクリプトから永続的な環境変数を設定する正しい方法

分類Dev

スクリプトまたは環境変数(Pydev)からEclipse実行構成引数を取得します

分類Dev

「vncserver:HOME環境変数が設定されていません」というエラーを修正する方法-ユーザーに代わってPHPからPythonスクリプトを実行しますか?

分類Dev

TclスクリプトからWindows環境変数を設定する方法

分類Dev

スクリプトから環境変数(PATHなど)を設定する

分類Dev

dockerは、環境変数を使用してCMDでPythonスクリプトを実行します

分類Dev

PythonスクリプトでJenkins環境変数を設定する方法

分類Dev

cmd.exeから永続的な環境変数を設定します

分類Dev

環境変数配列への応答から値を設定します

分類Dev

SETXはファイルから環境変数を設定します

分類Dev

Pythonスクリプトを介してシェル環境変数を設定します

分類Dev

Mac OS X Sierraで環境変数を設定しますか?

分類Dev

configureスクリプトで環境変数が設定されているか確認しますか?

分類Dev

LinuxでBashを使用して環境変数を設定する

Related 関連記事

  1. 1

    JenkinsのGroovyスクリプトから環境変数を設定します

  2. 2

    JenkinsのGroovyスクリプトから環境変数を設定します

  3. 3

    cmake:スクリプトから環境変数を設定します

  4. 4

    forループforリストを使用し、要素を環境変数に設定してから値を取得します

  5. 5

    Jenkins-実行スクリプトで環境変数を設定する

  6. 6

    バッチから環境変数を設定します

  7. 7

    SYSTEMとして実行されているPowershellからユーザー環境変数を設定します

  8. 8

    bashスクリプトを介してシステム環境変数を設定しますか?

  9. 9

    systemdサービスファイルのshスクリプトから環境変数を設定します

  10. 10

    Java関数から環境変数を返し、ビルドを実行するためにJenkinsで同じように設定します

  11. 11

    docker stack:シークレットから環境変数を設定します

  12. 12

    AWS SAMで!Refを使用して環境変数を設定しますか?

  13. 13

    bashコマンドを介してGithubシークレットから環境変数を設定する方法

  14. 14

    CLIを使用してheroku環境変数を設定できますか?

  15. 15

    このマクロをビルド環境の環境変数として設定しますか?

  16. 16

    スクリプトから永続的な環境変数を設定する正しい方法

  17. 17

    スクリプトまたは環境変数(Pydev)からEclipse実行構成引数を取得します

  18. 18

    「vncserver:HOME環境変数が設定されていません」というエラーを修正する方法-ユーザーに代わってPHPからPythonスクリプトを実行しますか?

  19. 19

    TclスクリプトからWindows環境変数を設定する方法

  20. 20

    スクリプトから環境変数(PATHなど)を設定する

  21. 21

    dockerは、環境変数を使用してCMDでPythonスクリプトを実行します

  22. 22

    PythonスクリプトでJenkins環境変数を設定する方法

  23. 23

    cmd.exeから永続的な環境変数を設定します

  24. 24

    環境変数配列への応答から値を設定します

  25. 25

    SETXはファイルから環境変数を設定します

  26. 26

    Pythonスクリプトを介してシェル環境変数を設定します

  27. 27

    Mac OS X Sierraで環境変数を設定しますか?

  28. 28

    configureスクリプトで環境変数が設定されているか確認しますか?

  29. 29

    LinuxでBashを使用して環境変数を設定する

ホットタグ

アーカイブ