@pie-api/mru
v1.4.0
Published
mono repo utils - has strong opinions!
Downloads
30
Keywords
Readme
mru
mono repo utils - has strong opinions!
You have a cloud funtion here: functions/my-fn, then mru my-fn
will:
- bundles functions/my-fn/lib/index.ts
- creates zip file
- pushes zip to gcloud storage
- gcloud deploys w/ env vars + flags
mru my-container
will:
- bundle containers/my-container/lib/index.ts
- docker builds w/ tag
- docker push tag
- gcloud deploys w/ env vars
mru.config.js
mru will read mru.config.js
from the cwd. It can overrides the following properties.
mru will also read in command line flags, these will take highest priority.
From the above we build a Config
that has the following form:
export type Config = {
envDir: string; // required
projectId: string; // required
region: string; // required
bucketPath: (projectId: string, region: string) => string; // required
dockerRegistry: string; // 'grc.io'
containers: string; //'containers'
functions: string; //'functions'
dryRun: boolean; // false
/**
* All true by default set --no-bundle to disable bundle.
* same for the others
*/
steps: {
bundle: boolean;
docker: boolean;
deploy: boolean;
};
/**
* This is generated by mru - don't need to set it
*/
git?: {
hash: string;
};
}
cloud config
mru will generate the deployment arguments for a container/function using 2 sources:
- the loaded env file loaded from
$envDir/$projectId.yaml
. - the
cloud
map in the package'spackage.json
Example
{
"name": "my-fn",
"cloud": {
"deployFlags": {
"foo": "$ENV_VAR"
},
"environment":{
"ENV_VAR": "$ENV_VAR"
}
}
}
env:
ENV_VAR: bar
in the above:
deployFlags.foo
will be converted to--foo bar
and passed to the appropriate gcloud command.- the env vars will be set to
--set-env-vars ENV_VAR=bar
By doing this, we can put all our env vars in 1 place, and each pkg will only pull what it needs.