examples/jamstack: added support for frontend (netlify)
Signed-off-by: Sam Alba <sam.alba@gmail.com>
This commit is contained in:
parent
c06f2aa55e
commit
3911c25803
52
examples/jamstack/frontend.cue
Normal file
52
examples/jamstack/frontend.cue
Normal 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
|
||||||
|
}
|
||||||
|
}
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)/"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user