Рубрики
Uncategorized

Контейнеры для спиннинга в Github Action Workflow

Всем привет, Это учебное пособие, я собираюсь пройти, как запустить контейнеры Docker в Github AC … Помечено Postgres, Docker, DevOps.

Всем привет,

Это учебное пособие, я собираюсь пройти, как запустить контейнеры Docker в Действие GitHub рабочие процессы. Эта задача часто полезна в тестировании рабочих процессов, где нам нужна временная база данных для проведения тестовых случаев. Мы будем работать PostgreSQL База данных в этом руководстве.

name: Running Tests

on: [push]

jobs:
  Test:
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres

        env:
          POSTGRES_PASSWORD: postgres
          POSTGRES_USER: postgres
          POSTGRES_DB: postgres

        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:

          - 5432:5432

В приведенном выше фрагменте рабочего процесса мы делаем несколько вещей.

1.

on: [push]

установит, когда запустить этот рабочий процесс. Здесь мы указали толчок так на каждом толчок Событие, этот рабочий процесс запустится. Имейте в виду, что это массив, чтобы мы могли использовать несколько вариантов, такие как pull_request и Т. Д.

2.

jobs:
  service-container-demo:

Этот фрагмент кода укажет нашу работу. Сервис-контейнер-демонстрация это название нашей работы.

3.

runs-on: ubuntu-latest

Указывает, в какой операционной системе нам нужно запустить эту работу. Здесь мы указали, чтобы запустить его на последней операционной системе Ubuntu.

4.

 services:
      postgres:

Здесь мы указываем услуги, которые нам нужно запустить, а имя сервисного контейнера. Название сервисного контейнера используется для доступа к нему.

5.

image: postgres

Эта строка укажет, какое изображение нам нужно запустить. Эти документы докера выбираются из Docker Hub. . Поэтому нам нужно указать соответствующее имя изображения из Docker Hub.

6.

    env:
      POSTGRES_PASSWORD: postgres
      POSTGRES_USER: postgres
      POSTGRES_DB: postgres

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

7.

  options: >-
    --health-cmd pg_isready
    --health-interval 10s
    --health-timeout 5s
    --health-retries 5

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

8.

 ports:
   - 5432:5432

Здесь мы указали отображение порта. 5432 Хост порт сопоставлен на 5432 Контейнерный порт.

Далее мы можем определить шаги рабочего процесса. Здесь мы можем мигрировать в базу данных контейнера обслуживания и выполнять необходимые тесты.

# define steps of workflow
    steps:
      # run steps required in the workflow
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up Node.js 14.x
        uses: actions/setup-node@v1
        with:
          node-version: 14.x

      - name: Install dependencies
        run: npm install

      - name: migrate database
        run: node migrate.js
        env:
          DBURL: "postgres://postgres:postgres@localhost:5432/postgres"

      - name: Run the mock tests function
        run: node getuser.js
        env:
          DBURL: postgres://postgres:postgres@localhost:5432/postgres

Вверху над фрагментом Дбурл установлен на Postgres://postgres: postgres @ localhost: 5432/Postgres Отказ Это происходит через конфигурации, которые мы устанавливаем в контейнер услуг ранее. Хост предоставляется как localhost Потому что докер и хост-машина работает на localhost Отказ И вот, мы передаем его на шаг через переменную среды.

Миграция базы данных

Запрос базы данных

Полный файл рабочего процесса.

Пример github репо

Rizkyrajitha/GawscontainerDemo.

Действие GitHub Действие с контейнерами обслуживания

Спасибо за чтение до конца 🙌

Я ценю свое мнение, и ценю, что вы нашли время, чтобы поделиться своими мыслями.

Оригинал: «https://dev.to/rizkyrajitha/spinning-service-containers-in-github-action-workflow-56g0»