Skip to content
This repository has been archived by the owner on Jul 21, 2023. It is now read-only.

Latest commit

 

History

History
134 lines (106 loc) · 5.06 KB

README.md

File metadata and controls

134 lines (106 loc) · 5.06 KB

castleblock

The castleblock-cli interfaces with the castleblock-service API and deploys apps via a command line interface.

CLI Usage

$ castleblock
Usage:
  castleblock [OPTIONS] <command> [ARGS]

Options:
  -d, --dist [FILE]      Directory containing the built assets (Default is ./build)
  -u, --url [STRING]     URL to castleblock service (Default is http://localhost:3000)
  -e, --env FILE         Include env file in deployment (accessible from
                         ./env.json when deployed)
  -b, --build [STRING]   Build command that is run before deployment (Default is npm run build)
  -s, --src [FILE]       Source directory to watch for changes (Default is ./src)
  -f, --file FILE        Deploy an existing package
  -p, --pack BOOL        Save deployment package to disk
  -t, --token STRING     Authorization Token
  -j, --jwtSecret STRING JWT Secret Key for generating a token on the fly
  -r, --remote STRING    Deploy a remote git repo or tarball
  -h, --help             Display help and usage details

Commands:
  deploy, list, login, remove, version, watch

Manifest.json

Castleblock relies on your app's manifest.json file to deploy your app.

  • short_name - (required) Used in the url <castleblock-service-url>/ui/<short_name>/<version>/
  • version - (required) Used in the url <castleblock-service-url>/ui/<short_name>/<version>/. The version must follow the semver standard
  • name - Used in castleblock-ui app cards
  • description - Used in castleblock-ui
  • webcomponent - Set to "true" if the deployment is a web component
  • icons

Example:

{
  "short_name": "my-app",
  "version": "1.2.5",
  "name": "My Application",
  "description": "A description of the application.",
  "webcomponent": false,
  "icons": [{ "src": "./my-app-icon.png" }]
}

Deploying an app

First make sure you have the service running. In this example the service is running at http://localhost:3000

$ castleblock deploy -d ./dist
INFO: Building Project: npm run build
INFO: Compressing public/ into deployment.tar.gz
INFO: Uploading deployment.tar.gz
INFO: SHA512:
      4585948608622f9399389f651b5f14b1c286a3418fb6da0f24b2137ebb81092bd4542b9e959ee8f9ba3b4532ee11dd569b721bfdb269f3f70bfe82efe9e540f5
INFO: URL: http://localhost:3000/ui/my-app/1.2.3

Removing an app

$ castleblock remove http://localhost:3000/ui/my-app/1.2.3/

Ad hoc Deployments

The watch command allows you to deploy an adhoc version of your application to a randomly generated URL. Castleblock will watch your files for changes, rebuild, and deploy anytime you make a change. This allows you to share or demo a feature currently in development and test it directly against your microservices in your deployment environment..

$ castleblock watch -d public/
{
  dist: 'public/',
  url: 'http://localhost:3000',
  env: null,
  build: 'npm run build',
  src: './src',
  file: null,
  pack: false,
  token: null,
  jwtSecret: null
}
INFO: Watching For Changes
      Source Directory: "./src"
      Build Command: "npm run build"
INFO: Compressing public/
INFO: Building Project: npm run build

src/main.js → public/build/bundle.js...
created public/build/bundle.js in 429ms
INFO: SHA512:
      c2e2840f8a1c1b290c240ae5b15037eaf47807830862622a5d8292cc51db1c9ab51d088d33791c2414920b08303af93c81b4158d643377f7156470a21363c3fe
INFO: Uploading Package
INFO: URL: http://localhost:3000/ui/my-app/adhoc-vdzitr33w7g

Environmental Variable Injection

Sometimes your application needs to be configurable after it has already been bundled. CastleBlock provides a mechanism to include an additional json file alongside your bundled application. e the --env option to include configurations at runtime.

castleblock deploy --env mysettings.json

Accessing env.json from your App

Castleblock will inject the env.json file into your deployment, so your application can fetch(./env.json) to load custom configuration values when the application first loads. The file is always env.json, regardless of what the original filename was.

Default CLI Options

Castleblock allows you to save your own default options in a .castleblock.json file either in your home directory (globally) or in your project directory. Any of the CLI options can be set to alternative default values. See below for an example.

{
  "config": {
    "dist":"./public",
    "url":"http://myproductionsite.xyz"
    "env":"productionsettings.json",
    "build":"npm run build -- --prod",
    "src":"./src",
    "pack":true
  }
}