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ä.

KutsuMitä se tekee
GET /applications/{uuid}/envsListaa ne. Arvot ovat null, ellei tunnuksella ole Arkaluonteisten tietojen luku -oikeutta.
PATCH /applications/{uuid}/envs/bulkLuo tai päivitä useita kerralla: {"data": [{"key", "value"}, …]}
POST /applications/{uuid}/envsLuo yksi (409, jos avain on olemassa)
PATCH /applications/{uuid}/envsPä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 $NAMES sä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.

KutsuMitä se tekee
GET /deployments/{uuid}Yhden julkaisun tila, koontiloki kentässä logs
GET /deployments/applications/{uuid}?skip=0&take=10Sovelluksen julkaisut, uusin ensin: {count, deployments}
GET /deploymentsJonossa olevat tai juuri nyt käynnissä olevat julkaisut koko tiimissä
POST /deployments/{uuid}/cancelPeru jonossa oleva tai käynnissä oleva julkaisu
POST /deploy?uuid=a,b tai ?tag=webJulkaise 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 URLhttps://console.app.hostwolf.net/webhooks/source/github/events/manual
Sisältötyyppiapplication/json
Salaisuusyllä oleva $SECRET
TapahtumatVain 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.

Jumissa, tai puuttuuko päätepiste? Kerro meille osoitteessa app.hostwolf.net/contact tai [email protected].