#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 }}