354334a3dc
* `cmd` is renamed to `command` for readability * `script` is removed. Feature moves up the stack (bash.#Run, python.#Run) Signed-off-by: Solomon Hykes <solomon@dagger.io>
135 lines
2.6 KiB
CUE
135 lines
2.6 KiB
CUE
// Deploy to Netlify
|
|
// https://netlify.com
|
|
package netlify
|
|
|
|
import (
|
|
"dagger.io/dagger"
|
|
|
|
"universe.dagger.io/alpine"
|
|
"universe.dagger.io/docker"
|
|
)
|
|
|
|
// Deploy a site to Netlify
|
|
#Deploy: {
|
|
// Contents of the site
|
|
contents: dagger.#FS
|
|
|
|
// Name of the Netlify site
|
|
// Example: "my-super-site"
|
|
site: string
|
|
|
|
// Netlify API token
|
|
token: dagger.#Secret
|
|
|
|
// Name of the Netlify team (optional)
|
|
// Example: "acme-inc"
|
|
// Default: use the Netlify account's default team
|
|
team: string | *""
|
|
|
|
// Domain at which the site should be available (optional)
|
|
// If not set, Netlify will allocate one under netlify.app.
|
|
// Example: "www.mysupersite.tld"
|
|
domain: string | *null
|
|
|
|
// Create the site if it doesn't exist
|
|
create: *true | false
|
|
|
|
// Source code of the Netlify package
|
|
_source: dagger.#Source & {
|
|
path: "."
|
|
include: ["*.sh"]
|
|
}
|
|
|
|
_build: docker.#Build & {
|
|
steps: [
|
|
alpine.#Build & {
|
|
packages: {
|
|
bash: {}
|
|
curl: {}
|
|
jq: {}
|
|
yarn: {}
|
|
}
|
|
},
|
|
docker.#Run & {
|
|
command: {
|
|
name: "yarn"
|
|
args: ["global", "add", "netlify-cli@8.6.21"]
|
|
}
|
|
},
|
|
docker.#Copy & {
|
|
contents: _source.output
|
|
dest: "/app"
|
|
},
|
|
]
|
|
}
|
|
|
|
// Execute `netlify deploy` in a container
|
|
command: docker.#Run & {
|
|
// FIXME: custom base image not supported
|
|
// Container image. `netlify` must be available in the execution path
|
|
// *{
|
|
// _buildDefaultImage: docker.#Build & {
|
|
// input: alpine.#Build & {
|
|
// bash: version: "=~5.1"
|
|
// jq: version: "=~1.6"
|
|
// curl: {}
|
|
// yarn: version: "=~1.22"
|
|
// }
|
|
// steps: [{
|
|
// run: command: {
|
|
// name: "sh"
|
|
// flags: "-c": "yarn global add netlify-cli@3.38.10"
|
|
// }
|
|
// }]
|
|
// }
|
|
|
|
// // No nested tasks, boo hoo hoo
|
|
// image: _buildDefaultImage.output
|
|
// env: CUSTOM_IMAGE: "0"
|
|
// } | {
|
|
// env: CUSTOM_IMAGE: "1"
|
|
// }
|
|
|
|
image: _build.output
|
|
|
|
always: true
|
|
env: {
|
|
NETLIFY_SITE_NAME: site
|
|
if (create) {
|
|
NETLIFY_SITE_CREATE: "1"
|
|
}
|
|
if domain != null {
|
|
NETLIFY_DOMAIN: domain
|
|
}
|
|
NETLIFY_ACCOUNT: team
|
|
}
|
|
workdir: "/src"
|
|
mounts: {
|
|
"Site contents": {
|
|
dest: "/src"
|
|
"contents": contents
|
|
}
|
|
"Netlify token": {
|
|
dest: "/run/secrets/token"
|
|
contents: token
|
|
}
|
|
}
|
|
command: name: "/app/deploy.sh"
|
|
|
|
export: files: {
|
|
"/netlify/url": _
|
|
"/netlify/deployUrl": _
|
|
"/netlify/logsUrl": _
|
|
}
|
|
}
|
|
|
|
// URL of the deployed site
|
|
url: command.export.files."/netlify/url".contents
|
|
|
|
// URL of the latest deployment
|
|
deployUrl: command.export.files."/netlify/deployUrl".contents
|
|
|
|
// URL for logs of the latest deployment
|
|
logsUrl: command.export.files."/netlify/logsUrl".contents
|
|
}
|