Для параметризованной сборки с выбором тега образа, понадобится плагин 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; ''' ] ] ] ]) ])