Os testes de integração são cruciais para garantir que seu aplicativo Go funcione perfeitamente com dependências externas, como bancos de dados. Neste blog, exploraremos como configurar e executar testes de integração para um aplicativo Go usando GitHub Actions. Configuraremos um banco de dados PostgreSQL dentro do pipeline de CI, simplificaremos o processo de teste e garantiremos que sua base de código seja confiável e pronta para produção a cada push. Vamos mergulhar!.
Criamos testes unitários e integrações em um artigo anterior Clique aqui. Neste artigo, queremos executar esses testes em todos os commits em nosso repositório github.
Eles são uma plataforma de integração contínua e entrega contínua (CI/CD) que permite automatizar seu pipeline de construção, teste e implantação.
Github Actions permite executar fluxos de trabalho quando outros eventos acontecem em seu repositório
Um fluxo de trabalho é um processo automatizado configurável que executará um ou mais trabalhos. Os fluxos de trabalho são definidos por um arquivo YAML com check-in em seu repositório e serão executados quando acionados por um evento em seu repositório. Os fluxos de trabalho são definidos em .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
Os fluxos de trabalho do GitHub oferecem suporte a variáveis de ambiente globais e específicas de trabalho. Essas variáveis descrevem as credenciais do postgres que usaremos posteriormente em nosso arquivo yaml.
jobs: build: name: tests runs-on: ubuntu-latest
Aqui atribuímos um nome ao trabalho que executará as tarefas principais, que são construir e testar nosso código.
Runner - descreve onde o fluxo de trabalho será executado, que será uma máquina virtual Ubuntu.
Os fluxos de trabalho do GitHub Actions permitem que você defina serviços. Neste caso, precisamos de um banco de dados postgres para executar nossos testes.
- uses: actions/checkout@v4
Esta linha busca a versão mais recente do repositório, fornecendo acesso a todos os arquivos de origem.
- 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
O arquivo seed.go propaga os dados com dados de teste. Configurando um ambiente de teste realista. Para inspecionar este arquivo mais detalhadamente, visite aqui
A etapa final é executar nosso teste usando o arquivo make
- name: Test run: make test
Este fluxo de trabalho agora será executado sempre que fizermos uma solicitação pull ou um código push para nossa ramificação principal
Como vimos, a ação do github permite que você faça
Ao aproveitar o GitHub Actions, esse fluxo de trabalho agiliza os testes e a configuração do banco de dados, garantindo um desenvolvimento de software robusto e confiável.
Visite o repositório github para visualizar o código que está sendo testado com a ação descrita acima.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3