# Removendo environments do Github

Uma das *pequenas* coisas que afetam bastante o dia a dia é quando uma pequena ação tem um resultado particularmente destrutivo e *irreversível*. Deixar sua xícara favorita cair pode ser uma dessas ações, caso a xícara quebre, suas imperfeições estéticas podem estragar a beleza que a xícara tinha.
Deixando de lado as xícaras e a subjetividade da beleza, o Github implementou para repositórios que utilizam ferramentas de deploy externas os "*Environments*" uma aba especial do repositório dedicada a exibir um log dos deploys feitos por aquela ferramenta que contém um problema *particularmente destrutivo e (quase) irreversível*.

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623627524759/DEm5s-BlC.png)

## A problemática
É difícil de início perceber a ligação entre essa feature e uma ação irreversível, **até que seja tarde demais**. 
Brincadeiras a parte, quando se usa um serviço de deploy integrado ao Github e ele adiciona um environment ao seu repositório, não existe uma maneira simples de removê-lo. Caso a adição tenha sido intencional e desejada, não existem problemas, mas se por alguma razão você adicionou o serviço de deploy ao repositório errado, não gostou do serviço e deploy, não quer mais utilizar o serviço ou simplesmente não quer a aba de deploy no seu repositório, então o Github não oferta uma maneira simples e intuitiva de solucionar seu problema.

Na data de escrita desse post, não existia nenhuma forma pela interface gráfica do Github de remover os environments. Então uma vez adicionados *já era, perdeu-se*...

...Ou era o que eu pensava, **existe uma solução**, não é trivial, mas resolve o problema.

## A Solução
O Github possui uma série de apis robustas e confiáveis, possuindo inclusive apis que permitem a remoção de environments (o porquê disso não ter sido adicionado à interface é um mistério).

O colega @[Spersico](@spersico) fez um bom trabalho em automatizar as chamadas às apis e deixou disponível [nesse snippet](https://stackblitz.com/edit/github-deployment-clearer?file=index.js) do Stackblitz.

Para remover então os environments do seu repositório alguns passos são necessários:


- Primeiramente, acesse o [snippet](https://stackblitz.com/edit/github-deployment-clearer?file=index.js) de remoção de environments.


![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623630231872/aoFfHc0F5.png)

- No topo do snippet, existem alguns parâmetros que precisam ser preenchidos (***TOKEN, REPO e USER_OR_ORG***, no meu caso, quero remover os environments do meu repositório chamado "*torugo-chatbot*" da minha conta "*victormagalhaess*"

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623630480266/4jS2YtDSd.png)


![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623630583246/rC7eGCcDr.png)

- O próximo passo antes de executar o snippet é adicionar o parâmetro ***TOKEN***, para isso, é necessário ir até a área de criação de tokens do seu Github: [https://github.com/settings/tokens/new](https://github.com/settings/tokens/new) e criar um novo token com permissão de ***repo-deployment***:


![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623631028223/vG5zl2vsY.png)

**Lembre-se de copiar o token, é impossível ver ele novamente sem ter que regerá-lo**
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623631181101/LuZmpo7UI.png)

- Após copiar o token, cole-o no snippet: 
![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623631453225/TpyMOPS3B.png)

Imediatamente ao fazer isso, se todos os parâmetros foram passados corretamente, a lateral do snippet deve exibir a seguinte mensagem mostrando que os environments foram removidos:

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623631573525/R9DXP1CTb.png)

E ao voltar ao seu repositório, o campo de environments terá desaparecido:

**Antes:**

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623631747017/vesCnS3Pb.png)

**Depois:**

![image.png](https://cdn.hashnode.com/res/hashnode/image/upload/v1623631806480/qja1ZtFrp.png)

## Conclusão
Dessa forma, você poderá controlar e gerenciar a exibição dos environments nos seus repositórios. Caso você não se sinta confortável em executar o snippet pelo Stackblitz, você pode fazer download do projeto e executar localmente. 
Uma outra dica para manter sua segurança é revogar o token após finalizar a remoção de todos os environments que você desejar.

Espero que tenha sido útil pra você esse post e que ajude na sua organização e satisfação com seus repositórios no Github! 🎉🎃

