GitHub Actions надає потужний інструмент автоматизації робочих процесів в рамках репозиторіїв. Хоча існує багато готових публічних дій, іноді вам може знадобитися створити власну кастомну дію для специфічних завдань вашого проекту. Створення власних дій дає змогу впроваджувати спеціалізовану логіку, яка відповідає вашим потребам.
Структура папок:
.github/actions
у вашому репозиторії.my-action
.Файл action.yml
:
Створіть файл action.yml
в папці вашої дії. Цей файл містить метадані та конфігурацію для дії.
Приклад:
name: "Get & Cache Dependencies"
description: "Get dependencies and cache them using npm"
runs:
using: "composite"
steps:
- name: "Cache dependencies"
uses: "actions/cache@v2"
with:
path: "~/.npm"
key: ${{ runner.os }}-npm-cache-${{ hashFiles('**/package-lock.json') }}
- name: "Install dependencies"
run: "npm install"
shell: "bash"
Використання Composite Actions:
У робочих процесах ви можете використовувати свою Composite Action так само, як і будь-яку іншу дію.
Приклад:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Use custom action
uses: ./.github/actions/my-action
Структура проекту:
js-action
.action.yml
.Файл action.yml
:
Приклад:
name: "Hello World"
description: "Says hello"
runs:
using: "node12"
main: "index.js"
Логіка дії (файл index.js
):
Напишіть код JavaScript для виконання вашої дії.
Приклад:
const core = require('@actions/core');
try {
const name = core.getInput('name');
console.log(`Hello, ${name}!`);
} catch (error) {
core.setFailed(error.message);
}
Використання JavaScript Actions:
Приклад:
jobs:
greet:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Greet user
uses: ./js-action
with:
name: "World"
Структура проекту:
docker-action
.action.yml
.Файл action.yml
:
Приклад:
name: "Docker Action Example"
description: "An example Docker action"
runs:
using: "docker"
image: "Dockerfile"
Dockerfile:
Опишіть середовище виконання та логіку вашої дії у Dockerfile.
Приклад:
FROM node:14
WORKDIR /app
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
Логіка дії (файл entrypoint.sh
):
Напишіть код, що виконує вашу дію.
Приклад:
#!/bin/bash
echo "Hello from Docker action!"