Постпроцессор упаковщика Ошибка «Неизвестный тип артефакта» при объединении docker -tag и shell-local - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть следующий файл конфигурации упаковщика:

{
  "builders":[
    {
      "type": "docker",
      "image": "ubuntu:18.04",
      "commit": true
    }

  ],
  "post-processors": [
    [
      {
        "type": "shell-local",
        "inline": ["$(aws ecr get-login --no-include-email --region us-east-2)"]
      },
      {
        "type": "docker-tag",
        "repository": "localhost/my_image",
        "tag": "latest"
      },
      {
        "type": "docker-tag",
        "repository": "123456789.dkr.ecr.us-east-2.amazonaws.com/my_image",
        "tag": "latest"
      },
      "docker-push"
    ]
  ]
}

Это дает мне следующую ошибку

==> docker: Running post-processor: shell-local
==> docker (shell-local): Running local shell script: /var/folders/zh/wsr6wlx11v9703__rn7f3b080000gn/T/packer-shell756682313
==> docker (shell-local): WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    docker (shell-local): Login Succeeded
==> docker: Running post-processor: docker-tag
Build 'docker' errored: 1 error(s) occurred:

* Post-processor failed: Unknown artifact type: 
Can only tag from Docker builder artifacts.

Это работает, если я удаляю локальный постпроцессор оболочки.

Также не имеет значения, какую команду я выполняю в локальном постпроцессоре оболочки.

Я пытался добавить "keep_input_artifact": true к локальному постпроцессору оболочки, но это не помогло изменить что-либо.

Как выполнить локальный постпроцессор оболочки перед постпроцессором docker -tag / docker -pu sh?

1 Ответ

0 голосов
/ 03 февраля 2020

Я понял это. Я должен поместить локальный постпроцессор оболочки в отдельный список, т.е. мне нужно добавить еще один список в список постпроцессоров, например:

"post-processors": [
    [
      {
        "type": "shell-local",
        "inline": ["$(aws ecr get-login --no-include-email --region us-east-2)"]
      }
     ],
     [
      {
        "type": "docker-tag",
        "repository": "localhost/my_image",
        "tag": "latest"
      },
      {
        "type": "docker-tag",
        "repository": "123456789.dkr.ecr.us-east-2.amazonaws.com/my_image",
        "tag": "latest"
      },
      "docker-push"
    ]
  ]
}
...