Jenkins — Active Choice: S3 — Вернуть нужное значение ключа с JSON файла

Для параметризованной сборки, понадобится плагин Active Choices

Переходим в настройки Jenkins‘а

 

Раздел «Управление плагинами»

 

Переходим к вкладке «Доступные» и в поиске указываем «Active Choices»

Устанавливаем его.

 

Создаем «New Item» — «Pipeline«, указываем, что это будет параметризованная сборка, и добавляем параметр «Active Choices Parameter»

 

 

 

Указываем, что это «Groovy Script» и вставляем туда следующее:

import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.S3Object;
import com.cloudbees.plugins.credentials.Credentials;
import com.cloudbees.plugins.credentials.CredentialsNameProvider;
import com.cloudbees.plugins.credentials.common.StandardCredentials;
import com.cloudbees.jenkins.plugins.awscredentials.AmazonWebServicesCredentials;
import groovy.json.JsonSlurper;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.stream.Collectors;
import jenkins.model.*
  
def AWS_REGION = 'eu-west-1'
def BUCKET_NAME = 'artem.services'
def INFO_FILE = 'info.json'

credentialsId = 'aws_credentials'

def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(AmazonWebServicesCredentials.class, Jenkins.instance, null, null ).find({it.id == credentialsId});


AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(creds).withRegion(AWS_REGION).build(); 

S3Object s3Object = s3Client.getObject(BUCKET_NAME, INFO_FILE)

try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(s3Object.getObjectContent()))
    s3Data = reader.lines().collect(Collectors.joining("\n"));
} catch (Exception e) {
    System.err.println(e.getMessage());
    System.exit(1);
}

def json = new JsonSlurper().parseText(s3Data)

return json.instance.ip

 

Где значение переменных, «credentialsId» — Jenkins Credentials ID с AWS Access Key и AWS Secret Key (если для Jenkins инстанса не используется IAM Role, или он развернут не в AWS Cloud);

«AWS_REGION» — AWS регион, где находится S3 Bucket;

«BUCKET_NAME» — имя S3 бакета;

«INFO_FILE» — ключ объекта в корзине, в нашем случае JSON файла;

«return json.instance.ip» — возвращаем значение ключа instance: {‘ip’: »1.2.3.4}

 

Метки: Метки

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии