O que é o GitHub Script?

Concluído

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:

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:

Captura de tela de um fluxo de trabalho do GitHub Script concluído.

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.