KehittäjätPikaopas
Pikaopas: julkaise GitHubista
Tämä opas julkaisee sovelluksen julkisesta GitHub-repositoriosta pelkillä HTTP-kutsuilla. Tarvitset:
- sovelluspalvelin, ostettu konsolissa kohdassa Palvelimet ja laskutus;
- API-tunnus, jolla on oikeudet Luku, Kirjoitus, Julkaisu ja Arkaluonteisten tietojen luku;
curljajq.
Esimerkit käyttävät Node-sovellusta, joka kuuntelee porttia 3000. Vaihda tilalle oma repositoriosi ja porttisi.
1. Valmistele komentotulkki#
export HOSTWOLF_APPS_TOKEN='12|your_token'
export API=https://console.app.hostwolf.net/api/v1
hw() { curl -sS --fail-with-body -H "Authorization: Bearer $HOSTWOLF_APPS_TOKEN" -H "Accept: application/json" -H "Content-Type: application/json" "$@"; }
hw $API/team | jq '{id, name}'
hw on pieni apufunktio, jotta alla olevat komennot pysyvät lyhyinä; --fail-with-body pysähtyy virheisiin ja tulostaa rajapinnan viestin. Jos tämä tulostaa tiimisi, tunnus toimii.
2. Valitse palvelin#
hw $API/hostwolf/servers | jq '.[] | {name, city, size, status, server_uuid}'
export SERVER=$(hw $API/hostwolf/servers | jq -r '[.[] | select(.kind == "app" and .status == "ready")][0].server_uuid')
server_uuid tarvitaan sovelluksen luomiseen. VPS-merkinnöillä sitä ei ole: sovellukset ajetaan sovelluspalvelimilla.
3. Luo projekti#
export PROJECT=$(hw -X POST $API/projects -d '{"name": "hello"}' | jq -r .uuid)
Uudessa projektissa on valmiina production-ympäristö.
4. Luo sovellus#
export APP=$(hw -X POST $API/applications/public -d "{
\"project_uuid\": \"$PROJECT\",
\"environment_name\": \"production\",
\"server_uuid\": \"$SERVER\",
\"git_repository\": \"https://github.com/you/your-app\",
\"git_branch\": \"main\",
\"build_pack\": \"nixpacks\",
\"ports_exposes\": \"3000\"
}" | jq -r .uuid)
build_pack:nixpackstairailpacktunnistaa kielen ja tekee buildin puolestasi;dockerfilekäyttää repositorion Dockerfilea;statictarjoilee tiedostoja.- Jätä
domainspois, niin saat generoidun HTTPS-osoitteen palvelimesi nimen alle. Jos haluat käyttää omaasi, anna"domains": "https://shop.example.com"ja osoita DNS-tietue palvelimen IP-osoitteeseen. - Yksityiselle repositoriolle käytä sen sijaan
/applications/private-deploy-keytai/applications/private-github-app; katso API-viite.
5. Aseta ympäristömuuttujat#
hw -X PATCH $API/applications/$APP/envs/bulk -d '{"data": [
{"key": "NODE_ENV", "value": "production"},
{"key": "SESSION_SECRET", "value": "change-me", "is_shown_once": true}
]}' | jq 'map(.key)'
is_shown_once piilottaa arvon pysyvästi tallennuksen jälkeen.
6. Julkaise ja odota#
DEPLOYMENT=$(hw -X POST $API/applications/$APP/start | jq -r .deployment_uuid)
while :; do
STATUS=$(hw $API/deployments/$DEPLOYMENT | jq -r .status)
echo "$STATUS"
case $STATUS in finished|failed|cancelled*) break ;; esac
sleep 5
done
Ensimmäinen build kestää yleensä yhdestä kolmeen minuuttia. Jos se epäonnistuu, koontiloki kertoo syyn:
hw $API/deployments/$DEPLOYMENT | jq -r '.logs | fromjson | map(select(.hidden | not) | .output) | .[-30:][]'
7. Avaa sovellus ja lue lokit#
hw $API/applications/$APP | jq -r .fqdn
hw "$API/applications/$APP/logs?lines=50" | jq -r .logs
fqdn listaa sovelluksen osoitteet pilkuilla erotettuina. Lokit vaativat Arkaluonteisten tietojen luku -oikeuden.
8. Siivoa jäljet#
hw -X DELETE $API/applications/$APP
hw -X DELETE $API/projects/$PROJECT
Sovelluksen poistaminen poistaa myös sen taltiot, ellet anna parametria ?delete_volumes=false. Projektin voi poistaa vasta, kun se on tyhjä, joten odota sovelluksen poistamisen jälkeen muutama sekunti.
Seuraavat askeleet#
- Julkaise jokaisella
git push:lla: push-julkaisut. - Lisää tietokanta: hallinnoidut tietokannat.
- Käsittele enemmän liikennettä: usea palvelin ja automaattinen skaalaus.
- Sama kulku TypeScriptillä on SDK:n pikaoppaassa.