MinIO: 2. Skrypt obsługujący cykl życia usługi

Ta dokumentacja jest częścią przewodnika GitHub Actions & GitLab CI. Pełny przewodnik znajdziesz tutaj: Uruchom prawdziwą usługę MinIO bezpośrednio z pipeline'u GitHub Actions lub GitLab CI, przetestuj ją, a następnie automatycznie ją usuń.

👋 Witamy w dokumentacji Stackhero!

Stackhero udostępnia gotową do użycia platformę MinIO Object Storage, zaprojektowaną z myślą o niezawodności i wysokiej wydajności. Najważniejsze zalety to:

  • Nieograniczone transfery danych bez ukrytych kosztów.
  • Prosty, przewidywalny i przejrzysty cennik.
  • Własna nazwa domeny zabezpieczona przez HTTPS (na przykład https://object-storage.twoja-firma.com).
  • Aktualizacje jednym kliknięciem, bez konieczności ręcznej ingerencji.
  • Wysoka wydajność i bezpieczeństwo na prywatnej, dedykowanej infrastrukturze.
  • Dostępność w regionach 🇪🇺 Europa oraz 🇺🇸 USA.

Usprawnij swój workflow i skróć czas wdrożenia: możesz uruchomić hosting MinIO Object Storage od Stackhero w zaledwie 5 minut.

Poniżej znajdziesz kompletny przykład skryptu zarządzającego pełnym cyklem życia usługi. Pokazuje on, jak niewiele konfiguracji jest potrzebne – wystarczy kilka poleceń. Gotowe fragmenty YAML dla wybranej platformy znajdziesz w kolejnych sekcjach.

#!/bin/bash
set -euo pipefail

# STACKHERO_TOKEN jest przekazywany jako sekret CI, CLI wykrywa go automatycznie.

stackName="ci-minio-$$"          # Unikalna nazwa stacka dla każdego uruchomienia
serviceStore="minio"             # Store usługi MinIO
instance="100G"        # Zmień w razie potrzeby (patrz krok 3)
region="europe"                         # Nazwa regionu (patrz stackhero regions-list)

# 1. Instalacja CLI na runnerze
curl -fsSL https://www.stackhero.io/install.sh | sh

# 2. Instalacja klienta wymaganego do smoke testu (jq + curl to podstawa)
apt-get update && apt-get install -y --no-install-recommends jq curl awscli

# 3. Utworzenie dedykowanego stacka dla tego uruchomienia
stackId=$(stackhero --format=script stack-create --name="$stackName")
echo "Stack utworzony: $stackId"

# 4. Dodanie usługi MinIO i pobranie jej service id
serviceId=$(stackhero --format=script service-add \
  --stack="$stackId" \
  --service-store="$serviceStore" \
  --instance="$instance" \
  --region="$region")
echo "Usługa dodana: $serviceId"

# 5. Oczekiwanie na uruchomienie usługi (może potrwać kilka minut)
stackhero service-wait-for --service="$serviceId"

# 6. Pobranie konfiguracji (zawiera wygenerowane dane dostępowe)
config=$(stackhero service-configuration-get --service="$serviceId" --format=json)

# 7. Wyodrębnienie potrzebnych danych dostępowych
host=$(echo "$config" | jq -r '.configuration.domain')
accessKey=$(echo "$config" | jq -r '.configuration.credentials.rootUser')
secretKey=$(echo "$config" | jq -r '.configuration.credentials.rootPassword')

# 8. Smoke test: List the buckets with the AWS CLI (S3-compatible).
AWS_ACCESS_KEY_ID="$accessKey" AWS_SECRET_ACCESS_KEY="$secretKey" \
  aws --endpoint-url "https://$host" s3 ls

echo "✅ MinIO jest osiągalny z CI."

Krok usuwania, który kasuje usługę, czeka na jej usunięcie, a następnie usuwa stack, opisany jest w sekcjach specyficznych dla danej platformy poniżej. Takie podejście gwarantuje, że sprzątanie nastąpi zawsze, nawet jeśli smoke test się nie powiedzie.

Stack można usunąć tylko wtedy, gdy jest pusty. Zawsze najpierw usuń usługę i poczekaj na jej usunięcie, a dopiero potem usuń stack. Komenda service-wait-for zapewnia, że usługa jest uruchomiona lub usunięta przed przejściem dalej, dlatego jest właściwym narzędziem także do oczekiwania na usunięcie.