Apesar da Github ser mais conhecida como uma plataforma de open source e armazanamento de código, ela oferece uma variedade de ferramentas interessantes, como o Co-pilot que apresentei no meu último artigo.
Hoje vou apresentar para vocês o GitHub Actions, uma ferramenta de CI/CD (continuous integration/continuous delivery), que te permite automatizar seu workflow ou fluxo de trabalho, em português.
CI/CD: práticas combinadas de integração contínua e entrega contínua
Workflow: Ou fluxo de trabalho, é a seqüência de passos necessários para se automatizar processos de negócio, de acordo com um conjunto de regras
Pra que serve?
GittHub Actions permite que você automatize seus fluxos de trabalho em cada etapa do processo de desenvolvimento, desde a integração até a distribuição e a implantação.
Isso te permiti reduzir efetivamente o tempo gasto entre a ideia inicial e a aplicação dessa ideia.
O que são as Actions?
As actions, ou ações, do GitHub Actions são scripts empacotados para automatizar tarefas em um fluxo de trabalho na GitHub.
O GitHub Actions pode ser configurado para disparar fluxos de trabalho complexos com base nas suas necessidades. Assim você obtem um fluxo de trabalho automatizado, confiável e sustentável que resulta na diminuição significativa do tempo de desenvolvimento.
Criando seu primeiro Fluxo de trabalho
Como estamos falando sobre Github no Dev.to, o exemplo que vou mostrar para vocês permite que você exiba no seu READ.me do Github os 5 últimos artigos que você postou no Dev.to.
- Dentro do seu READ.me, adicione o código abaixo e salve:
# Blog posts
<!-- BLOG-POST-LIST:START -->
<!-- BLOG-POST-LIST:END -->
P.S. eu usei o título Blog posts mas você pode usar o que quiser depois do # nessa primeira linha.
- Agora, nesse repositório, crie uma pasta com o nome .github e dentro dela uma outra pasta chamada workflows, aqui é aonde você vai colocar suas actions:
- Vamos criar nossa action que vai atualizar nossa READ.me com os ultimos artigos do nosso dev.to, nesse exemplo eu chamei o meu arquivo de blog-post-workflow, mas você pode dar o nome que quiser.
As actions são arquivos yml, então não esqueça de colocar o .yml após o nome quando for criar esse arquivo.
- Agora vamos escrever nossa Action, colando o seguinte código no arquivo
blog-post-workflow.yml
(código inspirado nesse repo):
name: Latest blog post workflow #nome de sua escolha
on:
schedule: # Roda fluxo de trabalho automaticamente
- cron: '0 * * * *' # Roda a cada uma hora
workflow_dispatch: # Roda fluxo de trabalho manualmente pelo Github Actions
jobs:
update-readme-with-blog:
name: Update this repo's README with latest blog posts
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Pull in dev.to posts
uses: gautamkrishnar/blog-post-workflow@master
with:
feed_list: "https://dev.to/feed/pachicodes" # Troque pachicodes pelo seu usuário.
A anatomia de uma Action
No exemplo acima temos:
name: O nome da sua action, a sua escolha
on: o código dentro do on vai ditar quando essa action será rodada, nesse caso usamos schedule, para que ela rode automaticamente em um certo horário. Já o - cron: '0 * * * *' diz que nossa action rodará a cada hora completa.
jobs: Os “trabalhos” que essa action vai rodar. Aqui temos o name explicando o que a action faz, runs-on para definir aonde vai rodar.
Por último, ainda dentro de jobs, temos os steps, que são os passos que essa action vai seguir, com o nome do step e o uses.
Nesse exemplo primeiro estamos fazendo um Checkout e depois pegando os artigos do Dev.to.
Você pode aprender em mais detalhes aqui na documentação oficial, está em português.
Como essa Action roda a cada hora, você provavelmente não vai ver o resultado imetiatamente, mas assim que rodar, você terá uma lista como essa:
Conclusão
O Github Actions é uma ferramenta super útil de automatização, que você e seu time podem usar para uma variedade de fluxos de trabalhos:
Criar release de versão, rodar testes, fazer deploy, instalar dependencias, atualizar seu perfil no GitHub e muito mais.
Se você já usa Github Actions, comenta aqui e me fala quais os usos principais que você e/ou seu time tem para essa ferramenta.
E se você ainda não segue a página oficial da GitHub Brasil no twitter, segue lá :D