Skip to content

Instalacja na własnym hostingu

Oferujemy samodzielnie hostowaną wersję serwera Tuist dla organizacji, które wymagają większej kontroli nad swoją infrastrukturą. Ta wersja umożliwia hostowanie Tuist na własnej infrastrukturze, zapewniając bezpieczeństwo i prywatność danych.

License Required

Samodzielny hosting Tuist wymaga prawnie ważnej płatnej licencji. Lokalna wersja Tuist jest dostępna tylko dla organizacji korzystających z planu Enterprise. Jeśli jesteś zainteresowany tą wersją, skontaktuj się z [email protected].

Kadencja zwalniania#

Wydajemy nowe wersje Tuist w sposób ciągły, w miarę jak nowe możliwe do wydania zmiany trafiają na main. Stosujemy semantic versioning, aby zapewnić przewidywalne wersjonowanie i kompatybilność.

Główny komponent służy do oznaczania przełomowych zmian na serwerze Tuist, które będą wymagały koordynacji z użytkownikami on-premise. Nie powinieneś oczekiwać, że będziemy go używać, a jeśli zajdzie taka potrzeba, zapewniamy, że będziemy współpracować z Tobą, aby przejście było płynne.

Ciągłe wdrażanie#

Zdecydowanie zalecamy skonfigurowanie potoku ciągłego wdrażania, który automatycznie wdraża najnowszą wersję Tuist każdego dnia. Dzięki temu zawsze będziesz mieć dostęp do najnowszych funkcji, ulepszeń i aktualizacji zabezpieczeń.

Oto przykładowy przepływ pracy GitHub Actions, który codziennie sprawdza i wdraża nowe wersje:

yaml
name: Update Tuist Server
on:
schedule:
- cron: '0 3 * * *' # Run daily at 3 AM UTC
workflow_dispatch: # Allow manual runs
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Check and deploy latest version
run: |
# Your deployment commands here
# Example: docker pull ghcr.io/tuist/tuist:latest
# Deploy to your infrastructure

Wymagania dotyczące czasu działania#

W tej sekcji przedstawiono wymagania dotyczące hostowania serwera Tuist w infrastrukturze użytkownika.

Matryca zgodności#

Serwer Tuist został przetestowany i jest kompatybilny z następującymi minimalnymi wersjami:

Komponent Wersja minimalna Uwagi
PostgreSQL 15 Z rozszerzeniem TimescaleDB
TimescaleDB 2.16.1 Wymagane rozszerzenie PostgreSQL (przestarzałe)
ClickHouse 25 Wymagane do analizy
Timescaledb Deprecation

TimescaleDB jest obecnie wymaganym rozszerzeniem PostgreSQL dla serwera Tuist, używanym do przechowywania danych szeregów czasowych i wysyłania zapytań. Jednakże, TimescaleDB jest przestarzałe i zostanie usunięte jako wymagana zależność w najbliższej przyszłości, ponieważ migrujemy całą funkcjonalność szeregów czasowych do ClickHouse. Na razie upewnij się, że twoja instancja PostgreSQL ma zainstalowaną i włączoną usługę TimescaleDB.

Uruchamianie zwirtualizowanych obrazów Docker#

Dystrybuujemy serwer jako obraz Docker za pośrednictwem GitHub's Container Registry.

Aby go uruchomić, infrastruktura musi obsługiwać uruchamianie obrazów Docker. Należy pamiętać, że większość dostawców infrastruktury obsługuje tę technologię, ponieważ stała się ona standardowym kontenerem do dystrybucji i uruchamiania oprogramowania w środowiskach produkcyjnych.

Baza danych Postgres#

Oprócz uruchomienia obrazów Docker, do przechowywania danych relacyjnych i szeregów czasowych potrzebna będzie baza danych Postgres z rozszerzeniem TimescaleDB. Większość dostawców infrastruktury posiada w swojej ofercie bazy danych Postgres (np. AWS i Google Cloud).

Wymagane rozszerzenie TimescaleDB: Tuist wymaga rozszerzenia TimescaleDB do wydajnego przechowywania danych szeregów czasowych i wysyłania zapytań. Rozszerzenie to jest używane do obsługi zdarzeń, analiz i innych funkcji opartych na czasie. Upewnij się, że twoja instancja PostgreSQL ma zainstalowane i włączone TimescaleDB przed uruchomieniem Tuist.

Migrations

Punkt wejścia obrazu Docker automatycznie uruchamia wszelkie oczekujące migracje schematów przed uruchomieniem usługi. Jeśli migracje nie powiodą się z powodu braku rozszerzenia TimescaleDB, należy najpierw zainstalować je w bazie danych.

Baza danych ClickHouse#

Tuist używa ClickHouse do przechowywania i wyszukiwania dużych ilości danych analitycznych. ClickHouse jest wymagany dla funkcji takich jak build insights i będzie podstawową bazą danych szeregów czasowych w miarę wycofywania TimescaleDB. Możesz wybrać, czy chcesz samodzielnie hostować ClickHouse, czy skorzystać z ich hostowanej usługi.

Migrations

Punkt wejścia obrazu Docker automatycznie uruchamia wszelkie oczekujące migracje schematów ClickHouse przed uruchomieniem usługi.

Przechowywanie#

Potrzebne będzie również rozwiązanie do przechowywania plików (np. plików binarnych frameworków i bibliotek). Obecnie obsługujemy dowolną pamięć masową zgodną ze standardem S3.

Konfiguracja#

Konfiguracja usługi odbywa się w czasie wykonywania poprzez zmienne środowiskowe. Biorąc pod uwagę wrażliwy charakter tych zmiennych, zalecamy ich szyfrowanie i przechowywanie w bezpiecznych rozwiązaniach do zarządzania hasłami. Zapewniamy, że Tuist obsługuje te zmienne z najwyższą starannością, zapewniając, że nigdy nie są one wyświetlane w dziennikach.

Launch Checks

Niezbędne zmienne są weryfikowane podczas uruchamiania. Jeśli jakiejkolwiek brakuje, uruchomienie nie powiedzie się, a komunikat o błędzie wyszczególni brakujące zmienne.

Konfiguracja licencji#

Jako użytkownik lokalny otrzymasz klucz licencyjny, który musisz ujawnić jako zmienną środowiskową. Klucz ten służy do walidacji licencji i zapewnienia, że usługa działa zgodnie z warunkami umowy.

Zmienna środowiskowa Opis Wymagane Domyślne Przykłady
TUIST_LICENSE Licencja udzielana po podpisaniu umowy o gwarantowanym poziomie usług Tak* ******
TUIST_LICENSE_CERTIFICATE_BASE64 Wyjątkowa alternatywa dla TUIST_LICENSE. Certyfikat publiczny zakodowany w Base64 do walidacji licencji offline w środowiskach, w których serwer nie może skontaktować się z usługami zewnętrznymi. Używaj tylko wtedy, gdy TUIST_LICENSE nie może być użyty Tak* LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0t...

* Należy podać albo TUIST_LICENSE albo TUIST_LICENSE_CERTIFICATE_BASE64, ale nie oba. W przypadku standardowych wdrożeń należy użyć TUIST_LICENSE.

Expiration Date

Licencje mają datę wygaśnięcia. Użytkownicy otrzymają ostrzeżenie podczas korzystania z poleceń Tuist, które wchodzą w interakcję z serwerem, jeśli licencja wygaśnie za mniej niż 30 dni. Jeśli jesteś zainteresowany odnowieniem licencji, skontaktuj się z [email protected].

Konfiguracja środowiska podstawowego#

Zmienna środowiskowa Opis Wymagane Domyślne Przykłady
TUIST_APP_URL Podstawowy adres URL umożliwiający dostęp do instancji z Internetu Tak https://tuist.dev
TUIST_SECRET_KEY_BASE Klucz używany do szyfrowania informacji (np. sesji w pliku cookie). Tak c5786d9f869239cbddeca645575349a570ffebb332b64400c37256e1c9cb7ec831345d03dc0188edd129d09580d8cbf3ceaf17768e2048c037d9c31da5dcacfa
TUIST_SECRET_KEY_PASSWORD Pepper do generowania hashowanych haseł Nie $TUIST_SECRET_KEY_BASE
TUIST_SECRET_KEY_TOKENS Tajny klucz do generowania losowych tokenów Nie $TUIST_SECRET_KEY_BASE
TUIST_SECRET_KEY_ENCRYPTION 32-bajtowy klucz do szyfrowania poufnych danych AES-GCM Nie $TUIST_SECRET_KEY_BASE
TUIST_USE_IPV6 Gdy 1 konfiguruje aplikację do korzystania z adresów IPv6 Nie 0 1
TUIST_LOG_LEVEL Poziom dziennika używany przez aplikację Nie info Poziomy dziennika
TUIST_GITHUB_APP_NAME Wersja adresu URL nazwy aplikacji GitHub Nie my-app
TUIST_GITHUB_APP_PRIVATE_KEY_BASE64 Zakodowany w base64 klucz prywatny używany w aplikacji GitHub do odblokowywania dodatkowych funkcji, takich jak publikowanie automatycznych komentarzy PR. Nie LS0tLS1CRUdJTiBSU0EgUFJJVkFUR...
TUIST_GITHUB_APP_PRIVATE_KEY Klucz prywatny używany w aplikacji GitHub do odblokowywania dodatkowych funkcji, takich jak publikowanie automatycznych komentarzy PR. Zalecamy użycie wersji zakodowanej w base64, aby uniknąć problemów ze znakami specjalnymi. Nie -----BEGIN RSA...
TUIST_OPS_USER_HANDLES Rozdzielana przecinkami lista uchwytów użytkowników, którzy mają dostęp do adresów URL operacji. Nie user1,user2
TUIST_WEB Włącz punkt końcowy serwera WWW Nie 1 1 lub 0

Konfiguracja bazy danych#

Następujące zmienne środowiskowe są używane do konfiguracji połączenia z bazą danych:

Zmienna środowiskowa Opis Wymagane Domyślne Przykłady
DATABASE_URL Adres URL dostępu do bazy danych Postgres. Należy pamiętać, że adres URL powinien zawierać informacje uwierzytelniające Tak postgres://username:[email protected]/production
TUIST_CLICKHOUSE_URL Adres URL dostępu do bazy danych ClickHouse. Należy pamiętać, że adres URL powinien zawierać informacje uwierzytelniające Nie http://username:[email protected]/production
TUIST_USE_SSL_FOR_DATABASE Gdy wartość ta jest prawdziwa, do połączenia z bazą danych używany jest protokół SSL. Nie 1 1
TUIST_DATABASE_POOL_SIZE Liczba połączeń, które mają pozostać otwarte w puli połączeń Nie 10 10
TUIST_DATABASE_QUEUE_TARGET Interwał (w milisekundach) sprawdzania, czy wszystkie połączenia wyewidencjonowane z puli zajęły więcej niż interwał kolejki (Więcej informacji) Nie 300 300
TUIST_DATABASE_QUEUE_INTERVAL Czas progowy (w milisekundach) w kolejce, którego pula używa do określenia, czy powinna zacząć odrzucać nowe połączenia (Więcej informacji) Nie 1000 1000
TUIST_CLICKHOUSE_FLUSH_INTERVAL_MS Odstęp czasu w milisekundach pomiędzy kolejnymi opróżnieniami bufora ClickHouse Nie 5000 5000
TUIST_CLICKHOUSE_MAX_BUFFER_SIZE Maksymalny rozmiar bufora ClickHouse w bajtach przed wymuszeniem spłukiwania Nie 1000000 1000000
TUIST_CLICKHOUSE_BUFFER_POOL_SIZE Liczba procesów bufora ClickHouse do uruchomienia Nie 5 5

Konfiguracja środowiska uwierzytelniania#

Ułatwiamy uwierzytelnianie za pośrednictwem dostawców tożsamości (IdP). Aby z tego skorzystać, należy upewnić się, że wszystkie niezbędne zmienne środowiskowe dla wybranego dostawcy są obecne w środowisku serwera. Brak zmiennych spowoduje, że Tuist ominie tego dostawcę.

GitHub#

Zalecamy uwierzytelnianie za pomocą aplikacji GitHub App, ale można również użyć aplikacji OAuth App. Upewnij się, że w środowisku serwera znajdują się wszystkie istotne zmienne środowiskowe określone przez GitHub. Brak zmiennych spowoduje, że Tuist przeoczy uwierzytelnianie GitHub. Aby poprawnie skonfigurować aplikację GitHub:

  • W ustawieniach ogólnych aplikacji GitHub:
    • Skopiuj identyfikator klienta `` i ustaw go jako TUIST_GITHUB_APP_CLIENT_ID.
    • Utwórz i skopiuj nowy sekret klienta `` i ustaw go jako TUIST_GITHUB_APP_CLIENT_SECRET
    • Ustaw adres URL wywołania zwrotnego `` jako http://YOUR_APP_URL/users/auth/github/callback. `YOUR_APP_URL` może być również adresem IP serwera.
  • Wymagane są następujące uprawnienia:
    • Repozytoria:
      • Żądania ściągnięcia: Odczyt i zapis
    • Konta:
      • Adresy e-mail: Tylko do odczytu

W sekcji Uprawnienia i zdarzenia's Uprawnienia konta ustaw uprawnienie Adresy e-mail na Tylko do odczytu.

Następnie należy ujawnić następujące zmienne środowiskowe w środowisku, w którym działa serwer Tuist:

Zmienna środowiskowa Opis Wymagane Domyślne Przykłady
TUIST_GITHUB_APP_CLIENT_ID Identyfikator klienta aplikacji GitHub Tak Iv1.a629723000043722
TUIST_GITHUB_APP_CLIENT_SECRET Sekret klienta aplikacji Tak 232f972951033b89799b0fd24566a04d83f44ccc

Google#

Możesz skonfigurować uwierzytelnianie w Google przy użyciu OAuth 2. W tym celu należy utworzyć nowe poświadczenia typu OAuth client ID. Podczas tworzenia poświadczeń wybierz "Aplikacja internetowa" jako typ aplikacji, nazwij ją Tuist i ustaw URI przekierowania na {base_url}/users/auth/google/callback gdzie base_url to adres URL, pod którym działa hostowana usługa. Po utworzeniu aplikacji skopiuj identyfikator klienta i sekret i ustaw je odpowiednio jako zmienne środowiskowe GOOGLE_CLIENT_ID i GOOGLE_CLIENT_SECRET.

Consent Screen Scopes

Może być konieczne utworzenie ekranu zgody. W tym celu należy dodać zakresy userinfo.email i openid oraz oznaczyć aplikację jako wewnętrzną.

Okta#

Możesz włączyć uwierzytelnianie w Okta za pomocą protokołu OAuth 2.0. Będziesz musiał utworzyć aplikację w Okta zgodnie z tymi instrukcjami.

Po uzyskaniu identyfikatora klienta i hasła tajnego podczas konfigurowania aplikacji Okta należy ustawić następujące zmienne środowiskowe:

Zmienna środowiskowa Opis Wymagane Domyślne Przykłady
TUIST_OKTA_1_CLIENT_ID Identyfikator klienta do uwierzytelniania w usłudze Okta. Numer powinien być identyfikatorem organizacji Tak
TUIST_OKTA_1_CLIENT_SECRET Klucz tajny klienta do uwierzytelniania w usłudze Okta Tak

Numer 1 należy zastąpić identyfikatorem organizacji. Zazwyczaj będzie to 1, ale należy to sprawdzić w bazie danych.

Konfiguracja środowiska pamięci masowej#

Tuist potrzebuje pamięci masowej do przechowywania artefaktów przesłanych za pośrednictwem interfejsu API.** Aby aplikacja Tuist działała efektywnie, konieczne jest skonfigurowanie jednego z obsługiwanych rozwiązań pamięci masowej **.

Magazyny zgodne z S3#

Do przechowywania artefaktów można użyć dowolnego dostawcy pamięci masowej zgodnego z S3. Do uwierzytelnienia i skonfigurowania integracji z dostawcą magazynu wymagane są następujące zmienne środowiskowe:

Zmienna środowiskowa Opis Wymagane Domyślne Przykłady
TUIST_S3_ACCESS_KEY_ID lub AWS_ACCESS_KEY_ID Identyfikator klucza dostępu do uwierzytelniania względem dostawcy pamięci masowej Tak AKIAIOSFOD
TUIST_S3_SECRET_ACCESS_KEY lub AWS_SECRET_ACCESS_KEY Tajny klucz dostępu do uwierzytelniania wobec dostawcy pamięci masowej Tak wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
TUIST_S3_REGION lub AWS_REGION Region, w którym znajduje się zasobnik Nie auto us-west-2
TUIST_S3_ENDPOINT lub AWS_ENDPOINT Punkt końcowy dostawcy pamięci masowej Tak https://s3.us-west-2.amazonaws.com
TUIST_S3_BUCKET_NAME Nazwa zasobnika, w którym przechowywane będą artefakty. Tak tuist-artefakty
TUIST_S3_CA_CERT_PEM Certyfikat CA zakodowany w PEM do weryfikacji połączeń S3 HTTPS. Przydatne w środowiskach z izolacją powietrzną z samopodpisanymi certyfikatami lub wewnętrznymi urzędami certyfikacji. Nie Pakiet CA systemu -----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----
TUIST_S3_CONNECT_TIMEOUT Czas oczekiwania (w milisekundach) na nawiązanie połączenia z dostawcą pamięci masowej. Nie 3000 3000
TUIST_S3_RECEIVE_TIMEOUT Limit czasu (w milisekundach) na odebranie danych od dostawcy pamięci masowej. Nie 5000 5000
TUIST_S3_POOL_TIMEOUT Limit czasu (w milisekundach) dla puli połączeń z dostawcą pamięci masowej. Użyj nieskończoność dla braku limitu czasu Nie 5000 5000
TUIST_S3_POOL_MAX_IDLE_TIME Maksymalny czas bezczynności (w milisekundach) dla połączeń w puli. Użyj infinity, aby utrzymać połączenia przy życiu w nieskończoność Nie nieskończoność 60000
TUIST_S3_POOL_SIZE Maksymalna liczba połączeń na pulę Nie 500 500
TUIST_S3_POOL_COUNT Liczba pul połączeń do użycia Nie Liczba harmonogramów systemowych 4
TUIST_S3_PROTOCOL Protokół używany podczas łączenia się z dostawcą pamięci masowej (http1 lub http2). Nie http1 http1
TUIST_S3_VIRTUAL_HOST Czy adres URL powinien być skonstruowany z nazwą zasobnika jako subdomena (host wirtualny)? Nie fałszywy 1
Aws Authentication With Web Identity Token From Environment Variables

Jeśli dostawcą pamięci masowej jest AWS i chcesz uwierzytelniać się za pomocą tokena tożsamości sieciowej, możesz ustawić zmienną środowiskową TUIST_S3_AUTHENTICATION_METHOD na aws_web_identity_token_from_env_vars, a Tuist użyje tej metody przy użyciu konwencjonalnych zmiennych środowiskowych AWS.

Google Cloud Storage#

W przypadku Google Cloud Storage należy postępować zgodnie z tymi dokumentami, aby uzyskać parę AWS_ACCESS_KEY_ID i AWS_SECRET_ACCESS_KEY. Zmienna AWS_ENDPOINT powinna być ustawiona na https://storage.googleapis.com. Inne zmienne środowiskowe są takie same, jak w przypadku każdego innego magazynu zgodnego z S3.

Konfiguracja poczty e-mail#

Tuist wymaga funkcji poczty e-mail do uwierzytelniania użytkowników i powiadomień transakcyjnych (np. resetowania hasła, powiadomień o koncie). Obecnie obsługuje tylko Mailgun jako dostawcę poczty e-mail.

Zmienna środowiskowa Opis Wymagane Domyślne Przykłady
TUIST_MAILGUN_API_KEY Klucz API do uwierzytelniania w Mailgun Tak* key-1234567890abcdef
TUIST_MAILING_DOMAIN Domena, z której będą wysyłane wiadomości e-mail Tak* mg.tuist.io
TUIST_MAILING_FROM_ADDRESS Adres e-mail, który pojawi się w polu "Od". Tak* [email protected]
TUIST_MAILING_REPLY_TO_ADDRESS Opcjonalny adres reply-to dla odpowiedzi użytkownika Nie [email protected]
TUIST_SKIP_EMAIL_CONFIRMATION Pomiń potwierdzenie e-mail dla rejestracji nowych użytkowników. Po włączeniu tej opcji użytkownicy są automatycznie potwierdzani i mogą zalogować się natychmiast po rejestracji. Nie true jeśli email nie jest skonfigurowany, false jeśli email jest skonfigurowany true, false, 1, 0

* Zmienne konfiguracyjne e-mail są wymagane tylko wtedy, gdy chcesz wysyłać wiadomości e-mail. Jeśli nie zostaną skonfigurowane, potwierdzenie e-mail zostanie automatycznie pominięte

Smtp Support

Ogólna obsługa SMTP nie jest obecnie dostępna. Jeśli potrzebujesz wsparcia SMTP dla swojego lokalnego wdrożenia, skontaktuj się z [email protected], aby omówić swoje wymagania.

Air-gapped Deployments

W przypadku instalacji lokalnych bez dostępu do Internetu lub konfiguracji dostawcy poczty e-mail, potwierdzenie e-mail jest domyślnie automatycznie pomijane. Użytkownicy mogą zalogować się natychmiast po rejestracji. Jeśli masz skonfigurowaną pocztę e-mail, ale nadal chcesz pominąć potwierdzenie, ustaw TUIST_SKIP_EMAIL_CONFIRMATION=true. Aby wymagać potwierdzenia e-mailem, gdy e-mail jest skonfigurowany, ustaw TUIST_SKIP_EMAIL_CONFIRMATION=false.

Konfiguracja platformy Git#

Tuist może integrować się z platformami Git, aby zapewnić dodatkowe funkcje, takie jak automatyczne publikowanie komentarzy w pull requestach.

GitHub#

Konieczne będzie utworzenie aplikacji GitHub. Możesz ponownie użyć tej, którą utworzyłeś do uwierzytelniania, chyba że utworzyłeś aplikację OAuth GitHub. W sekcji Uprawnienia i zdarzenia's Uprawnienia repozytorium należy dodatkowo ustawić uprawnienie Żądania ściągnięcia na Odczyt i zapis.

Oprócz TUIST_GITHUB_APP_CLIENT_ID i TUIST_GITHUB_APP_CLIENT_SECRET potrzebne będą następujące zmienne środowiskowe:

Zmienna środowiskowa Opis Wymagane Domyślne Przykłady
TUIST_GITHUB_APP_PRIVATE_KEY Klucz prywatny aplikacji GitHub Tak -----BEGIN RSA PRIVATE KEY-----...

Lokalne testy#

Zapewniamy kompleksową konfigurację Docker Compose, która obejmuje wszystkie wymagane zależności do testowania serwera Tuist na komputerze lokalnym przed wdrożeniem w infrastrukturze:

  • PostgreSQL 15 z rozszerzeniem TimescaleDB 2.16 (przestarzałe)
  • ClickHouse 25 dla analityków
  • ClickHouse Keeper do koordynacji
  • MinIO dla pamięci masowej kompatybilnej z S3
  • Redis do trwałego przechowywania KV między wdrożeniami (opcjonalnie)
  • pgweb do administrowania bazami danych
License Required

Ważna zmienna środowiskowa TUIST_LICENSE jest prawnie wymagana do uruchomienia serwera Tuist, w tym lokalnych instancji programistycznych. Jeśli potrzebujesz licencji, skontaktuj się z [email protected].

Szybki start:

  1. Pobierz pliki konfiguracyjne:

    bash
    curl -O https://docs.tuist.io/server/self-host/docker-compose.yml
    curl -O https://docs.tuist.io/server/self-host/clickhouse-config.xml
    curl -O https://docs.tuist.io/server/self-host/clickhouse-keeper-config.xml
    curl -O https://docs.tuist.io/server/self-host/.env.example
  2. Konfiguracja zmiennych środowiskowych:

    bash
    cp .env.example .env
    # Edit .env and add your TUIST_LICENSE and authentication credentials
  3. Uruchom wszystkie usługi:

    bash
    docker compose up -d
    # or with podman:
    podman compose up -d
  4. Dostęp do serwera pod adresem http://localhost:8080

Punkty końcowe usługi:

Wspólne polecenia:

Sprawdź status usługi:

bash
docker compose ps
# or: podman compose ps

Wyświetlanie dzienników:

bash
docker compose logs -f tuist

Zatrzymaj usługi:

bash
docker compose down

Zresetuj wszystko (usuwa wszystkie dane):

bash
docker compose down -v

Pliki konfiguracyjne:

Wdrożenie#

Oficjalny obraz Tuist Docker dostępny jest pod adresem:

bash
ghcr.io/tuist/tuist

Pobieranie obrazu Docker#

Obraz można pobrać, wykonując następujące polecenie:

bash
docker pull ghcr.io/tuist/tuist:latest

Lub pobrać określoną wersję:

bash
docker pull ghcr.io/tuist/tuist:0.1.0

Wdrażanie obrazu Docker#

Proces wdrażania obrazu Docker będzie różnił się w zależności od wybranego dostawcy chmury i podejścia organizacji do ciągłego wdrażania. Ponieważ większość rozwiązań i narzędzi chmurowych, takich jak Kubernetes, wykorzystuje obrazy Docker jako podstawowe jednostki, przykłady w tej sekcji powinny dobrze pasować do istniejącej konfiguracji.

Warning

Jeśli potok wdrażania wymaga sprawdzenia, czy serwer jest uruchomiony, można wysłać żądanie HTTP GET do /ready i potwierdzić kod stanu 200 w odpowiedzi.

Latać#

Aby wdrożyć aplikację na platformie Fly, potrzebny będzie plik konfiguracyjny fly.toml. Rozważ wygenerowanie go dynamicznie w ramach potoku Continuous Deployment (CD). Poniżej znajduje się przykład referencyjny:

toml
app = "tuist"
primary_region = "fra"
kill_signal = "SIGINT"
kill_timeout = "5s"
[experimental]
auto_rollback = true
[env]
# Your environment configuration goes here
# Or exposed through Fly secrets
[processes]
app = "/usr/local/bin/hivemind /app/Procfile"
[[services]]
protocol = "tcp"
internal_port = 8080
auto_stop_machines = false
auto_start_machines = false
processes = ["app"]
http_options = { h2_backend = true }
[[services.ports]]
port = 80
handlers = ["http"]
force_https = true
[[services.ports]]
port = 443
handlers = ["tls", "http"]
[services.concurrency]
type = "connections"
hard_limit = 100
soft_limit = 80
[[services.http_checks]]
interval = 10000
grace_period = "10s"
method = "get"
path = "/ready"
protocol = "http"
timeout = 2000
tls_skip_verify = false
[services.http_checks.headers]
[[statics]]
guest_path = "/app/public"
url_prefix = "/"

Następnie można uruchomić fly launch --local-only --no-deploy, aby uruchomić aplikację. Przy kolejnych wdrożeniach, zamiast uruchamiać fly launch --local-only, należy uruchomić fly deploy --local-only. Fly.io nie pozwala na pobieranie prywatnych obrazów Docker, dlatego musimy użyć flagi --local-only.

Metryki Prometeusza#

Tuist udostępnia metryki Prometheus pod adresem /metrics, aby pomóc w monitorowaniu samodzielnie hostowanej instancji. Metryki te obejmują:

Metryki klienta HTTP Finch#

Tuist używa Finch jako klienta HTTP i udostępnia szczegółowe dane dotyczące żądań HTTP:

Metryki żądań#

  • tuist_prom_ex_finch_request_count_total - Całkowita liczba żądań Finch (licznik)
    • Etykiety: finch_name, method, scheme, host, port, status
  • tuist_prom_ex_finch_request_duration_milliseconds - Czas trwania żądań HTTP (histogram)
    • Etykiety: finch_name, method, scheme, host, port, status
    • Wiadra: 10ms, 50ms, 100ms, 250ms, 500ms, 1s, 2.5s, 5s, 10s
  • tuist_prom_ex_finch_request_exception_count_total - Całkowita liczba wyjątków żądań Finch (licznik)
    • Etykiety: finch_name, method, scheme, host, port, kind, reason

Metryki kolejki puli połączeń#

  • tuist_prom_ex_finch_queue_duration_milliseconds - Czas oczekiwania w kolejce puli połączeń (histogram)
    • Etykiety: finch_name, scheme, host, port, pool
    • Wiadra: 1ms, 5ms, 10ms, 25ms, 50ms, 100ms, 250ms, 500ms, 1s
  • tuist_prom_ex_finch_queue_idle_time_milliseconds - Czas bezczynności połączenia przed użyciem (histogram)
    • Etykiety: finch_name, scheme, host, port, pool
    • Wiadra: 10ms, 50ms, 100ms, 250ms, 500ms, 1s, 5s, 10s
  • tuist_prom_ex_finch_queue_exception_count_total - Całkowita liczba wyjątków kolejki Finch (licznik)
    • Etykiety: finch_name, scheme, host, port, kind, reason

Metryki połączeń#

  • tuist_prom_ex_finch_connect_duration_milliseconds - Czas spędzony na nawiązywaniu połączenia (histogram)
    • Etykiety: finch_name, scheme, host, port, error
    • Wiadra: 10ms, 50ms, 100ms, 250ms, 500ms, 1s, 2.5s, 5s
  • tuist_prom_ex_finch_connect_count_total - Całkowita liczba prób połączenia (licznik)
    • Etykiety: finch_name, scheme, host, port

Wysyłanie metryk#

  • tuist_prom_ex_finch_send_duration_milliseconds - Czas wysłania żądania (histogram)
    • Etykiety: finch_name, method, scheme, host, port, error
    • Wiadra: 1ms, 5ms, 10ms, 25ms, 50ms, 100ms, 250ms, 500ms, 1s
  • tuist_prom_ex_finch_send_idle_time_milliseconds - Czas bezczynności połączenia przed wysłaniem (histogram)
    • Etykiety: finch_name, method, scheme, host, port, error
    • Wiadra: 1ms, 5ms, 10ms, 25ms, 50ms, 100ms, 250ms, 500ms

Wszystkie metryki histogramów udostępniają warianty _bucket, _sum i _count do szczegółowej analizy.

Inne wskaźniki#

Oprócz metryk Finch, Tuist udostępnia metryki dla:

  • Wydajność maszyny wirtualnej BEAM
  • Niestandardowe metryki logiki biznesowej (magazyn, konta, projekty itp.).
  • Wydajność bazy danych (w przypadku korzystania z infrastruktury hostowanej przez Tuist)

Operacje#

Tuist udostępnia zestaw narzędzi pod adresem /ops/, których można użyć do zarządzania instancją.

Authorization

Tylko osoby, których uchwyty są wymienione w zmiennej środowiskowej TUIST_OPS_USER_HANDLES mogą uzyskać dostęp do punktów końcowych /ops/.

  • Błędy (/ops/errors): Możesz wyświetlić nieoczekiwane błędy, które wystąpiły w aplikacji. Jest to przydatne do debugowania i zrozumienia, co poszło nie tak i możemy poprosić Cię o udostępnienie nam tych informacji, jeśli napotkasz problemy.
  • Dashboard (/ops/dashboard): Możesz wyświetlić pulpit nawigacyjny, który zapewnia wgląd w wydajność i stan aplikacji (np. zużycie pamięci, uruchomione procesy, liczbę żądań). Ten pulpit nawigacyjny może być bardzo przydatny, aby zrozumieć, czy używany sprzęt jest wystarczający do obsługi obciążenia.