examples/jamstack: added support for frontend (netlify)

Signed-off-by: Sam Alba <sam.alba@gmail.com>
This commit is contained in:
Sam Alba 2021-04-13 14:12:40 -07:00
parent c06f2aa55e
commit 3911c25803
3 changed files with 60 additions and 4 deletions

View File

@ -0,0 +1,52 @@
package main
import (
"dagger.io/dagger"
"dagger.io/netlify"
"dagger.io/js/react"
)
frontend: {
// Source code to build the app
source: dagger.#Artifact
writeEnvFile?: string
// Yarn Build
yarn: {
// Run this yarn script
script: string | *"build"
// Read build output from this directory
// (path must be relative to working directory).
buildDir: string | *"build"
}
// Build environment variables
environment: [string]: string
environment: NODE_ENV: string | *"production"
environment: APP_URL: "https://\(name).netlify.app/"
}
frontend: {
app: react.#App & {
source: frontend.source
env: frontend.environment
if frontend.writeEnvFile != _|_ {
writeEnvFile: frontend.writeEnvFile
}
yarn: {
script: frontend.yarn.script
buildDir: frontend.yarn.buildDir
}
}
// Host the application with Netlify
site: netlify.#Site & {
"name": name
account: infra.netlifyAccount
contents: app.build
}
}

View File

@ -2,6 +2,7 @@ package main
import ( import (
"dagger.io/aws" "dagger.io/aws"
"dagger.io/netlify"
) )
infra: { infra: {
@ -28,4 +29,7 @@ infra: {
// ARN of the RDS Instance // ARN of the RDS Instance
rdsInstanceArn: string rdsInstanceArn: string
// Netlify credentials
netlifyAccount: netlify.#Account
} }

View File

@ -3,9 +3,6 @@ package main
// Name of the application // Name of the application
name: string & =~"[a-z0-9-]+" name: string & =~"[a-z0-9-]+"
// FIXME: temporary workaround (GH issue #142) - image metadata is lost after build
backend: container: command: ["/bin/hello-go"]
// Inject db info in the container environment // Inject db info in the container environment
backend: environment: { backend: environment: {
DB_USERNAME: database.username DB_USERNAME: database.username
@ -16,7 +13,10 @@ backend: environment: {
DB_TYPE: database.dbType DB_TYPE: database.dbType
} }
// Configure the frontend with the API URL
frontend: environment: APP_URL_API: url.backendURL
url: { url: {
frontendURL: "FIXME" frontendURL: frontend.site.url
backendURL: "https://\(backend.hostname)/" backendURL: "https://\(backend.hostname)/"
} }