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?
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:
-
contexté um objeto que contém o contexto da execução do fluxo de trabalho. -
coreé uma referência ao pacote @actions/core . -
ioé uma referência ao pacote @actions/io .
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 :
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}))