Как создать образ docker и использовать его в качестве контейнера для следующего задания в GitHub actions?

#docker #github-actions

#docker #github-действия

Вопрос:

На моем CI я хочу создать образ docker один раз, а затем использовать один и тот же образ дважды (или несколько раз) для любых следующих заданий, таких как «test» и «lint».

   ╭─────────────╮
   build-image 
  ╰─────────────╯
        
 ╭──────╮ ╭──────╮
  test   lint 
 ╰──────╯ ╰──────╯
  

Можно использовать пользовательский контейнер, используя атрибут container . Однако я не уверен, как сделать изображение, созданное на шаге «build-image», доступным для этого свойства.

Каков наилучший подход к созданию образа и использованию его в следующих заданиях?

Комментарии:

1. Вы можете избежать конфликтов, о которых вы упоминаете, пометив изображение (созданное в конкретном запуске рабочего процесса) уникальным тегом и повторно использовать этот тег в следующем задании. Вы можете использовать GITHUB_RUN_ID переменную среды, предоставленную runner, в качестве уникального тега. Пожалуйста, взгляните на docs.github.com/en/free-pro-team@latest/actions/reference /…

Ответ №1:

Я смог создать изображение на первом шаге и пометить это изображение с помощью commit sha. Затем, на следующем шаге, загрузите контейнер с тегом sha.

 build-image:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v2
    - uses: docker/build-push-action@v1
      with:
        registry: registry
        repository: user/repo/image-name
        tags: ${{ github.sha }}
test:
  needs: [build-image]
  runs-on: ubuntu-latest
  container:
    image: registry/user/repo/image-name:${{ github.sha }}