Merge pull request #374 from samalba/jamstack-inputs

examples/jamstack: use a inputs.yaml instead of cue code
This commit is contained in:
Sam Alba 2021-04-27 13:26:06 -07:00 committed by GitHub
commit d44a03c635
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 55 additions and 77 deletions

View File

@ -93,30 +93,30 @@ This app assumes the following infrastructure is available:
- AWS RDS Instance (MySQL or PostgreSQL) - AWS RDS Instance (MySQL or PostgreSQL)
- AWS ECR repository - AWS ECR repository
1. Prepare the app configuration 1. Create a new deployment from the plan
Edit the file `./examples/jamstack/app_config.cue` and review all values to match to your own needs.
2. Login your local docker daemon to ECR
_This step is temporary and will be removed soon (gh issue #301)._
```sh
AWS_REGION="<REPLACE_WITH_AWS_REGION>"
AWS_ID="<REPLACE_WITH_AWS_ACCOUNT_ID>"
aws ecr get-login-password --region "$AWS_REGION" | docker login --username AWS --password-stdin "${AWS_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com"
```
3. Deploy!
```sh ```sh
cd ./examples/jamstack cd ./examples/jamstack
dagger new dagger new
```
2. Edit the inputs
Edit the file `inputs.yaml` and review all values to match to your infrastructure.
Add the inputs to the deployment:
```sh
dagger input yaml "" -f ./inputs.yaml
```
1. Deploy!
```sh
dagger up dagger up
``` ```
The example `app_config.cue` from the `./examples/jamstack` directory takes the source code from a remote git repository, The example `inputs.yaml` from the `./examples/jamstack` directory takes the source code from a remote git repository, but you can remove this from the file and instead points to a local source code:
but you can remove this from the file and instead points to a local source code:
```sh ```sh
dagger input dir backend.source ./my/local/backend/code dagger input dir backend.source ./my/local/backend/code

View File

@ -1,58 +0,0 @@
package main
import (
"dagger.io/git"
)
name: "my-app"
// DISCLAIMER: all values below are fake and are provided as examples
infra: {
awsConfig: {
accessKey: "<REPLACE WITH AWS ACCESS KEY>"
secretKey: "<REPLACE WITH AWS SECRET KEY>"
region: "us-east-1"
}
vpcId: "vpc-020ctgv0bcde4242"
ecrRepository: "8563296674124.dkr.ecr.us-east-1.amazonaws.com/apps"
ecsClusterName: "bl-ecs-acme-764-ECSCluster-lRIVVg09G4HX"
elbListenerArn: "arn:aws:elasticloadbalancing:us-east-1:8563296674124:listener/app/bl-ec-ECSAL-OSYI03K07BCO/3c2d3e78347bde5b/d02ac88cc007e24e"
rdsAdminSecretArn: "arn:aws:secretsmanager:us-east-1:8563296674124:secret:AdminPassword-NQbBi7oU4CYS9-IGgS3B"
rdsInstanceArn: "arn:aws:rds:us-east-1:8563296674124:cluster:bl-rds-acme-764-rdscluster-8eg3xbfjggkfdg"
netlifyAccount: token: "<REPLACE WITH NETLIFY TOKEN>"
}
database: dbType: "mysql"
backend: {
source: git.#Repository & {
remote: "https://github.com/blocklayerhq/acme-clothing.git"
ref: "HEAD"
subdir: "./crate/code/api"
}
// DNS needs to be already configured to the ALB load-balancer
// and a valid certificate needs to be configured for that listener
hostname: "\(name).acme-764-api.microstaging.io"
container: {
healthCheckPath: "/health-check"
healthCheckTimeout: 40
}
}
frontend: {
source: git.#Repository & {
remote: "https://github.com/blocklayerhq/acme-clothing.git"
ref: "HEAD"
subdir: "./crate/code/web"
}
writeEnvFile: ".env"
yarn: {
buildDir: "public"
script: "build:client"
}
}

View File

@ -3,12 +3,13 @@ package main
import ( import (
"dagger.io/dagger" "dagger.io/dagger"
"dagger.io/aws/ecs" "dagger.io/aws/ecs"
"dagger.io/git"
) )
// Backend configuration // Backend configuration
backend: { backend: {
// Source code to build this container // Source code to build this container
source: dagger.#Artifact source: git.#Repository | dagger.#Artifact
// Container environment variables // Container environment variables
environment: [string]: string environment: [string]: string

View File

@ -4,11 +4,12 @@ import (
"dagger.io/dagger" "dagger.io/dagger"
"dagger.io/netlify" "dagger.io/netlify"
"dagger.io/js/react" "dagger.io/js/react"
"dagger.io/git"
) )
frontend: { frontend: {
// Source code to build the app // Source code to build the app
source: dagger.#Artifact source: git.#Repository | dagger.#Artifact
writeEnvFile?: string writeEnvFile?: string

View File

@ -0,0 +1,34 @@
name: my-app
infra:
awsConfig:
accessKey: <REPLACE WITH AWS ACCESS KEY>
secretKey: <REPLACE WITH AWS SECRET KEY>
region: us-east-1
vpcId: vpc-020ctgv0bcde4242
ecrRepository: 8563296674124.dkr.ecr.us-east-1.amazonaws.com/apps
ecsClusterName: bl-ecs-acme-764-ECSCluster-lRIVVg09G4HX
elbListenerArn: arn:aws:elasticloadbalancing:us-east-1:8563296674124:listener/app/bl-ec-ECSAL-OSYI03K07BCO/3c2d3e78347bde5b/d02ac88cc007e24e
rdsAdminSecretArn: arn:aws:secretsmanager:us-east-1:8563296674124:secret:AdminPassword-NQbBi7oU4CYS9-IGgS3B
rdsInstanceArn: arn:aws:rds:us-east-1:8563296674124:cluster:bl-rds-acme-764-rdscluster-8eg3xbfjggkfdg
netlifyAccount:
token: <REPLACE WITH NETLIFY TOKEN>
database:
dbType: mysql
backend:
source:
remote: https://github.com/blocklayerhq/acme-clothing.git
ref: HEAD
subdir: ./crate/code/api
hostname: my-app.acme-764-api.microstaging.io
container:
healthCheckPath: /health-check
healthCheckTimeout: 40
frontend:
source:
remote: https://github.com/blocklayerhq/acme-clothing.git
ref: HEAD
subdir: ./crate/code/web
writeEnvFile: .env
yarn:
buildDir: public
script: build:client