Pipeline no GitHub Actions

Desenvolvimento e execução
Voltar
Conteúdo disponível

Conceito

Pipeline (job) é arquivo com códigos que realizam sequência de etapas (workflows - stages) de execução de tarefas (steps) de forma automatizada. Basta executar o arquivo (ou programá-lo - CRON - para execução automática, via triggers e timers) para que todas as etapas descritas sejam executadas automaticamente, dispensando executar cada etapa manualmente e repetitivamente. Além disso, pipelines geram logs com stages de erro e sucesso. GitHub Actions é serviço do GitHub de criação de pipelines para trabalhar em conjunto com os projetos nos repositórios, sendo necessário possuir conta ativa no GitHub para utilizá-lo.


Objetivo

Desenvolver pipeline, no GitHub Actions, para clonar API REST Django, executá-la no repositório da pipeline, e testá-la através de requisições via curl, cujas etapas são:

  • Verificar repositório da API REST, e cloná-lo (API REST Django de músicas);
  • Configurar Python no repositório da pipeline;
  • Instalar dependências e Django;
  • Montar migrations da API REST;
  • Iniciar servidor Django;
  • Testar API REST via requisição POST (adicionar música);
  • Testar API REST via requisição GET (listar músicas).

Link Github API REST Django de músicas: Acesse.


Passo a passo

  1. Criar repositório no GitHub;
  2. Nesse repositório no GitHub, aba Actions, Simple workflow, clique em Configure;
  3. Escolha o nome de sua pipeline (exemplo: meuProjeto.yml), informe código da pipeline e clique em Commit changes para construí-la;
  4. Clique na aba Actions para verificar status de build e outras configurações sobre a pipeline.


Código pipeline


name: Django API Pipeline

on:
  push:
    branches:
      - main

jobs:
  pipeline:
    runs-on: ubuntu-latest

    steps:
    - name: Verificar repositório
      uses: actions/checkout@v3

    - name: Clonar repositório da API REST Django
      run: |
        git clone https://github.com/mateusschwede/music_django_api_rest.git
        cd music_django_api_rest/music_project

    - name: Configurar Python
      uses: actions/setup-python@v4
      with:
        python-version: '3.10'

    - name: Instalar dependências
      working-directory: music_django_api_rest/music_project
      run: |
        python -m pip install --upgrade pip
        pip install django djangorestframework

    - name: Montar migrations
      working-directory: music_django_api_rest/music_project
      run: |
        python manage.py makemigrations && python manage.py migrate

    - name: Iniciar servidor Django
      working-directory: music_django_api_rest/music_project
      run: |
        nohup python manage.py runserver &

    - name: Aguardar servidor iniciar
      run: |
        sleep 10

    - name: Teste de requisição POST
      run: |
        curl -X POST http://localhost:8000/api/musics/ \
        -H "Content-Type: application/json" \
        -d '{"title": "New Music", "artist": "Test Artist", "album": "Test Album"}'

    - name: Teste de requisição GET
      run: |
        curl http://localhost:8000/api/musics/

Elaborado por Mateus Schwede
ubsocial.github.io