[«28-github-Actions»] (серия 26 деталей)
Github Actions — это мощная платформа, которая дает вашей команде переходить от кода в облако, и все это от комфорта ваших репозиториев.
В этом посте я кратко пройду, как вы можете построить многоразовое действие GitHub, используя DockerFile.
Если вы хотите подробно рассмотреть Действия GitHub: Напишите контейнер Docker курс.
Начинать
Большинство действий GitHub-это репо с открытым исходным кодом, что позволяет легко искать и открывать в сообщество действий. Чтобы создать свои собственные действия, вы начнете с создания репозитория GitHub, и в этом репо вам понадобится Dockerfile. Вам не нужно быть экспертом в Docker, но на высоком уровне Docker позволит запустить ваш код в качестве сценария.
В этом действии изображение Docker (альпийское) предоставит среду для запуска сценария Bash. До сих пор мы можем поместить немного докеров в Dockerfile и двигаться дальше.
Один из них, чтобы указать, — это создание точки входа. А intrypoint.sh
Будет то место, где мы пишем наш удар. Это может быть index.rb
или index.js
Если другой язык предпочтительнее. Самая большая вещь, которая нам нужно, — это исполняемый файл для точки входа.
Я также хочу объяснить исполняемый файл и что это значит. Это просто означает, что я могу запустить это из командной строки только с помощью пути файла. Это полезно для легких сценариев. Есть и другие языки, на которых мы могли бы написать это, чтобы сделать исполняемый файл, как пример Go, и ради объяснения, и тот факт, что у меня уже был написан этот код в Mash, мы собираемся придерживаться Bash сегодня.
// Dockerfile FROM alpine RUN apk add --no-cache jq COPY entrypoint.sh /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]
Приведенный ниже код Bash получает несколько элементов из Github_event_path , одна из стандартных переменных среды в бегуне действий. Код также включает в себя условное для органа комментариев, подтверждающее, что он включает в себя .take
ключевое слово.
// entrypoint.sh #!/bin/sh BODY="$(jq '.comment.body' $GITHUB_EVENT_PATH)" ISSUE_NUMBER="$(jq '.issue.number' $GITHUB_EVENT_PATH)" LOGIN="$(jq '.comment.user.login' $GITHUB_EVENT_PATH | tr -d \")" REPO="$(jq '.repository.full_name' $GITHUB_EVENT_PATH | tr -d \")" if [[ $BODY == *".take"* ]]; then echo "Assigning issue $ISSUE_NUMBER to $LOGIN" echo "Using the link: https://api.github.com/repos/$REPO/issues/$ISSUE_NUMBER/assignees" curl -H "Authorization: token $GITHUB_TOKEN" -d '{"assignees":["'"$LOGIN"'"]}' https://api.github.com/repos/$REPO/issues/$ISSUE_NUMBER/assignees fi
Примечание в конце удара, и мы используем команду Curl, чтобы поговорить непосредственно с API GitHub. Эта команда Curl предназначена для простоты. Все это могло быть сделано с помощью octokit.rest.js Библиотека или лучше GitHub-Script Анкет
И теперь вы можете подтолкнуть это к GitHub, чтобы проверить его из репо. Я использую это фактическое действие в моем репо Bdougie/Take-Action Получил ответ от моего действия, похоже, все сработало.
Если вы заинтересованы в полной версии этого учебника, это был отрывок из моего ранее записанного видео на YouTube:
Это часть моей серии 28 дней действий. Чтобы получить уведомление о большем количестве советов по действию GitHub, следуйте организации GitHub прямо здесь, на Dev.
Создайте свое собственное действие GitHub с помощью CLI с действиями
Брайан Дуглас ・ 15 февраля ・ 2 мин читал
[«28-github-Actions»] (серия 26 деталей)
Оригинал: «https://dev.to/github/build-github-actions-with-a-docker-container-37e2»