Как в GitHub Action переопределить точку входа службы? - PullRequest
0 голосов
/ 22 января 2020

Мне нужно определить сервис в моем действии GitHub и переопределить его точку входа, добавив в него аргументы. Как я могу это сделать?

Вот docker -композиция, которая работает, которую я пытаюсь перевести.

version: '2'
services:
  config:
    build: .
    links:
      - etcd

  etcd:
    image: microbox/etcd:2.1.1
    entrypoint: "etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379"
    hostname: etcd
    container_name: build_etcd
    expose:
        - 2379

Вот мое действие и то, как я изначально думал, что оно будет работать ...

name: Node CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [12.x]

    services:
      etcd:
        image: microbox/etcd:2.1.1
        options: --entrypoint 'etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379'

    steps:
      ...

Однако при инициализации контейнеров происходит сбой, поскольку команда, которую он запускает, неверна ...

/usr/bin/docker create --name 1062a703242743a29bbcfda9fc19c823_microboxetcd211_3767cc --label 488dfb --network github_network_244f1c7676b8488e99c66694d06a21f2 --network-alias etcd --entrypoint 'etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379' -e GITHUB_ACTIONS=true microbox/etcd:2.1.1

Ошибка unknown flag: --listen-client-urls

Я думаю, что на самом деле должно быть так ...

/usr/bin/docker create --name 1062a703242743a29bbcfda9fc19c823_microboxetcd211_3767cc --label 488dfb --network github_network_244f1c7676b8488e99c66694d06a21f2 --network-alias etcd --entrypoint etcd -e GITHUB_ACTIONS=true microbox/etcd:2.1.1 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379

Есть идеи, как в определении службы действий GitHub я могу переопределить точку входа с помощью аргументов, передаваемых в исполняемый файл?

1 Ответ

0 голосов
/ 24 января 2020

Из того, что я могу сказать, это невозможно.

Самое простое, что можно сделать - это запустить команду docker create с переопределением точки входа и ее аргументами в качестве шага сборки. Примерно так:

name: Node CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      ...
      - run: docker create --name build_etcd --network-alias etcd --entrypoint etcd microbox/etcd:2.1.1 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:237
      ...

Тем не менее, я просто собрал и запустил docker -compose.yml, который, как я уже знал, работал как шаг в рабочем процессе. Вот docker -композиция.

version: '3'
services:
  config:
    build: .
    links:
      - etcd

  etcd:
    image: microbox/etcd:2.1.1
    entrypoint: "etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379"
    hostname: etcd
    container_name: build_etcd
    expose:
        - 2379

А вот соответствующие шаги:

steps:
    - uses: actions/checkout@v2
    - name: Build
      run: docker-compose build --pull --force-rm config
    - name: Test
      run: docker-compose run --rm config test
    ...
...