Wdrożenia z CI (GitHub Actions, GitLab CI)
Jak uruchamiać wdrożenie aplikacji z pipeline'u CI za pomocą tokenu deployu i webhooka.
Nową wersję aplikacji wdrażasz w dwóch krokach: budujesz obraz i wypychasz go do rejestru, a potem zlecasz wdrożenie. Drugi krok możesz zrobić ręcznie w panelu albo automatycznie z CI, wywołując webhook.
Jak działa wdrożenie
Po wywołaniu wdrożenia panel na każdej replice po kolei:
- loguje się do prywatnego rejestru (jeśli go podałeś),
- pobiera obrazy z compose (
docker compose pull), - uruchamia nową wersję i czeka na poprawną odpowiedź pod ścieżką health-check,
- dopiero wtedy przechodzi do następnej repliki.
Przy dwóch i więcej replikach aplikacja działa bez przerwy. Webhook nie zmienia compose — wdraża to, co jest zapisane w zakładce Konfiguracja. Dlatego najprościej używać w compose stałego tagu (np. :latest albo :production) i nadpisywać go w CI przy każdym wydaniu.
Wdrożenie z panelu
- Wypchnij nowy obraz do rejestru.
- Otwórz aplikację, zakładkę Przegląd.
- Kliknij Wdróż ponownie.
Token deployu
Token pokazujemy tylko raz — zaraz po utworzeniu aplikacji. Jeśli go nie masz:
- Otwórz aplikację i zakładkę Deploy / CI.
- W sekcji Deploy z CI (webhook) kliknij Wygeneruj nowy token.
- Skopiuj token z żółtej ramki u góry strony i zapisz go jako sekret w CI.
Uwaga: Nowy token unieważnia poprzedni. Po wygenerowaniu zaktualizuj sekret we wszystkich pipeline'ach.
Adres webhooka
W zakładce Deploy / CI znajdziesz gotowe polecenie z adresem webhooka Twojej aplikacji. Ma ono postać:
curl -X POST -H "Authorization: Bearer <token>" https://cloud.hostava.pl/api/app-hooks/<identyfikator>/deploy
Identyfikator w adresie nie jest tajny — chroni go token. Skopiuj całe polecenie przyciskiem obok i podmień <token> na sekret.
Odpowiedzi webhooka:
200z{"ok":true,"started":true}— wdrożenie wystartowało w tle,401— nieprawidłowy token,409— wdrożenie tej aplikacji już trwa.
Webhook nie czeka na koniec wdrożenia. Wynik zobaczysz w panelu: przy błędzie na stronie aplikacji pojawi się komunikat z przyciskiem Pokaż przyczynę (logi deployu).
Przykład: GitHub Actions
Zapisz token w Settings → Secrets and variables → Actions jako HOSTAVA_DEPLOY_TOKEN, a adres webhooka jako HOSTAVA_DEPLOY_URL.
# .github/workflows/deploy.yml
name: deploy
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- uses: docker/build-push-action@v6
with:
push: true
tags: ghcr.io/${{ github.repository }}:latest
- name: Wdrożenie na Hostava
run: |
curl -fsS -X POST "${{ secrets.HOSTAVA_DEPLOY_URL }}" \
-H "Authorization: Bearer ${{ secrets.HOSTAVA_DEPLOY_TOKEN }}"
Jeśli obraz w GHCR jest prywatny, podaj w aplikacji Prywatny rejestr: ghcr.io, nazwę użytkownika i token z uprawnieniem read:packages.
Przykład: GitLab CI
Dodaj zmienne HOSTAVA_DEPLOY_TOKEN (zamaskowaną) i HOSTAVA_DEPLOY_URL w Settings → CI/CD → Variables.
deploy:
stage: deploy
image: curlimages/curl:latest
script:
- curl -fsS -X POST "$HOSTAVA_DEPLOY_URL" -H "Authorization: Bearer $HOSTAVA_DEPLOY_TOKEN"
only:
- main
Zawieszone wdrożenie
Jeśli wdrożenie trwa ponad 5 minut, przy komunikacie pojawi się przycisk Odblokuj wdrożenie. Odblokuj je, popraw konfigurację (compose, .env) i wdróż ponownie.
Wskazówka: Migracje bazy po wdrożeniu uruchomisz w zakładce Polecenia — zobacz Polecenia w aplikacji.
Powiązane: Aplikacja z pliku Docker Compose.