DEV Community

Cover image for Criando seu processo de CI/CD com GitHub Actions
Felipe Maciel Ramos Vieira
Felipe Maciel Ramos Vieira

Posted on

Criando seu processo de CI/CD com GitHub Actions

E aí, já conhece o Github Actions?

O GitHub Actions é uma ferramenta massa para automatizar seus workflows de CI/CD direto no GitHub. Com ele, dá para rodar os testes e fazer builds e deploys de forma bem simples. Vamos ver como fazer!

Nessa publicação eu vou mostrar como criar um workflow para um projeto com Ruby on Rails, Docker e Docker Compose, mas o exemplo serve perfeitamente para outros tipos de projeto com algumas pequenas alterações!

Você precisará ter um projeto rails com docker, docker compose e os testes e para isso você pode encontrar um guia aqui!

Com o seu projeto pronto:

  1. Crie uma pasta chamada .github/workflows na raiz. Dentro dessa pasta crie um arquivo yaml. O nome é com você. Eu vou chamar de ci.yaml

  2. Crie o seu fluxo. Aqui, basicamente você define o passo a passo que vai ser executado a cada ação(push, pull request, issues, fork...). Para esse exemplo, eu quero que o criar triggers para quando o houver push ou quando for criado pull request apontando para a branch main. Em seguida explico um pouco mais, mas o arquivo fica assim:

name: Rails CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Build and Test
        run: |
          docker compose build
          docker compose run --rm web bundle install
          docker compose run --rm web bundle exec rails db:create
          docker compose run --rm web bundle exec rails db:migrate
          docker compose run --rm web bundle exec rspec

Enter fullscreen mode Exit fullscreen mode

Vamos aos detalhes:

  • name: É o nome do workflow

  • on: É onde se define os eventos que disparam o workflow

  • jobs: São as atividades que serão executadas em paralelo

  • build: É o ID do job. Poderia ser qualquer identificador único dentro da cadeia de jobs.

  • runs-on: Define o tipo de máquina a ser executado o job id que criamos.

  • steps: Define a sequência de tarefas que vai ser executada no naquele job/job_id.

  • checkout: O Primeiro step consiste em fazer checkout do repositório

  • run: executa comandos no shell do SO. Nesse caso, estou executando uma série de comandos do docker.

Se tudo der certo, ao fazer push ou pull request na master, sua action vai ser disparada.

Agora é so fazer commit e push para ver o que acontece.

Como verificar?

Print Github

E o exemplo de uma action que passou:

pass action

Agora é com você! Dá uma explorada na aba actions e nesse check status que marquei!

Top comments (1)

Collapse
 
thiagomrvieira profile image
Thiago Maciel

Nice!