Hal Core Components
Core domain entities and shared resources for Hal UI and Agent.
- Hal Doctrine Entities
- Phinx Database Migrations
- Crypto for Encrypted Properties
- Do not cache one-to-many relations!
Configuration for the migration tool is stored in
phinx.yml. This project contains phinx.yml.dist with default
settings for dev only. Make sure to copy this file to
phinx.yml and add additional settings for managing other environments.
The included script
bin/phinx will run Phinx and also an env file
phinx.secrets. Phinx will automatically replace
environment variables prepended with
See the following for an example, which stores production database password in
#!/usr/bin/env sh export PHINX_PROD_PASSWORD='my-secret-password'
# include other config from phinx.yml.dist here environments: prod: adapter: 'pgsql' host: 'prod_database_server' name: 'prod_database_name' user: 'prod_database_username' pass: '%%PHINX_PROD_PASSWORD%%' port: 5432 charset: 'utf8'
Check out the official Phinx documentation for handling configuration: docs.phinx.org
Set up Postgres DB for development
cp phinx.yml.dist phinx.yml
createuser hal --superuser
Hal Domain Model
An application in the system. Contains information about source code location.
Applications are owned by Organizations.
Value stored in Hal's encrypted configuration dictionary.
Denormalized event for record-keeping.
Configuration value used by the Hal platform. For Hal internal system use only.
Build job. Builds are run with a
commitfor a specific
Release job. Releases are run with a
buildfor a specific
Any event that occurs during a build or release. Contains parameters or data such as shell output or configuration parameters.
Metadata published by a build or release. Information that may be searched or analyzed for further use.
An action or process that can be triggered by a job. Currently only used to auto-kickoff a release after a successful build.
An environment in the system.
Groups are collection of targets, used to control permissions or simply naturally organize them. Groups typically have a
namesuch as "Group
Configuration for a group in a environment. Applications can have many targets for a single group or environment. Example: "Target for CodeDeploy
groupwith CodeDeploy application name
test-appand S3 bucket
Security credentials used to connect to a target such as access tokens or private keys.