package netlify import ( "dagger.io/dagger" "universe.dagger.io/alpine" "universe.dagger.io/bash" "universe.dagger.io/docker" "universe.dagger.io/netlify" ) nodeModulesMount: "/src/node_modules": dagger.#Mount & { dest: "/src/node_modules" type: "cache" contents: dagger.#CacheDir & { id: "todoapp-modules-cache" } } dagger.#Plan & { client: { filesystem: { ".": read: { contents: dagger.#FS exclude: [ "README.md", "build", "netlify.cue", "node_modules", ] } build: write: contents: actions.build.contents.output } env: { APP_NAME: string NETLIFY_TEAM: string NETLIFY_TOKEN: dagger.#Secret } } actions: { deps: docker.#Build & { steps: [ alpine.#Build & { packages: { bash: {} yarn: {} git: {} } }, docker.#Copy & { contents: client.filesystem.".".read.contents dest: "/src" }, // bash.#Run is a superset of docker.#Run // install yarn dependencies bash.#Run & { workdir: "/src" mounts: { "/cache/yarn": dagger.#Mount & { dest: "/cache/yarn" type: "cache" contents: dagger.#CacheDir & { id: "todoapp-yarn-cache" } } nodeModulesMount } script: contents: #""" yarn config set cache-folder /cache/yarn yarn install """# }, ] } test: bash.#Run & { input: deps.output workdir: "/src" mounts: nodeModulesMount script: contents: #""" yarn run test """# } build: { run: bash.#Run & { input: test.output mounts: nodeModulesMount workdir: "/src" script: contents: #""" yarn run build """# } contents: dagger.#Subdir & { input: run.output.rootfs path: "/src/build" } } deploy: netlify.#Deploy & { contents: build.contents.output site: client.env.APP_NAME token: client.env.NETLIFY_TOKEN team: client.env.NETLIFY_TEAM } } }