Обновление AWS Определение задачи. json файл из файла jenkins динамически - PullRequest
1 голос
/ 10 июля 2020

У меня есть определение задачи AWS ECS. * Файл 1007 * в репозитории Gitlab, и я вызываю его из моего файла jenkins, чтобы создать новое определение задачи.

Все содержимое файла определения задачи т.е. детали определений контейнеров жестко запрограммированы. Но я хочу, чтобы путь к изображению docker из ECR динамически передавался туда же.

Кто-нибудь может помочь мне с тем же.

Ответы [ 2 ]

1 голос
/ 10 июля 2020

В этом случае вам необходимо предварительно обработать файл json, прежде чем помещать его в AWS. Вы можете использовать sed для замены заполнителей или значений по умолчанию на значения для текущего конвейера - этого должно быть достаточно для ваших нужд.

0 голосов
/ 10 июля 2020

Вам нужно два шага

  • Создать новую ревизию
  • Добавить новое определение задачи для указанной выше ревизии

Но я хочу docker путь к изображению из ECR, который динамически передается туда же.

Приведенный ниже скрипт сделает именно то, что вы ищете, все, что вам нужно для определения или замены этих ENV

TAG="BUILD_NUMBER"
NODE_ENV="development"
AWSREGION="us-west-2"

Создать revision.sh

# task defintion dyanmic variable
TAG="BUILD_NUMBER"
NODE_ENV="development"
AWSREGION="us-west-2"

# Creae new revesion

NEW_TASK_DEFINITION=$(echo `cat <<EOF
{
  "containerDefinitions": [
  {
    "portMappings": [
      {
        "hostPort": 3000,
        "protocol": "tcp",
        "containerPort": 3000
      }
    ],
    "environment":
        [
            {
                "name": "NODE_ENV",
                "value":"$NODE_ENV"
            }
        ],
    "ulimits": [
        {
          "name": "nofile",
          "softLimit": 65536,
          "hardLimit": 95536
        }
     ],
    "logConfiguration": {
    "logDriver": "awslogs",
      "options": {
         "awslogs-group": "${ENV}_nodejs",
        "awslogs-region": "$AWSREGION",
        "awslogs-stream-prefix": "ecs"
       }
      },
    "memoryReservation": 500,
    "image": "1234.dkr.ecr.${AWSREGION}.amazonaws.com/test/nodejs:${TAG}",
    "name": "$ENV-nodejs"

  }
],
"family": "$ENV-nodejs"
}
EOF`
)
    echo "New Revesion"
    echo "${NEW_TASK_DEFINITION}" | python -m json.tool

#####################
#####Step 2#########
# Registering New Task Definition, 
aws ecs register-task-definition --region ${AWSREGION} --cli-input-json "$NEW_TASK_DEFINITION"

Если вы хотите вызвать его этим скриптом из конвейера, вам необходимо внести эти изменения.

# task defintion dyanmic variable
TAG="${1}"
NODE_ENV="${2}"
AWSREGION="${3}"
.
.
.

, чтобы вызвать этот скрипт

./update_task.sh build_tag development us-west-2
...