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.
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.
# 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 0Kommandot git koppla fungerar likadant mot GitHub, GitLab och Bitbucket. Den enda skillnaden är vilken källa ni pekar ut.
$ 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.appUtskriften ä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.
$ 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.
$ 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ängsAdressen 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.
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.
StandardvalGitHub
Koppla organisationen en gång. Varje push till den gren ni pekar ut bygger, och varje ny gren kan få en egen förhandsmiljö.
ValGitLab
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.
ValBitbucket
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.
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
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
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
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.
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 = 40Filen 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.
$ 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 versionerSkalan 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.
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.
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.
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.
| Plan | Byggminuter | För vem | Pris |
|---|---|---|---|
| Fri | 500 minuter per månad | Den som provar, den som bygger på fritiden, och studenten. | 0 kr |
| Utvecklare | 5 000 minuter per månad | Den som har något i drift och vill kunna nå en människa. | 19 € per månad |
| Team | utan tak | Ett företag med kunder som märker när något ligger nere. | 99 € per månad |
| Suverän | Enligt avtal | Myndighet, 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.
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-0603Rullande 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/behallareEgna 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

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