Действия GitHub: как запускать службы в Windows или macOS?

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

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

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в документации не упоминается, что это будет работать только в Linux, но я также мало знаю о контейнерах или Docker, поэтому, возможно, не хватает чего-то очевидного.

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

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

4 ответа

Ну, обычно это поддерживается только в Linux. Мне было интересно, будет ли он поддерживаться в других виртуальных машинах, поэтому я спрашиваю Github. Вот ответ:

В настоящее время действия контейнера Docker могут выполняться только в среде Linux, размещенной на GitHub, и не поддерживаются в других средах (например, Windows и MacOS).

Подробнее см. Здесь: https://help.github.com/en/actions/automating-your-workflow-with-github-actions/about-actions...

Мы замечаем, что некоторые другие пользователи также сообщали об этом же вопросе, мы сообщили об этом как о запросе функции в соответствующую группу разработчиков.

Ссылка: https://github.community/

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

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

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

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

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

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

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

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

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

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

Выдает учетные данные MySQL root:root тоже работают только на Linux, под Windows и macOS рабочих не нашел.

Другие вопросы по тегам