Интеграционное тестирование имеет решающее значение для обеспечения безупречной работы вашего приложения Go с внешними зависимостями, такими как базы данных. В этом блоге мы рассмотрим, как настроить и запустить интеграционные тесты для приложения Go с помощью GitHub Actions. Мы настроим базу данных PostgreSQL в конвейере CI, упростим процесс тестирования и обеспечим надежность и готовность вашей кодовой базы к работе при каждом запуске. Давайте погрузимся!.
Мы создали модульное тестирование и интеграцию в предыдущей статье здесь!. В этой статье мы хотим запустить эти тесты для всех коммитов в нашем репозитории GitHub.
Это платформа непрерывной интеграции и непрерывной доставки (CI/CD), которая позволяет автоматизировать конвейер сборки, тестирования и развертывания.
Действия Github позволяют запускать рабочие процессы, когда в вашем репозитории происходят другие события
Рабочий процесс — это настраиваемый автоматизированный процесс, который запускает одно или несколько заданий. Рабочие процессы определяются файлом YAML, зарегистрированным в вашем репозитории, и будут запускаться при запуске события в вашем репозитории. Рабочие процессы определены в файле .github/workfows.
name: ci-test on: push: branches: [main] pull_request: branches: [main] env: POSTGRES_USER: postgres POSTGRES_PASSWORD: Password123 POSTGRES_DB: crud_db jobs: build: name: tests runs-on: ubuntu-latest services: postgres: image: postgres env: POSTGRES_USER: ${{ env.POSTGRES_USER }} POSTGRES_PASSWORD: ${{ env.POSTGRES_PASSWORD }} POSTGRES_DB: ${{ env.POSTGRES_DB }} ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v4 with: go-version: "1.22" - name: Install dbmate for golang migrations run: | sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64 sudo chmod x /usr/local/bin/dbmate which dbmate - name: Construct DB URL id: construct_url run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV - run: env - name: Make Migrations run: make migrations URL=${{ env.DB_URL }} - name: Seed test DB run: go run db/seed.go - name: Test run: make test
Рабочие процессы Github поддерживают глобальные и специфичные для задания переменные среды. Эти переменные описывают учетные данные postgres, которые мы будем использовать позже в нашем файле yaml.
jobs: build: name: tests runs-on: ubuntu-latest
Здесь мы присвоили имя заданию, которое будет выполнять основные задачи по созданию и тестированию нашего кода.
Runner — описывает, где будет выполняться рабочий процесс, то есть на виртуальной машине Ubuntu.
Рабочие процессы действий Github позволяют определять сервисы. В этом случае нам нужна база данных Postgres для запуска наших тестов.
- uses: actions/checkout@v4
Эта строка извлекает последнюю версию репозитория, обеспечивая доступ ко всем исходным файлам.
- name: Set up Go uses: actions/setup-go@v4 with: go-version: "1.22"
- name: Install dbmate for golang migrations run: | sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64 sudo chmod x /usr/local/bin/dbmate which dbmate
- name: Construct DB URL id: construct_url run: echo "DB_URL=postgres://${{ env.POSTGRES_USER }}:${{ env.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}?sslmode=disable" >> $GITHUB_ENV
- name: Make Migrations run: make migrations URL=${{ env.DB_URL }}
- name: Seed test DB run: go run db/seed.go
Файлseed.go заполняет базу данных тестовыми данными. Настройка реалистичной тестовой среды. Чтобы продолжить проверку этого файла, посетите здесь
Заключительный этап — выполнение нашего Go-теста с использованием make-файла
- name: Test run: make test
Теперь этот рабочий процесс будет запускаться каждый раз, когда мы делаем запрос на включение или отправку кода в нашу основную ветку
Как мы видели, действия github позволяют вам делать
Благодаря использованию GitHub Actions этот рабочий процесс упрощает тестирование и настройку базы данных, обеспечивая надежную и надежную разработку программного обеспечения.
Посетите репозиторий github, чтобы просмотреть код, который тестируется с помощью действия, описанного выше.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3