Что такое GitHub Script?
В этом уроке вы узнаете, как GitHub Script позволяет автоматизировать распространенные процессы GitHub с помощью рабочих процессов GitHub Actions.
Что такое GitHub Script?
Скрипт GitHub — это действие, которое предоставляет прошедший проверку подлинности клиент 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, также предоставляются следующие переменные:
-
context— это объект, содержащий контекст выполнения рабочего процесса. -
core— ссылка на пакет @actions/core . -
io— это ссылка на пакет @actions/io .
Создание рабочего процесса, использующего скрипт GitHub
Действия GitHub Script помещаются в рабочий процесс, как и любое другое действие. В результате можно даже смешать их с существующими рабочими процессами, например с уже настроенными для CI/CD. Чтобы проиллюстрировать удобство скрипта GitHub, теперь вы создадите полный рабочий процесс, который использует его для автоматической публикации комментария ко всем вновь созданным проблемам.
Вы начнете с 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 записывает код, который он выполнил для проверки на вкладке "Действия ":
Запуск из отдельного файла
Иногда может потребоваться использовать значительный объем кода для удовлетворения сценария скрипта 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.