Hoppa till innehållet
Utrullning

git push, och sedan är det uppe

En push bygger avbilden, startar den nya versionen bredvid den gamla, kontrollerar att den svarar och flyttar trafiken först därefter. Den gamla versionen tas inte bort, så vägen tillbaka är ett kommando och inte ett ärende.

500 minuter per månadByggminuter i planen Fri, som kostar 0 krKvoter och priser ur @gaddr/pricing
19 €Utvecklare, per månad exkl. moms, med förhandsmiljö per ärendePlanen Utvecklare i @gaddr/pricing
Ett kommandoTillbaka till förra versionen, utan att bygga omIngår i tjänsten Utrullning, se app/lib/katalog.ts
git pushBYGGTESTAVBILDNY, KÖRFÖRRA, VILANDEVÄXELTILLBAKA FINNSTRAFIK
Hela flödet

Tre kommandon första gången, ett kommando varje gång därefter

Ingen webbsida behöver öppnas för att komma i gång, och ingen del av flödet kräver att ni kontaktar oss. Det som går att göra i instrumentpanelen går att göra från terminalen, och tvärtom.

terminalFörsta gången
# Skapa projektet och peka ut regionen.
gaddr projekt skapa min-app --region sto1 --plan fri

# Koppla ihop katalogen med projektet. Kommandot lägger till
# fjärrarkivet åt er, så ingen adress behöver skrivas av för hand.
gaddr git koppla gaddr-code

# Sätt taket redan nu. Noll betyder att ingenting kan faktureras.
gaddr tak 0

Kommandot git koppla fungerar likadant mot GitHub, GitLab och Bitbucket. Den enda skillnaden är vilken källa ni pekar ut.

terminalVarje gång därefter
$ git push gaddr main
Räknar objekt: 47, klart.
gaddr: commit 9f3c1ab mottagen
gaddr: buildpack Node 22, vald ur package.json
gaddr: bygget klart, avbilden signerad med cosign
gaddr: ny version startad bredvid den gamla
gaddr: hälsokontrollen svarar 200 på /halsa
gaddr: trafiken flyttad, gamla versionen står kvar
gaddr: https://min-app.sto1.gaddr.app

Utskriften är ett exempel från en Node-app. Hälsokontrollen mäter tjänsten och inte porten, alltså svarar en behållare som har startat men inte hunnit ladda färdigt ännu inte ja.

terminalÅtergång
$ gaddr versioner min-app
  9f3c1ab   nu       trafik 100 procent
  1c77e40   förra    trafik 0 procent
  a03b8d2   äldre    trafik 0 procent

$ gaddr tillbaka min-app
gaddr: trafiken flyttad till 1c77e40
gaddr: 9f3c1ab står kvar och går att gå tillbaka till

Återgången bygger ingenting om. Den flyttar trafiken till en version som redan kör, vilket är skälet till att den är klar innan ni hinner läsa den här meningen.

terminalFörhandsmiljö
$ gaddr forhand 214
gaddr: bygger från grenen 214-ny-kassa
gaddr: egen databas, kopierad från den skarpa och maskad
gaddr: https://214.min-app.forhand.gaddr.app
gaddr: miljön tas bort när ärendet stängs

Adressen läggs som en kommentar i ärendet. Den som granskar behöver inte checka ut grenen för att se vad den gör.

Det som ingår i tjänsten står i app/lib/katalog.ts under slug utrullning: Gaddr Code som standard, GitHub, GitLab och Bitbucket som val. Förhandsmiljö per ärende. Återgång till förra versionen med ett kommando. Utrullning stoppas när maskinen är trång.

Var koden bor

Gaddr Code är standardvalet, och de andra tre kostar inte mer

Vi tjänar ingenting på var ert Git ligger, så det finns ingen anledning att göra det svårt att ha det någon annanstans. Kopplingen är densamma, byggkön är densamma, och priset är detsamma.

  • Gaddr Code

    Vårt eget Git, med byggkön inne i samma nät som maskinerna. Ingen nyckel behöver lämna oss, och bygget hämtar inte koden genom en tredje part.

    Standardval
  • GitHub

    Koppla organisationen en gång. Varje push till den gren ni pekar ut bygger, och varje ny gren kan få en egen förhandsmiljö.

    Val
  • GitLab

    Både gitlab.com och en egen installation i ert nät. Den egna installationen nås genom en utgående anslutning, alltså utan att ni öppnar en port in.

    Val
  • Bitbucket

    Samma koppling, samma bygge, samma förhandsmiljöer. Var koden bor är ert val och det påverkar inte priset.

    Val

Avbilderna går att ta med sig

Bygget lägger avbilden i avbildsregister, som kör Harbor under Apache-2.0. Ni kan hämta avbilden och köra den på en maskin som inte står hos oss, och det är hela poängen med att den är en vanlig OCI-avbild och inte ett eget format.

  • Sårbarhetsskanning vid push
  • Signering med cosign
  • Kvot per projekt
  • Spegling mellan regioner

Att hämta ut avbilden kostar ingenting extra, eftersom utgående trafik ingår i priset. Se raden Utgående trafik i prislistan.

Mallar

En mall är kod ni får läsa, inte en svart låda

Mallen läggs i ert eget arkiv som vanliga filer. Ni ser vilken bild bygget utgår från, vilka portar som öppnas och vilken hälsokontroll som används, och ni ändrar det utan att fråga oss.

  1. 1

    Välj mall, eller ingen alls

    Har projektet redan en Dockerfile används den. Saknas den läser bygget språket ur projektets egna filer och väljer en buildpack, och ni kan skriva över valet med en rad i gaddr.toml.

  2. 2

    Läs den innan ni kör den

    Mallarna är öppen källkod. Det står ordagrant i katalogen som svar på det vi inte har: mallar med öppen källkod, som ni kan läsa och ändra innan ni rullar ut dem.

  3. 3

    Kör den, och behåll den

    Mallen är utgångspunkten och inte ett beroende. Ändrar vi vår mall ändras inte er kopia, och ni hämtar in ändringen när ni själva vill.

Bygget körs av Knative (Apache-2.0) och Buildpacks (Apache-2.0), enligt app/lib/katalog.ts.

gaddr.tomlProjektfilen, hela den
namn = "min-app"
region = "sto1"

[bygg]
buildpack = "node"
kommando = "npm run build"

[start]
kommando = "node server.js"
port = 3000
sond = "/halsa"

[skala]
min = 1
max = 8

[tak]
eur = 40

Filen ligger i ert arkiv och versionshanteras med koden. En ändring i taket är en commit som någon kan granska, i stället för ett klick som ingen ser.

terminalSkala om utan att bygga om
$ gaddr skala min-app --min 2 --max 12
gaddr: skalan ändrad, ingen omstart behövs

$ gaddr logg min-app --folj
gaddr: visar loggen från alla körande versioner

Skalan ligger i samma fil som resten av projektet, så en ändring i terminalen och en ändring i arkivet ger samma sak. Kommandot skriver tillbaka i gaddr.toml.

Förhandsmiljöer

Varje ärende får en adress som går att klicka på

Den som granskar en ändring ska kunna se den köra, inte läsa sig till hur den skulle kunna se ut. Miljön skapas när grenen pushas och faller bort när ärendet stängs.

Egen databas, med maskade uppgifter

Förhandsmiljön får en egen kopia av databasen och inte en anslutning till den skarpa. Fälten med personuppgifter maskas i kopieringen, så ett test som skickar ett mejl inte kan nå en verklig kund.

En delad databas mellan förhandsmiljö och drift är den vanligaste vägen till att ett test skriver i skarp data.

Miljön tas bort av sig själv

När ärendet stängs tas miljön bort, och byggminuterna går tillbaka till kvoten. Planen Utvecklare har 5 000 minuter per månad och planen Team har utan tak.

En glömd förhandsmiljö som ligger kvar i tre månader är en post på fakturan som ingen kan förklara.

Samma bygge som det skarpa

Förhandsmiljön byggs med samma buildpack, samma avbild och samma hälsokontroll som drift. En ändring som fungerar i förhandsmiljön men inte i drift är därmed en skillnad i data eller i konfiguration, och det går att leta efter.

Två olika byggvägar gör att felet flyttar sig i stället för att försvinna.

När det inte går

Tre svar ni kan få, ordagrant som de står i felkatalogen

En utrullning som vägrar ska säga vilken kontroll som sa nej och vad ni gör åt det. Koden är densamma i loggen, i instrumentpanelen och i supportärendet, så att alla tre tittar på samma händelse.

  • GDR-HOST-0603

    Driftgrinden stoppade utrullningen.

    Läs vilken av kontrollerna som sa nej i utrullningsloggen. En utrullning under lagringstryck gör felet värre, inte bättre.

    status 409, warning

  • GDR-HOST-0606

    Bygget avbröts eftersom det överskred sin tidsgräns.

    Höj tidsgränsen i projektets inställningar, eller dela upp bygget. Ett bygge utan tidsgräns kan ta ned maskinen för alla andra.

    status 504, error

  • GDR-HOST-0605

    Ingen SSH-nyckel är kopplad till kontot.

    Lägg till en publik nyckel i kontoinställningarna. Vi skickar aldrig ett lösenord i klartext till en ny server.

    status 400, warning

Driftgrinden står mellan bygget och starten

Grinden kör tretton kontroller innan något nytt får starta. Bland dem att grinden själv är oförändrad, att maskinen inte just har startat om, och trycket på maskinen, ledigt utrymme, om någon process har väntat på disken i över en minut, och om säkerhetskopiornas återställningsprov har körts. Säger den nej svarar utrullningen GDR-HOST-0603, och den gamla versionen fortsätter köra.

Läs vilken av kontrollerna som sa nej i utrullningsloggen. En utrullning under lagringstryck gör felet värre, inte bättre.

Kontrollerna står i ops/sjalvlakning/README.md under rubriken Deploygrinden. Läs hur självläkningen fungerar.

TJÄNSTINGET SVARVAKTHÄLSOFRÅGATIDEN GICK UTOMSTART12345PAUSEN VÄXERLARM, INGEN LOOP
Vad det kostar

Byggminuter ingår i planen, och taket står kvar

Alla belopp är exkl. moms. När byggminuterna är slut byggs ingenting nytt, och det som redan kör fortsätter köra. Ingen minut över kvoten faktureras, eftersom ingen minut över kvoten körs.

Byggminuter, mottagare och månadspris per plan i Gaddr Hosting.
PlanByggminuterFör vemPris
Fri500 minuter per månadDen som provar, den som bygger på fritiden, och studenten.0 kr
Utvecklare5 000 minuter per månadDen som har något i drift och vill kunna nå en människa.19 € per månad
Teamutan takEtt företag med kunder som märker när något ligger nere.99 € per månad
SuveränEnligt avtalMyndighet, koncern och den som har ett säkerhetsskyddsavtal.Offert

Kvoterna och beloppen läses ur HOSTING_PLANS i packages/pricing. Ändras en siffra där ändras den på den här sidan samma dag, eftersom det inte finns någon andra kopia. Hela prislistan.

Under huven

Vad som faktiskt kör bygget, och under vilken licens

Ni ska kunna ta med er det ni har byggt. Det går bara om lagren under är kända projekt med tillåtande licenser, och därför står både valet och det bortvalda utskrivet.

Knative
Apache-2.0
Buildpacks
Apache-2.0
Bortvalt: HashiCorp Nomad
BUSL-1.1 sedan version 1.7, och tilläggsvillkoret förbjuder uttryckligen en konkurrerande driftstjänst. Alltså exakt det här.
Motsvarar hos AWS
AWS App Runner och CodePipeline
Motsvarar hos Google Cloud
Cloud Build och Cloud Deploy
Motsvarar hos Azure
Azure Pipelines

Motorerna och deras licenser läses ur app/lib/katalog.ts. GADDR levererar under MIT, Apache eller BSD, och en licens som är skriven för att träffa den som erbjuder programvaran som en tjänst kommer inte in i leveransen.

  • Utrullning stoppas när maskinen är trång

    En utrullning under lagringstryck gör felet värre och inte bättre. Grinden väntar hellre några minuter än lägger last på en maskin som redan inte hinner med.

    GDR-HOST-0603
  • Rullande utrullning med återgång

    Den nya versionen startar bredvid den gamla och tar över trafiken först när den svarar. Misslyckas hälsokontrollen flyttas ingen trafik alls, och ni märker det i loggen och inte hos kunden.

    tjanster/behallare
  • Egna domäner med TLS

    Certifikaten hämtas genom ACME och förnyas automatiskt. Ni pekar en post i DNS, och resten sker utan att någon behöver komma ihåg ett datum.

    tjanster/lastbalansering
Nätverksutrustning i ett rack, dit en utrullning till slut tar vägen
Vägen ut

Fyra hållpunkter mellan en commit och trafik

Utrullningen är inte ett kommando, den är en kedja. Bygget kör på en maskin ni inte äger, den nya versionen startar bredvid den gamla, och trafiken flyttas först när hälsokontrollen har svarat.

  • Bygget kör på en maskin, inte på någons dator.
  • Den nya versionen startar bredvid den gamla.
  • Trafiken flyttas först när hälsokontrollen svarar.
  • En utrullning som inte går att rulla tillbaka är inte klar.
Frågor

Det ni vill veta innan första pushen

Vanliga frågor

Måste vi flytta koden till Gaddr Code?

Nej. Gaddr Code är standardvalet, men GitHub, GitLab och Bitbucket fungerar likadant och kostar detsamma. Kopplingen görs med ett kommando, och den går att byta senare utan att projektet byggs om.

Vad händer med den gamla versionen när jag pushar?

Den fortsätter köra tills den nya har svarat på sin hälsokontroll, och den tas inte bort därefter heller. Återgången flyttar bara trafiken tillbaka, och eftersom ingenting byggs om är den klar direkt.

Vad händer om bygget aldrig blir klart?

Det avbryts vid sin tidsgräns och svarar GDR-HOST-0606. Höj tidsgränsen i projektets inställningar, eller dela upp bygget. Ett bygge utan tidsgräns kan ta ned maskinen för alla andra. Ett bygge utan tidsgräns kan ta ned maskinen för alla andra, så gränsen finns även när ni inte har satt den själva.

Kan en utrullning vägra av någon annan anledning?

Ja. Driftgrinden kör tretton kontroller innan något nytt får starta och svarar GDR-HOST-0603 när en av dem säger nej. Läs vilken av kontrollerna som sa nej i utrullningsloggen. En utrullning under lagringstryck gör felet värre, inte bättre. Kontrollerna står utskrivna på driftsidan.

Hur loggar jag in på maskinen?

Med en publik nyckel som ni lägger upp själva. Finns ingen nyckel svarar vi GDR-HOST-0605 i stället för att skapa servern. Lägg till en publik nyckel i kontoinställningarna. Vi skickar aldrig ett lösenord i klartext till en ny server.

Behöver vi skriva en Dockerfile?

Nej, men ni får. Finns en Dockerfile används den. Saknas den väljs en buildpack ur projektets egna filer, och valet går att skriva över i gaddr.toml.

Vad kostar en förhandsmiljö?

Den kör på projektets byggminuter och på den plan ni redan har. Planen Utvecklare kostar 19 € per månad exkl. moms och har 5 000 minuter per månad. Miljön tas bort när ärendet stängs.

Kan bygget dra i väg och bli dyrt?

Nej. Taket sätts i euro per månad, och när det är nått pausas beräkning och utgående trafik i stället för att fortsätta och fakturera. Så fungerar taket.

Kan vi ta med oss avbilden till en annan leverantör?

Ja. Avbilden är en vanlig OCI-avbild i avbildsregister, och utgående trafik ingår i priset. Att hämta ut allt kostar alltså ingenting extra, vilket är en avsiktlig skillnad mot de tre stora.

Fungerar detta mot ett GitLab som står i vårt eget nät?

Ja. Kopplingen görs genom en utgående anslutning från er sida, så ni behöver inte öppna en port in. Byggkön når aldrig något annat än det arkiv ni har pekat ut.

Kan vi köra bygget i en annan region än tjänsten?

Ja. Bygget och tjänsten pekas ut var för sig i gaddr.toml, och avbilden speglas mellan regioner utan avgift för trafiken. Se vilka regioner som finns.

Första pushen tar mindre tid än att läsa den här sidan

Planen Fri kostar 0 kr, ger 500 minuter per månad och har taket satt på noll från början. Det finns ingenting att ångra.