Mercure-Hub: 5. GitLab CI
Ši dokumentacija yra GitHub Actions ir GitLab CI vadovo dalis. Visą vadovą rasite čia: Paleiskite tikrą Mercure Hub paslaugą iš savo GitHub Actions arba GitLab CI pipeline, vykdykite testus ir automatiškai viską uždarykite.
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo visiškai administruojamą Mercure-Hub cloud paslaugą, sukurtą tam, kad realaus laiko duomenų perdavimas būtų paprastas ir patikimas. Jūs gaunate:
- Neriboti užklausų ir žinučių dydžiai visiškam lankstumui.
- Individualus domenas su integruotu HTTPS saugumu (pavyzdžiui, https://real-time.jusu-imone.com).
- Paprasti vieno paspaudimo atnaujinimai, kad jūsų hub visada būtų naujausias be jokių rūpesčių.
- Aukšta sparta ir stipri apsauga naudojant privačią, dedikuotą infrastruktūrą.
- Keli regionai: 🇪🇺 Europa ir 🇺🇸 USA užtikrina mažą delsą duomenų perdavimui.
Pradėkite greitai: užtenka vos 5 minučių, kad paleistumėte savo Mercure-Hub cloud hosting aplinką ir pradėtumėte siųsti realaus laiko atnaujinimus savo aplikacijoms.
Šią konfigūraciją galite išsaugoti kaip .gitlab-ci.yml. Su šiuo nustatymu kiekvienas pipeline paleidimas sukurs naują tikrą Mercure Hub instanciją jūsų testams.
test:
image: ubuntu:24.04
variables:
STACK_NAME: "ci-mercure-hub-$CI_PIPELINE_ID-$CI_JOB_ID"
INSTANCE: "20G" # Pakeiskite jei reikia (žr. 3 žingsnį)
REGION: "europe"
SERVICE_STORE: "mercure-hub"
# STACKHERO_TOKEN gaunamas iš CI/CD kintamojo, kurį sukūrėte 1 žingsnyje.
script:
- set -euo pipefail
- curl -fsSL https://www.stackhero.io/install.sh | sh
- apt-get update && apt-get install -y --no-install-recommends jq curl
- STACK_ID=$(stackhero --format=script stack-create --name="$STACK_NAME")
- echo "STACK_ID=$STACK_ID" >> deploy.env
- SERVICE_ID=$(stackhero --format=script service-add --stack="$STACK_ID" --service-store="$SERVICE_STORE" --instance="$INSTANCE" --region="$REGION")
- echo "SERVICE_ID=$SERVICE_ID" >> deploy.env
- stackhero service-wait-for --service="$SERVICE_ID"
- config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
- host=$(echo "$config" | jq -r '.configuration.domain')
# Request the hub endpoint and check it answers.
- curl -fsS -o /dev/null -w "%{http_code}" "https://$host/.well-known/mercure?topic=test" | grep -qE "^(200|400|401)$"
- echo "✅ Mercure Hub pasiekiamas iš CI."
# Čia galite paleisti savo testų rinkinį naudodami aukščiau gautus prisijungimo duomenis ...
after_script:
- test -f deploy.env && . ./deploy.env || true
- >
if [ -n "${SERVICE_ID:-}" ]; then
stackhero service-delete --service="$SERVICE_ID" --confirm
stackhero service-wait-for --service="$SERVICE_ID"
fi
- >
if [ -n "${STACK_ID:-}" ]; then
stackhero stack-delete --stack="$STACK_ID" --confirm
fi
GitLab aplinkoje išvalymas vykdomas after_script sekcijoje. Ši dalis visada bus vykdoma, net jei job'as nepavyks, todėl jūsų Mercure Hub resursai bus pašalinti ir jums nebus skaičiuojami mokesčiai už nenaudojamus resursus.
GitLab aplinkoje
after_scriptvykdomas naujoje shell sesijoje. Todėl scenarijus job'o metu įrašo paslaugos ir stack ID įdeploy.envir prieš išvalymą juos įkelia iš naujo. Taip užtikrinama, kad net jei job'as nutrūktų, jūsų resursai vis tiek bus išvalyti.
Tai visas CI gyvavimo ciklas su Mercure Hub: sukurkite stack, pridėkite paslaugą, palaukite, gaukite prisijungimo duomenis, atlikite smoke testą ir visada išvalykite. Kiekvienas pipeline paleidimas gauna realią, izoliuotą paslaugą, o pabaigus niekas nelieka veikti. Daugiau informacijos apie galimas komandas ir neinteraktyvų STACKHERO_TOKEN autentifikavimą rasite pilnoje CLI dokumentacijoje.