Что такое GitHub Script?

Завершено

Здесь мы обсудим, как можно использовать GitHub Script, чтобы автоматизировать общие процессы GitHub с помощью рабочих процессов GitHub Actions.

Что такое GitHub Script?

GitHub Script — действие, которое предоставляет клиент octokit, прошедший проверку подлинности, и которое позволяет записывать JavaScript непосредственно в файл рабочего процесса. Он выполняется в Node.js, поэтому при написании сценариев доступны возможности этой платформы.

Что такое octokit?

octokit — это официальная коллекция клиентов для API GitHub. Один из этих клиентов, rest.js, предоставляет доступ JavaScript к интерфейсу REST GitHub.

Вы всегда смогли автоматизировать API GitHub с помощью octokit/rest.js, хотя это может быть делом для правильной настройки и обслуживания. Одним из замечательных преимуществ использования GitHub Script является то, что он снимает все эти издержки, чтобы вы могли сразу приступить к использованию API. Не нужно беспокоиться о зависимостях, конфигурации и даже проверке подлинности.

Что может делать octokit/rest.js?

Короткий ответ — он может выполнять практически любые действия в плане автоматизации GitHub. У вас есть доступ не только к фиксациям, запросам на включение изменений и проблемам, но также и к пользователям, проектам и организациям. Вы можете получить списки часто используемых файлов, например популярные лицензии или файлы .gitignore. Можно даже отобразить Markdown.

Если вы создаете что-то, что интегрирует GitHub, шансы хороши, что вы найдете то, что вы ищете в полной документации octokit/rest.js.

Как использовать GitHub Script, отличный от octokit/rest.js?

Основное различие в использовании заключается в том, что GitHub Script предоставляет вам клиент octokit/rest.js githubс именем предварительной проверки подлинности.

Вместо этого:

octokit.issues.createComment({

Вы будете использовать:

github.issues.createComment({

Помимо переменной github, также предоставляются следующие переменные:

Создание рабочего процесса, использующего GitHub Script

Действия GitHub Script помещаются в рабочий процесс, как и любое другое действие. В результате вы даже можете смешивать их с существующими рабочими процессами, например уже настроенными для CI/CD. Чтобы продемонстрировать его удобство, мы создадим полный рабочий процесс, использующий GitHub Script для автоматической публикации комментария ко всем вновь созданным проблемам.

Начнем с name и предложения on, которое указывает, что этот рабочий процесс выполняется при создании проблем.

name: Learning GitHub Script

on:
  issues:
    types: [opened]

Затем мы определим задание comment, которое пошагово выполняется в Linux.

jobs:
  comment:
    runs-on: ubuntu-latest
    steps:

В этом случае существует только один шаг: действие скрипта 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!!!"
            })

Использование GitHub Actions может помочь автоматизировать события, происходящие в репозиториях. Представьте, что посетитель репозитория открыл новую проблему, содержащую сведения о критической ошибке. Вы можете поблагодарить их за то, что вы обратили внимание на это; Однако эта простая задача может стать подавляющей, так как ваш репозиторий привлекает больше посетителей. Автоматизируя комментарий о проблеме, вы можете автоматизировать процесс благодарения посетителей каждый раз.

Использование actions/github-script@0.8.0

Действие actions/github-script@0.8.0, также известное как GitHub Script, выполняет всю тяжелую работу по интеграции с API GitHub.

Для этого действия требуется github-token , чтобы запросы прошли проверку подлинности. Это выполняется автоматически, поэтому вы можете использовать этот код "как есть".

Параметр script может быть практически любым JavaScript, использующим клиент octokit/rest/js, хранящийся в github. В данном случае это всего лишь одна строка (разбивается по нескольким строкам для удобочитаемости), которая создает зафиксированный комментарий.

После запуска рабочего процесса GitHub Script регистрирует код, который он выполнил для проверки на вкладке "Действия ".

Screenshot of a completed workflow using GitHub Script.

Запуск из отдельного файла

Иногда может потребоваться использовать значительный код для выполнения сценария скрипта GitHub. В этом случае сценарий можно разместить в отдельном файле и ссылаться на него из рабочего процесса вместо того, чтобы размещать весь сценарий как встроенный код.

Ниже приведен пример простого рабочего процесса, который делает это:

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}))

Ознакомьтесь еще с несколькими примерами GitHub Script.