統合テストは、Go アプリケーションがデータベースなどの外部依存関係と問題なく動作することを確認するために重要です。このブログでは、GitHub Actions を使用して Go アプリケーションの統合テストをセットアップして実行する方法を説明します。 CI パイプライン内で PostgreSQL データベースを構成し、テスト プロセスを合理化し、プッシュするたびにコードベースの信頼性と運用準備が整っていることを確認します。飛び込んでみましょう!.
前回の記事で単体テストと統合を作成しました。この記事では、github リポジトリへのすべてのコミットに対してこれらのテストを実行したいと考えています。
これらは、ビルド、テスト、デプロイメントのパイプラインを自動化できる継続的インテグレーションおよび継続的デリバリー (CI/CD) プラットフォームです。
Github Actions を使用すると、リポジトリ内で他のイベントが発生したときにワークフローを実行できます
ワークフローは、1 つ以上のジョブを実行する構成可能な自動プロセスです。ワークフローは、リポジトリにチェックインされた 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 ワークフローは、グローバル環境変数とジョブ固有の環境変数をサポートします。この変数は、後で yaml ファイルで使用する postgres 認証情報を記述します。
jobs: build: name: tests runs-on: ubuntu-latest
ここでは、コードの構築とテストというコアタスクを実行するジョブに名前を割り当てました。
Runner - Ubuntu 仮想マシンであるワークフローが実行される場所を説明します。
Github Actions ワークフローを使用すると、サービスを定義できます。この場合、テストを実行するための 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 ファイルは、テスト データをデータにシードします。現実的なテスト環境をセットアップします。このファイルをさらに詳しく調べるには、ここにアクセスしてください
最後の段階では、make ファイルを使用して go テストを実行します
- name: Test run: make test
このワークフローは、プル リクエストを行うか、コードをメイン ブランチにプッシュするたびに実行されるようになります
これまで見てきたように、github アクションでは
を実行できます。GitHub Actions を活用することで、このワークフローはテストとデータベースのセットアップを合理化し、堅牢で信頼性の高いソフトウェア開発を保証します。
github リポジトリにアクセスして、上記のアクションでテストされているコードを表示します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3