Tworzenie niestandardowych GitHub Actions
Nauczą się Państwo tworzyć własne actions wielokrotnego użytku z użyciem JavaScript lub Docker, rozszerzając funkcjonalność GitHub Actions.
Tworzenie niestandardowych GitHub Actions to bezpłatna lekcja CI/CD with GitHub Actions & DevOps Pipelines na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CI/CD with GitHub Actions & DevOps Pipelines, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CI/CD with GitHub Actions & DevOps Pipelines zawiera 4 lekcji w sumie.
Rozszerzanie GitHub Actions
Co zrobić, jeśli potrzebują Państwo w workflow konkretnego zadania, którego GitHub Actions nie oferuje standardowo? A może mają Państwo złożoną logikę, którą chcą ponownie wykorzystywać?
Własne actions pozwalają tworzyć własne narzędzia wielokrotnego użytku dla workflow. Są jak małe programy wykonujące konkretne zadania, dostosowane do Państwa potrzeb.
Potęga dostosowywania
Własne actions przynoszą wiele korzyści potokom CI/CD:
- Wielokrotne użycie: Napisanie raz i używanie w wielu workflow oraz repozytoriach.
- Standaryzacja: Zapewnienie spójnych procesów w całej organizacji.
- Hermetyzacja: Ukrycie złożonej logiki za prostym interfejsem.
- Integracja: Współpraca z określonymi narzędziami wewnętrznymi lub interfejsami API.
JavaScript czy Docker?
GitHub Actions obsługuje dwa podstawowe sposoby tworzenia własnych actions:
- JavaScript Actions: Są napisane w języku JavaScript (lub TypeScript) i uruchamiane bezpośrednio na maszynie runnera. Są szybkie i łatwe w przypadku prostych zadań.
- Docker Container Actions: Hermetyzują środowisko i kod w obrazie Docker. Są idealne w przypadku actions wymagających określonych zależności lub języków.
Definiowanie własnej action
Każda własna action wymaga pliku action.yml w swoim katalogu głównym. Ten plik YAML działa jak manifest i przekazuje GitHub Actions informacje o action:
nameidescription: Co robi action.inputs: Dane przyjmowane przez action.outputs: Dane wytwarzane przez action.runs: Sposób wykonywania action (np. plik JavaScript lub obraz Docker).
Prosty przykład action w JS
Przyjrzyjmy się podstawowej action w języku JavaScript. Potrzebne będą pliki action.yml i index.js. Plik action.yml definiuje metadane action i środowisko jej wykonywania.
# 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'Pisanie kodu JavaScript
Plik index.js zawiera właściwą logikę. Korzystamy z zestawu narzędzi @actions/core, aby pobierać dane wejściowe i ustawiać dane wyjściowe.
Proszę uruchomić ten prosty fragment kodu JavaScript, aby zobaczyć, jak koncepcyjnie działają dane wejściowe i wyjściowe, nawet poza pełnym workflow:
// 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());Podstawy Docker actions
W przypadku bardziej złożonych środowisk Docker Container Actions są bardzo przydatne. Zawierają plik Dockerfile, który definiuje obraz kontenera i dołącza wszystkie wymagane zależności.
Plik action.yml będzie odwoływać się do tego obrazu, informując GitHub Actions, aby go zbudował i uruchomił.
# 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'Środowisko własnej action
Plik Dockerfile określa obraz bazowy, instaluje zależności i definiuje punkt wejścia action. Dzięki temu action działa w spójnym, kontrolowanym środowisku.
# 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"]Skryptowanie Docker actions
W kontenerze Docker skrypt entrypoint (np. entrypoint.sh) otrzymuje dane wejściowe jako zmienne środowiskowe (z prefiksem INPUT_). Ustawia dane wyjściowe, zapisując je do pliku wskazanego przez zmienną środowiskową $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"Najlepsze praktyki dotyczące actions
Podczas tworzenia własnych actions warto uwzględnić poniższe wskazówki, aby powstające narzędzia były niezawodne i łatwe w utrzymaniu:
- Wersjonowanie: Stosowanie wersjonowania semantycznego (np.
v1,v2) w celu zapewnienia stabilności. - Testowanie: Rygorystyczne testowanie action lokalnie i w workflow.
- Obsługa błędów: Implementowanie jasnych komunikatów o błędach i kontrolowanego kończenia działania.
- Bezpieczeństwo: Filtrowanie danych wejściowych i unikanie ujawniania poufnych danych.
- Dokumentacja: Udostępnianie jasnych instrukcji użycia w pliku README.
Sprawdzenie typu action
Potrzebują Państwo utworzyć własną GitHub Action, która wymaga konkretnej biblioteki Python, niepreinstalowanej na standardowych runnerach GitHub Actions. Który typ action jest zazwyczaj najlepiej dostosowany do tego scenariusza?
Podsumowanie własnych actions
Omówiliśmy sposób rozszerzania GitHub Actions przez tworzenie własnych actions. Poznali już Państwo dwa główne typy: JavaScript actions i Docker container actions, a także kluczową rolę pliku action.yml. Omówiliśmy również definiowanie danych wejściowych, danych wyjściowych i podstawowej logiki każdego typu, a także najlepsze praktyki tworzenia.
Własne actions są bardzo przydatne do wielokrotnego użycia i standaryzacji potoków CI/CD!
Często zadawane pytania
Czy lekcja „Tworzenie niestandardowych GitHub Actions” jest bezpłatna?
Tak — pełny tekst „Tworzenie niestandardowych GitHub Actions” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CI/CD with GitHub Actions & DevOps Pipelines, przejdź na CoddyKit PRO. Kurs CI/CD with GitHub Actions & DevOps Pipelines zawiera 4 lekcji w sumie.
Co nauczysz się w „Tworzenie niestandardowych GitHub Actions”?
Nauczą się Państwo tworzyć własne actions wielokrotnego użytku z użyciem JavaScript lub Docker, rozszerzając funkcjonalność GitHub Actions. Ćwiczysz CI/CD with GitHub Actions & DevOps Pipelines z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć CI/CD with GitHub Actions & DevOps Pipelines?
Nie wymagamy żadnego doświadczenia. CI/CD with GitHub Actions & DevOps Pipelines w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Tworzenie niestandardowych GitHub Actions”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji CI/CD with GitHub Actions & DevOps Pipelines?
Tak. Każda lekcja CI/CD with GitHub Actions & DevOps Pipelines zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tworzenie niestandardowych GitHub Actions
- Self-hosted runners dla środowisk lokalnych
- Integracja z systemami korporacyjnymi
- Akcje złożone i publikowanie w Marketplace