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?

O Script GitHub é 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 quando você escreve scripts.

Qual é Octokit?

Octokit é a coleção oficial de clientes para a API do GitHub. Um desses clientes, rest.js, fornece acesso JavaScript à interface REST do GitHub.

Você sempre foi capaz de automatizar a API do GitHub via octokit/rest.js, embora possa ser uma tarefa difícil configurar e manter corretamente. Uma das maiores vantagens na utilização do GitHub Script é que este processa toda esta sobrecarga para que o utilizador possa começar a utilizar a API de imediato. Não precisa de se preocupar com as dependências, configuração ou até a autenticação.

O que pode fazer o octokit/rest.js?

A resposta mais curta é que pode fazer virtualmente tudo o que diz respeito à automatização do GitHub. Além de ter acesso a confirmações, solicitações pull e problemas, você também tem acesso a usuários, projetos e organizações. Você pode recuperar listas de arquivos comumente usados, como licenças ou .gitignore arquivos populares. Também pode compor Markdown.

Se você está criando algo que integra o GitHub, as chances são boas de que você encontrará o que está procurando na documentação completa do octokit /rest.js.

Em que é que a utilização 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.

Assim, em vez de

octokit.issues.createComment({

você usa

github.issues.createComment({.

Além da variável github, também são fornecidas as seguintes variáveis:

Criando um fluxo de trabalho que usa o script GitHub

As ações do GitHub Script podem ser incluídas num fluxo de trabalho tal como qualquer outra ação. Como resultado, você pode até misturá-los com fluxos de trabalho existentes, como aqueles que você já configurou para CI/CD. Para ilustrar a conveniência do GitHub Script, agora você construirá um fluxo de trabalho completo que o usa para postar automaticamente um comentário para todos os problemas recém-criados.

Você começará com uma cláusula name e uma cláusula on que especificam que o fluxo de trabalho é executado quando os 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 Script do GitHub.

      - 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 o GitHub Actions pode realmente ajudar a automatizar os eventos que ocorrem em seus repositórios. Imagine que um visitante do repositório abriu uma nova edição contendo informações sobre um bug crítico. Você pode querer agradecê-los por trazer 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 sobre o problema, pode automatizar o processo de agradecer sempre aos visitantes.

Usando ações/github-script@0.8.0

A actions/github-script@0.8.0 ação, também designada por Script GitHub, faz todo o trabalho árduo na sua integração com a API do GitHub.

Essa ação requer um github-token que é fornecido em tempo de execução para que as solicitações sejam autenticadas. Isto será efetuado automaticamente, para que possa utilizar o código como está.

O script parâmetro pode ser praticamente qualquer JavaScript que use o cliente octokit/rest/js armazenado no github. Neste caso, é só uma linha (dividida em múltiplas linhas para melhor legibilidade) que cria um comentário codificado.

Depois que o fluxo de trabalho é executado, o Script do GitHub registra o código executado para revisão na guia Ações :

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

Execução a partir de um ficheiro separado

Às vezes, você pode precisar usar uma quantidade significativa de código para atender ao seu cenário de script do GitHub. Quando isso acontece, pode manter o script num ficheiro separado e consultá-lo a partir do fluxo de trabalho, em vez de colocar todo o script inline.

Aqui está um exemplo de um fluxo de trabalho simples que usa 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}))

Veja mais exemplos do GitHub Script.