typescript - Google Cloud Build, referere til overordnet mappe i et monorepo
Vi har en monorepo-oppsett der hver mappe har en typescript/node-tjeneste. Det finnes også en delt /types-mappe som vi henter inn i hvert prosjekt ved bruk av TypeScript prosjektreferanser.
Siden du ikke kan KOPIERE en overordnet mappe, bruker vi lokalt:
docker build -f Dockerfile ..Som fungerer fint, men å prøve det samme ved å bruke cloudbuild.yaml og docker-byggeren gir følgende feil om en manglende filbeskrivelse?
docker.io/library/docker:latest
error checking context: 'file ('/proc/1/fd/5') not found or excluded by .dockerignore'.
ERROR
ERROR: build step 0 "docker" failed: step exited with non-zero status: 1
------------------------------------------------------------------------------------------------------------------------------------------------
ERROR: (gcloud.builds.submit) build dc31344a-b836-4089-87ab-e6ce7c69cab3 completed with status "FAILURE"
Så hvordan kan vi bruke gcloud build med Cloud Run-tjenester i et mono-repo og fortsatt hente inn våre delte typer?
Svar #1
Når du kjører en Cloud Build-jobb, kopierer den alle filene fra gjeldende katalog. Hvis du er i en underkatalog, blir ikke alle søsken- eller overordnede kataloger lastet opp og dermed kjent i Cloud Build.
For dette må du kjøre Cloud Build-jobben din på overordnet katalognivå, og referere til CloudBuild.yaml-filen i kommandoen din (og peke til riktig undermappe).
Tenk også på å endre definisjonen av steget i cloudbuild.yaml, fordi rotmappen din ikke lenger er undermappen, men rotkatalogen. Du kan bruke directory-parameteren for å spesifisere arbeidskatalogen for hvert steg.
REDIGER 1
Hvis du ikke vil laste opp hele monorepoet ved hver komponentbygging, kan du ignorere filer når du manuelt utløser gcloud builds summit-kommandoen.
Men du kan ikke gjøre dette med triggerne. Du kan ignorere filer, men denne gangen betyr det at filer må ignoreres i betingelsen for byggeverktøyets trigger (for eksempel Readme-filen; når du sender den, er det unyttig å utløse en ny bygging). Men hvis byggingen utløses av andre filer, vil disse 'ignorerte filene' fortsatt være til stede i kjørejobben.