WIP: Fix Europa yarn
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
parent
ed8bb3f91b
commit
c7ffdf788f
1
pkg/dagger.io/cue.mod/module.cue
Normal file
1
pkg/dagger.io/cue.mod/module.cue
Normal file
@ -0,0 +1 @@
|
|||||||
|
module: "dagger.io"
|
@ -7,7 +7,7 @@ package engine
|
|||||||
// - A directory containing binary artifacts
|
// - A directory containing binary artifacts
|
||||||
// Rule of thumb: if it fits in a tar archive, it fits in a #FS.
|
// Rule of thumb: if it fits in a tar archive, it fits in a #FS.
|
||||||
#FS: {
|
#FS: {
|
||||||
$dagger: fs: _id: string | null
|
$dagger: fs: _id: !="" | null
|
||||||
}
|
}
|
||||||
|
|
||||||
// A reference to an external secret, for example:
|
// A reference to an external secret, for example:
|
||||||
@ -17,7 +17,7 @@ package engine
|
|||||||
// Secrets are never merged in the Cue tree. They can only be used
|
// Secrets are never merged in the Cue tree. They can only be used
|
||||||
// by a special filesystem mount designed to minimize leak risk.
|
// by a special filesystem mount designed to minimize leak risk.
|
||||||
#Secret: {
|
#Secret: {
|
||||||
$dagger: secret: _id: string
|
$dagger: secret: _id: !=""
|
||||||
}
|
}
|
||||||
|
|
||||||
// A reference to a network service endpoint, for example:
|
// A reference to a network service endpoint, for example:
|
||||||
@ -25,5 +25,5 @@ package engine
|
|||||||
// - A unix or npipe socket
|
// - A unix or npipe socket
|
||||||
// - An HTTPS endpoint
|
// - An HTTPS endpoint
|
||||||
#Service: {
|
#Service: {
|
||||||
$dagger: service: _id: string
|
$dagger: service: _id: !=""
|
||||||
}
|
}
|
||||||
|
5
pkg/universe.dagger.io/cue.mod/pkg/.gitignore
vendored
Normal file
5
pkg/universe.dagger.io/cue.mod/pkg/.gitignore
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# generated by dagger
|
||||||
|
dagger.lock
|
||||||
|
alpha.dagger.io
|
||||||
|
dagger.io
|
||||||
|
universe.dagger.io
|
@ -1 +0,0 @@
|
|||||||
../../../stdlib
|
|
@ -10,6 +10,7 @@ import (
|
|||||||
steps: [#Step, ...#Step]
|
steps: [#Step, ...#Step]
|
||||||
output: #Image
|
output: #Image
|
||||||
|
|
||||||
|
|
||||||
// Generate build DAG from linerar steps
|
// Generate build DAG from linerar steps
|
||||||
_dag: {
|
_dag: {
|
||||||
for idx, step in steps {
|
for idx, step in steps {
|
||||||
|
82
pkg/universe.dagger.io/yarn/test/yarn-test.cue
Normal file
82
pkg/universe.dagger.io/yarn/test/yarn-test.cue
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
package yarn
|
||||||
|
|
||||||
|
import (
|
||||||
|
"dagger.io/dagger"
|
||||||
|
"dagger.io/dagger/engine"
|
||||||
|
|
||||||
|
"universe.dagger.io/yarn"
|
||||||
|
// "universe.dagger.io/alpine"
|
||||||
|
// "universe.dagger.io/bash"
|
||||||
|
)
|
||||||
|
|
||||||
|
dagger.#Plan & {
|
||||||
|
inputs: {
|
||||||
|
directories: {
|
||||||
|
testdata: path: "./testdata"
|
||||||
|
testdata2: path: "./testdata2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actions: {
|
||||||
|
TestReact: {
|
||||||
|
cache: engine.#CacheDir & {
|
||||||
|
id: "yarn cache"
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg: yarn.#Build & {
|
||||||
|
source: inputs.directories.testdata.contents
|
||||||
|
"cache": cache
|
||||||
|
}
|
||||||
|
|
||||||
|
_image: engine.#Pull & {
|
||||||
|
source: "alpine:3.15.0@sha256:e7d88de73db3d3fd9b2d63aa7f447a10fd0220b7cbf39803c803f2af9ba256b3"
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME: use bash.#Script
|
||||||
|
test: engine.#Exec & {
|
||||||
|
input: _image.output
|
||||||
|
mounts: build: {
|
||||||
|
dest: "/build"
|
||||||
|
contents: pkg.output
|
||||||
|
}
|
||||||
|
args: [
|
||||||
|
"sh", "-c",
|
||||||
|
#"""
|
||||||
|
test "$(cat /build/test)" = "output"
|
||||||
|
"""#
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME: re-enable?
|
||||||
|
// TestSecretsAndFile: {
|
||||||
|
// pkg: #Package & {
|
||||||
|
// source: inputs.directories.testdata2
|
||||||
|
// writeEnvFile: "/.env"
|
||||||
|
// env: {
|
||||||
|
// one: "one"
|
||||||
|
// two: "two"
|
||||||
|
// }
|
||||||
|
// secrets: {
|
||||||
|
// secretone: dagger.#Secret @dagger(input)
|
||||||
|
// secretwo: dagger.#Secret @dagger(input)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// test: os.#Container & {
|
||||||
|
// image: alpine.#Image & {
|
||||||
|
// package: bash: true
|
||||||
|
// }
|
||||||
|
// shell: path: "/bin/bash"
|
||||||
|
// mount: "/build": from: pkg.build
|
||||||
|
// command: """
|
||||||
|
// content="$(cat /build/env)"
|
||||||
|
// [[ "${content}" = *"SECRETONE="* ]] && \\
|
||||||
|
// [[ "${content}" = *"SECRETWO="* ]] && \\
|
||||||
|
// [[ "${content}" = *"ONE=one"* ]] && \\
|
||||||
|
// [[ "${content}" = *"TWO=two"* ]]
|
||||||
|
// """
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +0,0 @@
|
|||||||
package yarn
|
|
||||||
|
|
||||||
import (
|
|
||||||
"dagger.io/dagger/engine"
|
|
||||||
)
|
|
||||||
|
|
||||||
b: #Build & {
|
|
||||||
source: engine.#Scratch
|
|
||||||
}
|
|
||||||
|
|
||||||
out: b.output
|
|
@ -7,7 +7,8 @@ import (
|
|||||||
"dagger.io/dagger"
|
"dagger.io/dagger"
|
||||||
"dagger.io/dagger/engine"
|
"dagger.io/dagger/engine"
|
||||||
|
|
||||||
"universe.dagger.io/alpine"
|
// "universe.dagger.io/alpine"
|
||||||
|
"universe.dagger.io/docker"
|
||||||
"universe.dagger.io/bash"
|
"universe.dagger.io/bash"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -30,28 +31,54 @@ import (
|
|||||||
// Run this yarn script
|
// Run this yarn script
|
||||||
script: string | *"build"
|
script: string | *"build"
|
||||||
|
|
||||||
|
// Fix for shadowing issues
|
||||||
|
let yarnScript = script
|
||||||
|
|
||||||
|
// FIXME: `CacheDir` must be passed by the caller?
|
||||||
|
cache: engine.#CacheDir
|
||||||
|
|
||||||
// Optional arguments for the script
|
// Optional arguments for the script
|
||||||
args: [...string] | *[]
|
args: [...string] | *[]
|
||||||
|
|
||||||
// Secret variables
|
// Secret variables
|
||||||
|
// FIXME: not implemented. Are they needed?
|
||||||
secrets: [string]: dagger.#Secret
|
secrets: [string]: dagger.#Secret
|
||||||
|
|
||||||
// Yarn version
|
// Yarn version
|
||||||
yarnVersion: *"=~1.22" | string
|
yarnVersion: *"=~1.22" | string
|
||||||
|
|
||||||
// Run yarn in a containerized build environment
|
// FIXME: trouble getting docker.#Build to work (cueflow task dependencies not working)
|
||||||
command: bash.#Run & {
|
alpine: docker.#Pull & {
|
||||||
*{
|
source: "index.docker.io/alpine:3.13.5@sha256:69e70a79f2d41ab5d637de98c1e0b055206ba40a8145e7bddb55ccc04e13cf8f"
|
||||||
image: (alpine.#Build & {
|
}
|
||||||
bash: version: "=~5.1"
|
yarnImage: docker.#Run & {
|
||||||
yarn: version: yarnVersion
|
image: alpine.image
|
||||||
}).image
|
script: """
|
||||||
env: CUSTOM_IMAGE: "0"
|
apk add -U --no-cache bash yarn
|
||||||
} | {
|
"""
|
||||||
env: CUSTOM_IMAGE: "1"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
script: """
|
// Run yarn in a containerized build environment
|
||||||
|
command: bash.#Run & {
|
||||||
|
// FIXME: not working?
|
||||||
|
// *{
|
||||||
|
// _image: alpine.#Build & {
|
||||||
|
// packages: {
|
||||||
|
// bash: version: "=~5.1"
|
||||||
|
// yarn: version: yarnVersion
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// image: _image.output
|
||||||
|
// env: CUSTOM_IMAGE: "0"
|
||||||
|
// } | {
|
||||||
|
// env: CUSTOM_IMAGE: "1"
|
||||||
|
// }
|
||||||
|
|
||||||
|
image: docker.#Image & yarnImage.output
|
||||||
|
|
||||||
|
|
||||||
|
script: #"""
|
||||||
# Create $ENVFILE_NAME file if set
|
# Create $ENVFILE_NAME file if set
|
||||||
[ -n "$ENVFILE_NAME" ] && echo "$ENVFILE" > "$ENVFILE_NAME"
|
[ -n "$ENVFILE_NAME" ] && echo "$ENVFILE" > "$ENVFILE_NAME"
|
||||||
|
|
||||||
@ -60,12 +87,12 @@ import (
|
|||||||
opts=( $(echo $YARN_ARGS) )
|
opts=( $(echo $YARN_ARGS) )
|
||||||
yarn --cwd "$YARN_CWD" run "$YARN_BUILD_SCRIPT" ${opts[@]}
|
yarn --cwd "$YARN_CWD" run "$YARN_BUILD_SCRIPT" ${opts[@]}
|
||||||
mv "$YARN_BUILD_DIRECTORY" /build
|
mv "$YARN_BUILD_DIRECTORY" /build
|
||||||
"""
|
"""#
|
||||||
|
|
||||||
mounts: {
|
mounts: {
|
||||||
"yarn cache": {
|
"yarn cache": {
|
||||||
dest: "/cache/yarn"
|
dest: "/cache/yarn"
|
||||||
contents: engine.#CacheDir
|
contents: cache
|
||||||
}
|
}
|
||||||
"package source": {
|
"package source": {
|
||||||
dest: "/src"
|
dest: "/src"
|
||||||
@ -74,10 +101,11 @@ import (
|
|||||||
// FIXME: mount secrets
|
// FIXME: mount secrets
|
||||||
}
|
}
|
||||||
|
|
||||||
output: directories: "/build": _
|
// FIXME
|
||||||
|
directories: "/build": _
|
||||||
|
|
||||||
env: {
|
env: {
|
||||||
YARN_BUILD_SCRIPT: script
|
YARN_BUILD_SCRIPT: yarnScript
|
||||||
YARN_ARGS: strings.Join(args, "\n")
|
YARN_ARGS: strings.Join(args, "\n")
|
||||||
YARN_CACHE_FOLDER: "/cache/yarn"
|
YARN_CACHE_FOLDER: "/cache/yarn"
|
||||||
YARN_CWD: cwd
|
YARN_CWD: cwd
|
||||||
@ -92,5 +120,5 @@ import (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The final contents of the package after build
|
// The final contents of the package after build
|
||||||
output: command.output.directories."/build".contents
|
output: command.directories."/build".contents
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ func (c *fsContext) FromValue(v *compiler.Value) (*FS, error) {
|
|||||||
|
|
||||||
id, err := v.LookupPath(fsIDPath).String()
|
id, err := v.LookupPath(fsIDPath).String()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("invalid FS %q: %w", v.Path(), err)
|
return nil, fmt.Errorf("invalid FS at path %q: %w", v.Path(), err)
|
||||||
}
|
}
|
||||||
|
|
||||||
fs, ok := c.store[id]
|
fs, ok := c.store[id]
|
||||||
|
Reference in New Issue
Block a user