Действия GitHub: Как запустить `services` в Windows или macOS? - PullRequest
1 голос
/ 13 октября 2019

Я хочу протестировать интерфейс командной строки, который должен подключаться к серверам PostgreSQL и MySQL с помощью GitHub Actions, на всех платформах, если это возможно: Linux, Windows и macOS.

Я нашел инструкции по , как запуститьPostgres service и как запустить MySQL service и объединили их в рабочий процесс :

name: Test
on: [push]

jobs:

    init_flow:
        name: 'Run MySQL and Postgres on ${{ matrix.os }}'
        runs-on: ${{ matrix.os }}
        strategy:
            fail-fast: false
            matrix:
                os: [ubuntu-latest, windows-latest, macOS-latest]

        # via https://github.com/actions/example-services/blob/master/.github/workflows/postgres-service.yml
        services:
            postgres:
                image: postgres:10.8
                env:
                    POSTGRES_USER: postgres
                    POSTGRES_PASSWORD: postgres
                    POSTGRES_DB: postgres
                ports:
                # will assign a random free host port
                - 5432/tcp
                # needed because the postgres container does not provide a healthcheck
                options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
            mysql:
                image: mysql:5.7
                env:
                    MYSQL_ROOT_PASSWORD: root
                ports:
                - 3306
                options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

        steps:
            - uses: actions/checkout@v1
            - run: node -v
              env:
                # use localhost for the host here because we are running the job on the VM.
                # If we were running the job on in a container this would be postgres
                POSTGRES_HOST: localhost
                POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }} # get randomly assigned published port
                MYSQL_PORT: ${{ job.services.mysql.ports[3306] }}

Но, похоже, это работаетв Linux, а не в Windows или macOS, смотрите результаты действия на GitHub:

Сбой Windows во время Initialize Containers с ##[error]Container operation is only supported on Linux, macOS даже во время Set up job с ##[error]File not found: 'docker'.

Действия GitHub services docs не упоминают, что это будет работать только на Linux, но я также не очень разбираюсь в контейнерах или Docker, поэтому может упускать что-то очевидное.

(Кстати, не важно, что MySQL и PostgreSQL работают в одной и той же операционной системе - они должны быть доступны только для основного задания.)

Возможно ли запустить MySQL и PostgreSQL для GitHubДействия с использованием Windows и macOS?
Если нет, то какой лучший обходной путь здесь?

Ответы [ 3 ]

1 голос
/ 13 октября 2019

Я не уверен, что это возможно. Я знаю, что в настоящий момент действия с контейнерами работают только на виртуальных машинах Linux, как вы можете видеть из документации здесь.

https://help.github.com/en/articles/about-actions#types-of-actions

services используют контейнеры, поэтомучувствую, что он еще не работает на Windows и MacOS.

0 голосов
/ 13 октября 2019

Альтернативный обходной путь - это, конечно, использовать внешнюю базу данных.

Простой способ сделать это - бесплатные уровни предложения Heroku:

Они все дают вам крошечное пространствои ограничения, но в моем случае этого, вероятно, будет достаточно на данный момент.

0 голосов
/ 13 октября 2019

Для MySQL я нашел (временный [1]) обходной путь:

Per Программное обеспечение в виртуальных средах для действий GitHub Я узнал, что все операционные системы в настоящее время имеют локальныйустановка MySQL 5.7 на порт 3306 с учетными данными root:root. Вы можете использовать этот экземпляр MySQL в своих работах.

К сожалению, для меня PostgreSQL не установлен.

[1] Я вспоминаю, как читал менеджер по продуктам GitHub Actions, сообщающий людям, что установленное программное обеспечение может измениться. и особенно базы данных могут скоро исчезнуть (к сожалению, не могу вспомнить или найти ссылку где-то в сообществе GitHub, действия GitHub)

Получает учетные данные MySQL root:root также работает только в LinuxЯ не смог найти работающие для Windows и MacOS.

...