Skip to content

Latest commit

 

History

History
153 lines (96 loc) · 7.18 KB

File metadata and controls

153 lines (96 loc) · 7.18 KB

Parte 3: Integração Contínua (Continuous Integration - CI)

Nota: A seção a seguir necessita que você tenha criado um repositório na sua própria conta. Você precisa garantir que tenha acesso a página do Github Actions.

A seguir vamos iniciar um novo projeto nos seus repositórios pessoais (não os da organização github-craftwork) usando o template github-craftwork/ci-template. Os conteúdos do projeto foram obtidos da introdução Plurasight, que descobre qual o número da semana atual é hoje.

Criar CIs pull requests

Para desenvolver um processo de Workflow no GitHub que aplica Actions para automatizar o processo de integração contínua, você pode começar adicionando um arquivo de workflow inicial no diretório .github. Na tela inicial do seu repositório, encontre e navegue até a aba Actions.

Na página de Actions você deve ver 3 opções de workflow Python. Encontre a opção Python Application workflow e clique no botão Set up this workflow.

Nota: O repositório actions/starter-workflows contém muitos arquivos workflow de amostras.

O assistente de Workflow Actions irá instalar a amostra do workflow selecionado no seu repositório, dentro do diretório .github. Você pode editar o nome do arquivo e o seu conteúdo na tela fornecida.

Screenshot 2019-10-09 17 02 03

Faça commit do arquivo pythonpackage.yml para o branch master para completar este processo de criação do nosso primeiro workflow de CI.

O diretório .github/workflows/ irá incluir o conteúdo abaixo:

name: Python application

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Set up Python 3.7
      uses: actions/setup-python@v1
      with:
        python-version: 3.7
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    - name: Lint with flake8
      run: |
        pip install flake8
        # stop the build if there are Python syntax errors or undefined names
        flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
        # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
        flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
    - name: Test with pytest
      run: |
        pip install pytest
        pytest

Observe que o nosso workflow está rodando com uma estratégia de 3 versões de python. Será importante saber isso posteriormente.

Devido ao fato da nova Action de CI estar rodando a cada push, você já deve ter um workflow rodando.

python package workflow

Perceba que precisaremos escrever um teste para rodar como parte do nosso CI. Encontre o arquivo 00_empty_test.py com o conteúdo abaixo:

# tests/00_empty_test.py
def test_empty():
    """
    PyTest tests are callables whose names start with "test"
    (by default)

    It looks for them in modules whose name contains "test"
    (by default)
    """
    pass

O resultado do último push para o branch master deve ser parecido com o desta imagem:

Adicione o teste acima utilizando a UI, mas ao invés de commitar diretamente no branch master, abra um pull request para disparar o workflow de CI novamente.

Nós não criamos um pull request até agora, então por favor perceba que você pode ver todos os workflows sendo disparados pelo GitHub Check Suite. Todas as Action dos Workflows estão sendo alimentadas pela API desta funcionalidade. E como estamos falando do assunto, o bot do GitHub Actions é construído usando o framework GitHub App, que já ficou popular entre um grande número do nosso Marketplace e ecossistema de parceiros.

CI pass

Assim que todos os testes tiverem passado, faça merge do pull request e vamos seguir em frente para completar o próximo passo.

Parte 3b: Rascunho e Auto publicar uma versão release

CI é frequentemente acoplada com a ideia de Entrega contínua (do inglês Continuous Delivery - CD). As próximas duas seções cobrirão automatizar seus projetos com gerenciamento de versões release.

Adicione seu workflow de release Você pode usar a Action do Github para gerar rascunhos de Releases em um Workflow de Actions através da configuração de um arquivo YAML para workflow, ex: .github/workflows/release-management.yml, com o seguinte conteúdo:

name: Release Management

on:
  push:
    # branches to consider in the event; optional, defaults to all
    branches:
      - master

jobs:
  update_draft_release:
    runs-on: ubuntu-latest
    steps:
      # Drafts your next Release notes as Pull Requests are merged into "master"
      - uses: toolmantim/release-drafter@v5.2.0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Uma vez que você tenha adicionado o Rascunho para Releases ao seu repositório, ele deve ser habilitado adicionando um arquivo de configuração .github/release-drafter.yml para cara repositório.

Adicione o template de release Crie o seguinte arquivo .github/release-drafter.yml em um repositório e faça commit na sua branch master:

template: |
  ## What’s Changed

  $CHANGES

Faça uma mudança Navegue até qualquer arquivo no repositório and mude o conteúdo para algo direrente.

Conforme os pull requests são mergeados, um rascunho da release é mantido atualizado com as mudanças, pronto para ser publicado quando você estiver pronto:

Screenshot of generated draft release

Para testar este workflow, edite o seu rascunho usando a tag existente que foi criada para ele. Uma vez concnluído, siga em frente para o próximo passo no projeto para concluir esta etapa.

Publicar o seu pacote python Você pode publicar seu pacote python usando o iniciador de templates no assistente de Actions.

python package workflow

Continue para a Parte 4