Использовать локальный Dockerfile в действии GitHub? - PullRequest
0 голосов
/ 11 апреля 2020

Я бы хотел настроить GitHub Action для сборки моего проекта и локального запуска тестов. Поскольку я использую .devcontainer, у меня есть Dockerfile в .devcontainer/Dockerfile, которые предоставляют все, что мне нужно для построения моего проекта.

Теперь я хотел бы написать GitHub Action, чтобы построить проект для каждого пу sh. Локально я бы сделал это:

docker build -t local - < .devcontainer/Dockerfile
docker run -it -v $(pwd):/srv -w/srv local make test

Действия GitHub выглядят громоздко, но в итоге я написал это:

on: push
jobs:
  build:
    name: build
    runs-on: ubuntu-latest
    steps:
      - name: check out repository
        uses: actions/checkout@v2
      - name: build project
        container:
          image: ".devcontainer/Dockerfile"
          volumes:
            - .:/srv
        run: make test

К сожалению, ему не нравится ключевое слово container.

Есть какие-нибудь подсказки?

1 Ответ

1 голос
/ 11 апреля 2020

Ключ контейнера предназначен для запуска общедоступных закрепленных действий и доступен под ключом job.<job_id>, а не ключом steps. Вам не нужно это для выполнения sh вашей задачи.

У бегунов GitHub имеется обширный список установленного программного обеспечения , включая docker и docker compose.

Вы можете легко запускать те же команды, которые запускаете локально, в рабочем процессе GitHub.

steps:
- name: Check out code
  uses: actions/checkout@v2
- name: Build docker images
  run: docker build -t local < .devcontainer/Dockerfile
- name: Run tests
  run: docker run -it -v $PWD:/srv -w/srv local make test

Большинство моих рабочих процессов выполняются таким образом, только с использованием docker -compose, поэтому вы получаете более чистые рабочие процессы:

steps:
- name: Check out code
  uses: actions/checkout@v2
- name: Build docker images
  run: docker-compose build
- name: Setup database
  run: docker-compose run setup
- name: Run tests
  run: docker-compose run test
...