相关疑难解决方法(0)

Jenkinsfile声明性管道定义动态环境变量

我是jenkins管道的新手,我正在定义一个声明性语法管道,我不知道我是否可以解决我的问题,因为我找不到解决方案.

在这个例子中,我需要将一个变量传递给ansible插件(在旧版本中我使用ENV_VAR或者使用inject插件从文件中注入它,该变量来自脚本.

这是我完美的风景(但它不起作用,因为环境{}):

pipeline {
  agent { node { label 'jenkins-node'}}

  stages {
    stage('Deploy') {
      environment {
        ANSIBLE_CONFIG = '${WORKSPACE}/chimera-ci/ansible/ansible.cfg'
        VERSION = sh("python3.5 docker/get_version.py")
      }
      steps {
        ansiblePlaybook credentialsId: 'example-credential', extras: '-e version=${VERSION}', inventory: 'development', playbook: 'deploy.yml'
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了其他方法来测试env vars在其他帖子中的工作方式,例如:

pipeline {
  agent { node { label 'jenkins-node'}}

  stages {
    stage('PREPARE VARS') {
      steps {
        script {
          env['VERSION'] = sh(script: "python3.5 get_version.py")
        }
        echo env.VERSION
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但"echo env.VERSION"返回null.

还尝试了相同的例子: - VERSION = python3.5 get_version.py …

jenkins jenkins-pipeline

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

在Jenkins阶段之间传递变量

我想以某种方式将我在A阶段读到的变量传递给B阶段.我在一些例子中看到人们把它写到文件中,但我想这不是一个很好的解决方案.我尝试将它写入环境变量,但我并没有真正成功.如何正确设置?

为了使它工作,我尝试了很多东西,并且读到我应该使用""而不是'''来启动shell并将这些变量转义\${foo}为例如.

以下是我作为管道的内容:

#!/usr/bin/env groovy

pipeline {

    agent { node { label 'php71' } }

    environment {
        packageName='my-package'
        packageVersion=''
        groupId='vznl'
        nexus_endpoint='http://nexus.devtools.io'
        nexus_username='jenkins'
        nexus_password='J3nkins'
    }

    stages{

        // Package dependencies
        stage('Install dependencies') {
            steps {
                sh '''
                    echo Skip composer installation
                    #composer install  --prefer-dist --optimize-autoloader --no-interaction
                '''
            }
        }

        // Unit tests
        stage('Unit Tests') {
            steps {
                sh '''
                    echo Running PHP code coverage tests...
                    #composer test
                '''
            }
        }

        // Create artifact
        stage('Package') {
            steps {
                echo 'Create package …
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

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

标签 统计

jenkins ×2

jenkins-pipeline ×2