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.
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:
Link Github API REST Django de músicas: Acesse.
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