0
我在Jenkins版本上有一系列Execute shell
框。谷歌和观看视频3天后,我需要帮助。我更像一个系统管理员而不是编码器,所以我很难用正确的选项和语法创建一个Jenkins文件。任何人都可以建议吗?我需要创建一个管道。 <name>
中的任何内容都是出于安全原因,我具有文件中的真实值。从“执行外壳”命令创建Jenkinsfile
执行壳
mkdir -p deploy
执行壳
cp -R code/api deploy/
cp docker/Dockerfile.dev deploy/
(cd deploy/api/<Name>.<Name>.Web/ && aws s3 cp --recursive --region=eu-west-1 s3://config.<name>/audience-view/atg/dev/API/ .)
执行壳
cd deploy && docker build -t <name> -f Dockerfile.dev .
执行壳
aws ecr get-login --region eu-west-1 > docker_login.sh && chmod +x
docker_login.sh && ./docker_login.sh
docker tag <name>:latest 543573289192.dkr.ecr.eu-west-
1.amazonaws.com/<name>:latest
docker push <name>.dkr.ecr.eu-west-1.amazonaws.com/<name>:latest
执行壳
docker rmi audience-view-dev-api
docker rmi 543573289192.dkr.ecr.eu-west-1.amazonaws.com/<name>:latest
执行壳
RUNNING_TASKS=$(aws ecs list-tasks --region=eu-west-1 --cluster <name> --family <name> --query 'taskArns')
if [ "$RUNNING_TASKS" != "[]" ]; then
TASK_ARN=$(aws ecs list-tasks --region=eu-west-1 --cluster a<name> --family <name> --query 'taskArns[0]' | sed 's/\"//g')
aws ecs stop-task --region=eu-west-1 --cluster=<name> --task=$TASK_ARN --reason="Deployment from Jenkins"
while [ $RUNNING_TASKS != "[]" ]; do
sleep 5
RUNNING_TASKS=$(aws ecs list-tasks --region=eu-west-1 --cluster <name> --family <name> --query 'taskArns')
done
fi
执行壳
TASK_ARN=$(aws ecs start-task --region=eu-west-1 --cluster <name> --task-definition <name> --container-instances 5f0c5b75-64a2-45cf-8ced-d6a6d13d2666 --query 'tasks[0].taskArn' | sed 's/arn:aws:ecs:eu-west-1:543573289192:task\///' | sed 's/\"//g')
TASK_STATUS=$(aws ecs describe-tasks --region=eu-west-1 --cluster <name> --tasks $TASK_ARN --query 'tasks[0].lastStatus')
while [ $TASK_STATUS == "PENDING" ]; do
echo $TASK_STATUS
TASK_STATUS=$(aws ecs describe-tasks --region=eu-west-1 --cluster <name> --tasks $TASK_ARN --query 'tasks[0].lastStatus' | sed 's/\"//g')
if [ $TASK_STATUS == "STOPPED" ]; then
echo $(aws ecs describe-tasks --region=eu-west-1 --cluster <name> --tasks $TASK_ARN --query 'tasks[0].containers[0].exitCode')
exit 1
fi
done
我认为这是更好地在任何RCS源(最好是时下的git )。詹金斯的工作应该检查项目并调用一个脚本。这可以做你粘贴到你的问题上面的所有东西,或者调用一堆其他脚本,每个脚本都在做一个块。 – Alfe