Jenkins groovy: переменная, добавляющая новую строку в конвейер - PullRequest
0 голосов
/ 20 сентября 2018

Я новичок в конвейере Jenkins, моя задача - создать стек формирования облаков aws, используя cft, а имя стека должно быть случайным числом от 1 до 9999, для этого я использую команду shuf для генерации числаи хранится в переменной.

pipeline {
agent  { node { label 'ansible-serverless' } }
stages {
   stage('Verify CFT') {
         options {
         withAWS(credentials:'jenkin_user_s3_9834',region:'us-east-1')
            }
        steps {
  node ('jenkins_ec2_9835'){
            script {
                    sh '''shuf -i 1-10000 -n 1 > outFile'''
                //    curDate = readFile 'outFile'.trim()
                    curDate = readFile 'outFile'.replaceAll("(?m)^[ \t]*\r?\n", "")
                    echo "The current number is ${curDate}"
                    }
                  sh "echo ${curDate}"

          cfnUpdate(url:'https://s3.amazonaws.com/artifacts/100GB_DB_ecosystem_full_enterprise.json', paramsFile:'/tmp/parameter-56.json',stack:"""CICD"${curDate}"-test""")
          cfnDescribe(stack:"CICD"${curDate}"-test")
         }
        }
       }
     }
   }

Я могу распечатать переменную, но когда я использую эту переменную для конвейера создания стека, автоматически добавляется новая строка.

Подскажите, пожалуйста, что я здесь делаю не так?

Running on ansible-serverless in /root/workspace/test_job
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Verify CFT)
[Pipeline] withAWS
Constructing AWS CredentialsSetting AWS region us-east-1 
[Pipeline] {
[Pipeline] node
Running on Jenkins_Slave_290818_do_not_delete (i-6f1bdb6ae014f) in /home/ubuntu/workspace/test_job
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] sh
[test_job] Running shell script
+ shuf -i 1-10000 -n 1
[Pipeline] readFile
[Pipeline] echo
The current number is 6454
[Pipeline] }
[Pipeline] // script
[Pipeline] sh
[test_job] Running shell script
+ echo 6454
6454
[Pipeline] cfnUpdate
[Pipeline] }
[Pipeline] // node
[Pipeline] }
[Pipeline] // withAWS
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
    com.amazonaws.services.cloudformation.model.AmazonCloudFormationException: 1 validation error detected: Value 'CICD6454
-test' at 'stackName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z][-a-zA-Z0-9]*|arn:[-a-zA-Z0-9:/._+]* (Service: AmazonCloudFormation; Status Code: 400; Error Code: ValidationError; Request ID: f59868c6-bd11-11e8-90e2)                                                                                  

1 Ответ

0 голосов
/ 21 сентября 2018

Похоже, проблема в интерполяции строк (http://docs.groovy -lang.org / latest / html / documents / # _ string_interpolation ).

Попробуйте заменить переменную curDate следующим образом:

cfnDescribe(stack:"CICD${curDate}-test")
...