Для параметризованной сборки с выбором тега образа, понадобится плагин Active Choices
Переходим в настройки Jenkins'а
Раздел "Управление плагинами"
Переходим к вкладке "Доступные" и в поиске указываем "Active Choices"
Устанавливаем его. Так же необходим плагин Amazon Web Services SDK
Создаем "New Item" — "Pipeline", указываем, что это будет параметризованной сборка, и добавляем параметр "Active Choices Reactive Parameter"
Указываем, что это "Groovy Script" и вставляем туда следующее:
import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.services.ecr.AmazonECR; import com.amazonaws.services.ecr.AbstractAmazonECR; import com.amazonaws.services.ecr.AmazonECRClient; import com.amazonaws.services.ecr.model.ListImagesRequest; import com.amazonaws.services.ecr.model.ListImagesResult; import com.amazonaws.services.ecr.AmazonECRClientBuilder; import com.amazonaws.regions.Region; import com.amazonaws.regions.RegionUtils; import com.amazonaws.regions.Regions; import jenkins.model.* AmazonECR client = AmazonECRClientBuilder.standard().withRegion("eu-west-1").build(); ListImagesRequest request = new ListImagesRequest().withRepositoryName("artem-services"); res = client.listImages(request); def result = [] for (image in res) { result.add(image.getImageIds()); } return result[0].imageTag;
Где, "eu-west-1" — регион, в котором находится ECR репозиторий;
"artem-services" — имя вашего ECR репозитория;
Тоже самое, но уже через Pipeline
Pipeline:
properties([ parameters([ [$class: 'CascadeChoiceParameter', choiceType: 'PT_SINGLE_SELECT', description: 'Select Image', filterLength: 1, filterable: false, name: 'ImageTag', script: [ $class: 'GroovyScript', script: [ classpath: [], sandbox: false, script: ''' import com.amazonaws.client.builder.AwsClientBuilder; import com.amazonaws.services.ecr.AmazonECR; import com.amazonaws.services.ecr.AbstractAmazonECR; import com.amazonaws.services.ecr.AmazonECRClient; import com.amazonaws.services.ecr.model.ListImagesRequest; import com.amazonaws.services.ecr.model.ListImagesResult; import com.amazonaws.services.ecr.AmazonECRClientBuilder; import com.amazonaws.regions.Region; import com.amazonaws.regions.RegionUtils; import com.amazonaws.regions.Regions; import jenkins.model.* AmazonECR client = AmazonECRClientBuilder.standard().withRegion("eu-west-1").build(); ListImagesRequest request = new ListImagesRequest().withRepositoryName("artem-services"); res = client.listImages(request); def result = [] for (image in res) { result.add(image.getImageIds()); } return result[0].imageTag; ''' ] ] ] ]) ])