Я настраиваю простой конвейер Jenkins с этапом, работающим на агенте AWS EC2.
pipeline {
agent none
stages {
stage('Prepare') {
agent { label 'master' }
steps {
sh "touch somefile"
stash includes: "somefile", name:"ARTIFACT"
}
}
stage('AWS') {
agent { label 'aws' }
steps {
unstash 'ARTIFACT'
sh "cat somefile"
}
}
}
}
Stash / unsta sh работает для простых файлов, но в идеале я бы как прямое s sh соединение, так что я могу сделать репо sh a git на подчиненном устройстве и, возможно, найти каталог. Моя простая проблема заключается в том, что я не знаю publi c DNS / IP ведомого устройства, запущенного плагином EC2, поэтому не могу подключиться.
Я думаю, я мог бы выяснить это с помощью дополнительных сценариев и установки AWS CLI на моих коробках Jenkins. Также я видел предложения использовать S3 и CodeDeploy для добавления sh чего угодно на экземпляры ... однако это кажется более запутанным, чем я хочу, по крайней мере, на начальном этапе.
Я также видел подсказки для использования метаданных экземпляра и запросов http для получения IP / DNS (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#configuring -instance-metadata-options ) - опять-таки выглядит намного сложнее, чем я Я ожидаю (возможно, потому что я новичок ie в aws;), поэтому я думаю / надеюсь, что я не на правильном пути.
Также думал о добавлении дополнительного этапа на aws агент, просто войдите в систему и сделайте что-то вроде «ip addr show» и передайте это обратно в конвейер, чтобы на следующем шаге можно было использовать это для «git pu sh» или scp, et c ..
Я бы предположил, что плагин Jenkins EC2 уже знает IP / DNS подчиненному, иначе он не может подключиться сам.
Так что было бы здорово услышать о более простом и надежное решение.