Создаем GitHub workflows с actions в Unix/Linux

Недавно, в GitHub появилась возможность использовать workflows для различных задач. Например, можно сделать флов для проверки вашего кода перед тем как код будет смерджен в какую-то из бранчей ( например — master). Я приведу пример использования lint для Terrafrom-а, т.е я хочу чтобы код работал не только у меня локально, но и после того как я его запушу в репозиторий — он будет проходить проверку и даст мне знать если что-то пойдет не так.

Структура моего .github фолдера выглядит так:

sh
16 lines

$ tree .github | grep Ev «_BK»
.github
|— FUNDING.yml
|— ISSUE_TEMPLATE
| |— bug_report.md
| |— custom.md
| `— feature_request.md
|— actions
|— lock.yml
|— move.yml
|— noresponse.yml
|— stale.yml
`— workflows
|— terraformlint.yaml
3 directories, 11 files

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Где:

  • FUNDING.yml — Служит файлом для настройки донатинга проекта. Добавил чтобы было…
  • actions — Папка для yaml-файлов с конфигурацией действий для workflows. Т.е описываем что можно выполнять и каким образом. У меня в данном случае — папка пуска и я использую только workflows с готовым примером.
  • workflows — Это папка в которой лежат yaml-файлы с ворк-фловами, т.е файлами конфигураций при работе с вашим проектом. Например, проверка орфограции, выполнение init & plan & apply для Terrafrom-а ( в моем случае). Т.е я хочу сказать — это что-то типа CI/CD в GitHub и похожу что Микромелкие сперли некоторые из фичей с GitLab CI.

Создаем GitHub workflows с actions для Terraform в Unix/Linux

GitHub Actions позволяют создавать собственные рабочие процессы жизненного цикла разработки программного обеспечения (SDLC) непосредственно в вашем репозитории GitHub.

Мой самый простой lint для Terraform выглядит:

sh
14 lines

$ cat .github/workflows/terraformlint.yaml
name: terraformlint
on: [push, pull_request]
jobs:
delivery:
runson: ubuntulatest
steps:
name: Check out code
uses: actions/checkout@master
name: Lint Terraform
uses: actionshub/terraformlint@master

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Я не создавал экшены и взял готовое использование проекта ( написанного кем-то до меня).

Еще, имеется и другой пример использование:

sh
51 lines

name: Terraform GitHub Actions
# on:
# pull_request:
# branches:
# — master
on:
pull_request
jobs:
terraform:
name: Terraform
runson: ubuntulatest
steps:
name: Check out code
uses: actions/checkout@master
name: Terraform Format
uses: hashicorp/terraformgithubactions@master
with:
tf_actions_version: 0.12.13
tf_actions_subcommand: fmt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Terraform Init
uses: hashicorp/terraformgithubactions@master
with:
tf_actions_version: 0.12.13
tf_actions_subcommand: init
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TF_ACTION_WORKING_DIR: .
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
name: Terraform Validate
uses: hashicorp/terraformgithubactions@master
with:
tf_actions_version: 0.12.13
tf_actions_subcommand: validate
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
name: Terraform Plan
uses: hashicorp/terraformgithubactions@master
with:
tf_actions_version: 0.12.13
tf_actions_subcommand: plan
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

ЗАМЕЧАНИЕ: В данном примере — использую secrets, которые нужно прописать в настройках самого проекта. Данную настройку можно найти по следующему пути:

sh
1 lines

<GITHUB_URL>/<YOUR_USER>/<YOUR_REPO_NAME>/settings/secrets

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Где:

  • <GITHUB_URL> — URL от гитхаба (с http или https).
  • <YOUR_USER> — Юзер от которого запушился код.
  • <YOUR_REPO_NAME> — Репозиторий.

Например у меня это выглядит так:

sh
1 lines

https://github.com/SebastianUA/terraform/settings/secrets

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Нашел в интернете «runatlantis» проект который позволяет выполнять действия (terraform plan, terraform apply — это как пример) написав команду в комментарии ( например pull request-а). Не проверял работу, но оставил чтобы не забыть про него, если нужно будет заюзать.

Вот и все, статья «Создаем GitHub workflows с actions в Unix/Linux» завершена.

Was this helpful?

0 / 0