Разработка пользовательских GitHub Actions
Научитесь создавать собственные повторно используемые действия с помощью JavaScript или Docker для расширения возможностей GitHub Actions.
«Разработка пользовательских GitHub Actions» — бесплатный урок CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CI/CD with GitHub Actions & DevOps Pipelines, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Расширение GitHub Actions
Что делать, если в рабочем процессе нужна конкретная задача, которую GitHub Actions не предлагает изначально? Или если Вы хотите повторно использовать сложную логику?
Пользовательские действия позволяют создавать собственные повторно используемые инструменты для рабочих процессов. Это небольшие программы, выполняющие конкретную задачу и адаптированные под Ваши потребности.
Преимущества настройки
Пользовательские действия дают несколько преимуществ в рабочих процессах CI/CD:
- Повторное использование: Напишите один раз и используйте во многих рабочих процессах и репозиториях.
- Стандартизация: Обеспечьте единообразие процессов во всей организации.
- Инкапсуляция: Спрячьте сложную логику за простым интерфейсом.
- Интеграция: Взаимодействуйте с конкретными внутренними инструментами или API.
JavaScript или Docker?
GitHub Actions поддерживает два основных способа создания пользовательских действий:
- Действия JavaScript: Написаны на JavaScript или TypeScript и выполняются непосредственно на машине исполнителя. Быстрый и удобный вариант для простых задач.
- Действия в контейнере Docker: Среда и код помещаются в образ Docker. Идеальный вариант для действий, которым нужны определенные зависимости или языки.
Определение действия
Каждому пользовательскому действию нужен файл action.yml в корневом каталоге. Этот файл YAML служит манифестом и сообщает GitHub Actions сведения о действии:
nameиdescription: Что делает действие.inputs: Данные, которые принимает действие.outputs: Данные, которые создает действие.runs: Способ выполнения действия, например файл JavaScript или образ Docker.
Пример простого действия JS
Рассмотрим простое действие JavaScript. Вам понадобятся файлы action.yml и index.js. Файл action.yml определяет метаданные действия и среду его выполнения.
# action.yml
name: 'Hello World Action'
description: 'Greets a person using a custom message'
inputs:
who-to-greet:
description: 'Who to greet'
required: true
default: 'World'
outputs:
greeting-message:
description: 'The greeting message generated'
runs:
using: 'node16'
main: 'index.js'Написание JavaScript-кода
Файл index.js содержит фактическую логику. Мы используем набор инструментов @actions/core, чтобы получать входные данные и задавать выходные данные.
Попробуйте запустить этот простой фрагмент JavaScript, чтобы понять, как работают входные и выходные данные, даже вне полноценного рабочего процесса:
// index.js (simplified for demonstration)
const core = require('@actions/core');
try {
const name = core.getInput('who-to-greet');
const message = `Hello, ${name}!`;
console.log(message);
core.setOutput('greeting-message', message);
} catch (error) {
core.setFailed(error.message);
}
// A standalone runnable example to demonstrate core logic
function runSimpleGreeting(inputName) {
const name = inputName || 'World';
const message = `Hello from runnable JS, ${name}!`;
return message;
}
console.log(runSimpleGreeting('CoddyKit'));
console.log(runSimpleGreeting());Основы действий Docker
Для более сложных сред действия в контейнерах Docker обладают широкими возможностями. Они содержат Dockerfile, который определяет образ контейнера и включает все необходимые зависимости.
В файле action.yml будет указана ссылка на этот образ, чтобы GitHub Actions мог создать и запустить его.
# action.yml for Docker action
name: 'Docker Hello World'
description: 'Greets a name from within a Docker container'
inputs:
who-to-greet:
description: 'Who to greet'
required: true
default: 'Docker'
outputs:
greeting-message:
description: 'The greeting message from Docker'
runs:
using: 'docker'
image: 'Dockerfile'Среда Вашего действия
Файл Dockerfile указывает базовый образ, устанавливает зависимости и определяет точку входа действия. Это гарантирует выполнение действия в единообразной контролируемой среде.
# Dockerfile
FROM alpine:3.16
LABEL "com.github.actions.name"="Docker Hello World"
LABEL "com.github.actions.description"="Greets a name from within a Docker container"
LABEL "com.github.actions.icon"="globe"
LABEL "com.github.actions.color"="blue"
# Copy your script into the container
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]Создание скриптов для действий Docker
Внутри контейнера Docker скрипт точки входа, например entrypoint.sh, получает входные данные в виде переменных среды с префиксом INPUT_. Он задает выходные данные, записывая их в файл, указанный переменной среды $GITHUB_OUTPUT.
#!/bin/sh -l
# entrypoint.sh
echo "Hello from Docker, $INPUT_WHO_TO_GREET!"
GREETING="Hello from Docker, $INPUT_WHO_TO_GREET!"
echo "greeting-message=$GREETING" >> "$GITHUB_OUTPUT"Рекомендации по созданию действий
При разработке пользовательских действий учитывайте следующие рекомендации, чтобы инструменты были надежными и удобными в сопровождении:
- Управление версиями: Используйте семантическое версионирование, например
v1иv2, для стабильности. - Тестирование: Тщательно тестируйте действие локально и в рабочих процессах.
- Обработка ошибок: Реализуйте понятные сообщения об ошибках и корректное завершение при сбоях.
- Безопасность: Проверяйте входные данные и не раскрывайте конфиденциальную информацию.
- Документация: Предоставьте понятные инструкции по использованию в README.
Проверка типа действия
Вам нужно создать пользовательское действие GitHub, которому требуется конкретная библиотека Python, не установленная предварительно в стандартных исполнителях GitHub Actions. Какой тип действия обычно лучше всего подходит для этого случая?
Итоги: пользовательские действия
Мы рассмотрели расширение GitHub Actions путем создания собственных пользовательских действий. Вы узнали о двух основных типах: действиях JavaScript и действиях в контейнерах Docker, а также о важной роли файла action.yml. Мы также разобрали определение входных и выходных данных и основной логики каждого типа, а также рекомендации по разработке.
Пользовательские действия особенно полезны для повторного использования и стандартизации в рабочих процессах CI/CD!
Часто задаваемые вопросы
Урок «Разработка пользовательских GitHub Actions» бесплатный?
Да — полный текст урока «Разработка пользовательских GitHub Actions» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CI/CD with GitHub Actions & DevOps Pipelines, подпишись на CoddyKit PRO. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Чему я научусь в уроке «Разработка пользовательских GitHub Actions»?
Научитесь создавать собственные повторно используемые действия с помощью JavaScript или Docker для расширения возможностей GitHub Actions. Ты практикуешь CI/CD with GitHub Actions & DevOps Pipelines с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CI/CD with GitHub Actions & DevOps Pipelines?
Предыдущий опыт не требуется. CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Разработка пользовательских GitHub Actions»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CI/CD with GitHub Actions & DevOps Pipelines?
Да. Каждый урок CI/CD with GitHub Actions & DevOps Pipelines включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Разработка пользовательских GitHub Actions
- Автономные исполнители для локальной инфраструктуры
- Интеграция с корпоративными системами
- Составные действия и публикация в Marketplace