O que é o GitHub Script?
Nesta unidade, você aprenderá como o GitHub Script permite automatizar processos comuns do GitHub usando fluxos de trabalho do GitHub Actions.
O que é o GitHub Script?
GitHub Script é uma ação que fornece um cliente Octokit autenticado e permite que o JavaScript seja escrito diretamente em um arquivo de fluxo de trabalho. Ele é executado em Node.js, então você tem o poder dessa plataforma disponível ao escrever scripts.
O que é o Octokit?
Octokit é a coleção oficial de clientes para a API do GitHub. Um desses clientes, o rest.js, fornece acesso em JavaScript à interface REST do GitHub.
Você sempre conseguiu automatizar a API do GitHub via octokit/rest.js, embora possa ser uma tarefa difícil configurar e manter corretamente. Uma das grandes vantagens de usar o GitHub Script é que ele processa toda essa sobrecarga para que você possa começar a usar a API imediatamente. Você não precisa se preocupar com dependências, configurações ou até mesmo autenticação.
O que o octokit/rest.js faz?
A resposta mais simples é "praticamente qualquer coisa em relação à automação do GitHub". Além de ter acesso a confirmações, solicitações de pull e problemas, você também tem acesso a usuários, projetos e organizações. É possível recuperar listas de arquivos comumente usados, como licenças populares ou arquivos .gitignore. Você pode até mesmo renderizar o Markdown.
Se você estiver criando algo que integra o GitHub, há boas chances de encontrar o que procura na documentação completa do octokit/rest.js.
O uso do GitHub Script é diferente do octokit/rest.js?
A principal diferença no uso é que o GitHub Script fornece um cliente octokit/rest.js pré-autenticado chamado github.
Então, em vez de
octokit.issues.createComment({
você usa
github.issues.createComment({.
Além da variável github, as seguintes variáveis também são fornecidas:
-
contexté um objeto que contém o contexto da execução do fluxo de trabalho. -
coreé uma referência ao pacote @actions/núcleo . -
ioé uma referência ao pacote @actions/io .
Criando um fluxo de trabalho que usa o Script do GitHub
As ações do GitHub Script se encaixam em um fluxo de trabalho como qualquer outra ação. Como resultado, você pode até mesmo misturá-los com fluxos de trabalho existentes, como aqueles que você já pode ter configurado para CI/CD. Para ilustrar a conveniência do GitHub Script, você agora construirá um fluxo de trabalho completo que o utiliza para postar automaticamente um comentário em todas os problemas recém-criados.
Você começará com um name e uma on cláusula que especifica que o fluxo de trabalho é executado quando problemas são abertos:
name: Learning GitHub Script
on:
issues:
types: [opened]
Em seguida, você definirá um trabalho chamado comment que é executado no Linux com uma série de etapas:
jobs:
comment:
runs-on: ubuntu-latest
steps:
Nesse caso, há apenas uma etapa: a ação do GitHub Script.
- uses: actions/github-script@0.8.0
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "🎉 You've created this issue comment using GitHub Script!!!"
})
Usar GitHub Actions realmente pode ajudar a automatizar os eventos que ocorrem em seus repositórios. Imagine que um visitante do repositório abriu um novo problema contendo informações sobre um bug crítico. Você pode querer agradecê‑los por trazerem o bug à sua atenção, mas essa tarefa simples pode se tornar esmagadora à medida que seu repositório atrai mais visitantes. Ao automatizar um comentário em problemas, você pode automatizar o processo de agradecer aos visitantes a cada vez.
Usando actions/github-script@0.8.0
A ação actions/github-script@0.8.0, também conhecida como GitHub Script, realiza todo o trabalho difícil para a sua integração com a API do GitHub.
Essa ação requer um github-token fornecido no runtime para que as solicitações sejam autenticadas. Isso é feito automaticamente para que você possa usar esse código no estado em que se encontra.
O parâmetro script pode ser praticamente qualquer JavaScript que usa o cliente octokit/rest/js armazenado em github. Nesse caso, é apenas uma linha (dividida em várias linhas para facilitar a leitura) que cria um comentário codificado.
Após a execução do fluxo de trabalho, o GitHub Script registra o código que foi executado para revisão na aba Actions:
Executar em um arquivo separado
Às vezes, pode ser necessário usar uma quantidade significativa de código para atender ao seu cenário do GitHub Script. Quando isso acontece, você pode manter o script em um arquivo separado e fazer referência a ele no fluxo de trabalho em vez de colocar todo o script embutido.
Aqui está um exemplo de um fluxo de trabalho simples que utiliza essa técnica:
on: push
jobs:
echo-input:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/github-script@v2
with:
script: |
const path = require('path')
const scriptPath = path.resolve('./path/to/script.js')
console.log(require(scriptPath)({context}))
Confira mais exemplos de Script do GitHub.