Como atualizar automaticamente as dependências do seu repositório com Dependabot no Github [PT/BR]
Tags: beginners, programming, tutorial
Published: 2022-08-30 16:33:41

Você já sofreu com erros de dependencias desatualizadas depois de instalar o projeto? 
Ou, usando Dependabot, você deixou acumular alertas de atualizações por meses?

Então aqui vai um pequeno tutorial que vai te ajudar!
 
Mas primeiro…

## O que é o Dependabot?

De acordo com sua própria descrição, Dependabot é um bot que nos ajuda em manter as dependências dos nossos projetos atualizadas. Todo dia, ele checa se todas as dependências estão desatualizadas e abre uma PR individualmente toda vez que encontrar. Você então faz o review, o merge, e volta a trabalhar com o projeto mais seguro.

### Como instalar o Dependabot no meu repositório

Dentro do seu repositório no Github, vá em: 
**_Settings_** > **_[ Security ]_** > **_Code security and analysis
_** e então, ative o **_Dependabot version updates_**.
Clique em **_Configure_** e então o código que você verá será mais o menos assim:

```
version: 2
updates:
  - package-ecosystem: npm
    directory: '/'
    schedule:
      interval: daily
      time: '02:00'
    open-pull-requests-limit: 10
```
Explicando o que significa, ele irá diariamente verificar as dependências as 2h00 (UTC 0).

Aqui uma configuração **BONUS** caso você queira alterar a branch em que ele irá abrir as PRs e/ou alterar as labels dessas PRs. Você pode inserir o código no fim do código acima.

```
    # BONUS
    # Raise pull requests for version updates
    # to pip against the `develop` branch
      target-branch: "dev"
    # Labels on pull requests for version updates only
		  labels:
		  - "dependecies"
```

A raiz do seu repositório irá ficar assim:

![Repository tree](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bdhizneaye3uibehzw8b.png)


Pronto, seu projeto já está com o Dependabot configurado. Então diariamente será analisado se alguma dependência esta desatualizada.

Só tem um problema: se você não fizer o review e o merge, ele continua sendo apenas uma PR.


## Como automatizar o merge do Dependabot

Com o Github Actions nós conseguimos automatizar esse processo de "mergear" as PRs criadas pelo Dependabot.

Vá para **_Actions_** dentro do repositorio Github do projeto e depois clique em **_New Workflow_**.
Existem vários modelos de Actions prontos. Você pode escolher qualquer um e então delete o conteúdo e cole esse código:
```
name: 'Dependabot Automerge - Action'

on:
  pull_request:

permissions:
  pull-requests: write
  issues: write

jobs:
  worker:
    runs-on: ubuntu-latest

    if: github.actor == 'dependabot[bot]'
    steps:
      - name: 'Wait for status checks'
        id: waitforstatuschecks
        uses: WyriHaximus/github-action-wait-for-status@v1.2.0
        with:
          ignoreActions: worker,WIP
          checkInterval: 60
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: 'Automerge'
        uses: pascalgn/automerge-action@v0.11.0
        if: steps.waitforstatuschecks.outputs.status == 'success'
        env:
          MERGE_LABELS: ''
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          MERGE_DELETE_BRANCH: true
```
Com isso, toda vez que um pull request for aberto pelo Dependabot, será verificado primeiramente se não houve nenhum conflito no projeto com a atualização dessa dependência e dar merge caso tudo esteja certo.

Seu repositório ficará assim:

![Repository tree with all config](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53flxh5khdhnvxopvrlm.png)


Pronto, seu projeto agora atualiza todas suas dependências automaticamente!