KehittäjätJulkaisut ja muuttujat
Julkaisut, muuttujat ja lokit
Esimerkit käyttävät pikaoppaan hw-apufunktiota ja $API:a, ja $APP on sovelluksen uuid.
Ympäristömuuttujat#
Muuttujat näkyvät sovelluksellesi ympäristömuuttujina ajon aikana, ja buildin aikana, ellet poista sitä käytöstä.
| Kutsu | Mitä se tekee |
|---|---|
GET /applications/{uuid}/envs | Listaa ne. Arvot ovat null, ellei tunnuksella ole Arkaluonteisten tietojen luku -oikeutta. |
PATCH /applications/{uuid}/envs/bulk | Luo tai päivitä useita kerralla: {"data": [{"key", "value"}, …]} |
POST /applications/{uuid}/envs | Luo yksi (409, jos avain on olemassa) |
PATCH /applications/{uuid}/envs | Päivitä yksi key:n perusteella |
DELETE /applications/{uuid}/envs/{env_uuid} | Poista yksi |
hw -X PATCH $API/applications/$APP/envs/bulk -d '{"data": [
{"key": "LOG_LEVEL", "value": "info"},
{"key": "STRIPE_KEY", "value": "sk_live_…", "is_shown_once": true},
{"key": "GREETING", "value": "Hello $USER", "is_literal": true}
]}'
is_shown_once: arvoa ei voi koskaan lukea takaisin, ei konsolissa eikä rajapinnan kautta.is_literal: arvon sisällä olevat$NAMESsäilyvät tekstinä eikä niitä laajenneta.is_multiline: arvoille kuten PEM-avaimet.is_buildtime/is_runtime: milloin muuttuja on käytettävissä (oletuksena molemmissa).
Jaetut muuttujat asetetaan kerran ja monet sovellukset käyttävät niitä: {{team.KEY}}, {{project.KEY}} tai {{environment.KEY}} sovelluksen muuttujan arvossa. Hallitse niitä päätepisteillä /team/envs, /projects/{uuid}/envs ja /projects/{uuid}/environments/{env}/envs.
Käynnissä olevat kontit pitävät muuttujat, joilla ne käynnistettiin. Julkaise sovellus (alla) muutosten jälkeen.
Julkaiseminen#
hw -X POST $API/applications/$APP/start # build and start
hw -X POST "$API/applications/$APP/start?force=true" # rebuild without the build cache
hw -X POST $API/applications/$APP/restart # restart without rebuilding
hw -X POST $API/applications/$APP/stop # take it offline
start vastaa {"message": "Deployment request queued.", "deployment_uuid": "…"}. Julkaisu etenee queued → in_progress → finished, tai päättyy tilaan failed tai cancelled-by-user. Jos build epäonnistuu, edellinen versio jatkaa toimintaansa. Kun terveystarkistus on päällä (health_check_enabled, health_check_path), uusi versio ottaa vastuun vasta, kun se vastaa.
| Kutsu | Mitä se tekee |
|---|---|
GET /deployments/{uuid} | Yhden julkaisun tila, koontiloki kentässä logs |
GET /deployments/applications/{uuid}?skip=0&take=10 | Sovelluksen julkaisut, uusin ensin: {count, deployments} |
GET /deployments | Jonossa olevat tai juuri nyt käynnissä olevat julkaisut koko tiimissä |
POST /deployments/{uuid}/cancel | Peru jonossa oleva tai käynnissä oleva julkaisu |
POST /deploy?uuid=a,b tai ?tag=web | Julkaise useita sovelluksia kerralla uuid:n tai tunnisteen perusteella |
SDK:ssa on deployAndWait(appUuid) ja deployments.wait(deploymentUuid), jotka kyselevät tilaa puolestasi ja heittävät virheen koontilokin lopun kanssa, kun julkaisu epäonnistuu.
Lokit#
Koontilokit ovat osa julkaisua. logs on JSON-koodattu rivilista; hidden-merkityt rivit ovat sisäisiä build-komentoja:
hw $API/deployments/$DEPLOYMENT | jq -r '.logs | fromjson | map(select(.hidden | not) | .output) | .[-50:][]'
Ajonaikaiset lokit ovat käynnissä olevan kontin tuloste (vaatii Arkaluonteisten tietojen luku -oikeuden):
hw "$API/applications/$APP/logs?lines=200&show_timestamps=true" | jq -r .logs
Pysäytetty sovellus vastaa 400 Application is not running. Suorittimen ja muistin historiaan käytä GET /applications/{uuid}/metrics?minutes=60.
Palauttaminen#
hw $API/applications/$APP/rollback-images | jq # images you can go back to
hw -X POST $API/applications/$APP/rollback -d '{"tag": ""}'
Palautus julkaisee aiemman konttikuvan uudelleen ilman uutta buildia.
Push-julkaisut#
Jos haluat julkaista jokaisella git push:lla, käytä jotakin näistä:
- GitHub App (suositeltu GitHubille): yhdistä se konsolissa kohdassa Lähteet ja luo sitten sovelluksia sen repositorioista (
POST /applications/private-github-app). Pushit sovelluksen haaraan julkaistaan automaattisesti; webhookia ei tarvitse asettaa. - Repositorion webhook (mikä tahansa julkinen tai deploy-avaimella käytettävä repositorio GitHubissa, GitLabissa, Bitbucketissa tai Giteassa): aseta sovellukselle salaisuus ja lisää sitten webhook repositorioosi.
SECRET=$(openssl rand -hex 24)
hw -X PATCH $API/applications/$APP -d "{\"manual_webhook_secret_github\": \"$SECRET\"}"
Avaa GitHubissa repositorion Settings → Webhooks → Add webhook:
| Kenttä | Arvo |
|---|---|
| Payload URL | https://console.app.hostwolf.net/webhooks/source/github/events/manual |
| Sisältötyyppi | application/json |
| Salaisuus | yllä oleva $SECRET |
| Tapahtumat | Vain push-tapahtuma |
Muille palveluille käytä manual_webhook_secret_gitlab, _bitbucket tai _gitea ja vastaavaa /webhooks/source/<host>/events/manual-URL-osoitetta. Sovelluksen Webhooks-välilehti konsolissa näyttää myös URL-osoitteet. Salaisuuksissa pitää olla vähintään 16 merkkiä. Vain pushit sovelluksen git_branch-haaraan julkaisevat sen; watch_paths (esim. "src/**") rajaa julkaisut muutoksiin näissä poluissa.
Julkaisu CI:stä#
Kutsu julkaisun päätepistettä, kun testisi menevät läpi. Tunnus, jolla on vain Julkaisu- ja Luku-oikeudet, riittää:
curl -fsS -X POST "https://console.app.hostwolf.net/api/v1/deploy?uuid=$APP_UUID" \
-H "Authorization: Bearer $HOSTWOLF_APPS_TOKEN"
Tallenna tunnus GitHub Actionsissa repositorion salaisuudeksi:
# .github/workflows/deploy.yml
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy to Hostwolf Apps
run: |
curl -fsS -X POST "https://console.app.hostwolf.net/api/v1/deploy?uuid=${{ vars.HOSTWOLF_APP }}" \
-H "Authorization: Bearer ${{ secrets.HOSTWOLF_APPS_TOKEN }}"
Jos haluat julkaista konttikuvan, jonka putkesi on jo rakentanut, luo sovellus siitä konttikuvasta (POST /applications/dockerimage) ja anna docker_tag päätepisteelle /deploy.