Integrated Development Network
Apex features a development network designed to streamline all aspects of the project development pipeline, starting from the initial concept through development, deployment, and maintenance. Each individual Apex system seamlessly integrates with the development network through the command line, offering comprehensive project management functionality. This includes publishing packages, managing releases and upgrades, downloading and installing packages, creating and managing branches, account management, team/ACL management, and more.
Powered by SVN, code repositories are automatically generated for each package, featuring all expected functionality such as version control, branch and release management, commit, merge, fork, pull, checkout, and more. If a repository doesn't exist during a commit, it is automatically created. Beyond standard management, repositories offer access level settings (public, commercial, private), optional pricing points, CI pipeline limits, and granular team/ACL management.
Project Development / Staging Environments
Transform any locally installed system into a project with its repository and the entire system under version control with just one command. During creation, a staging environment is automatically generated, mirroring the local system on the apexpl.dev domain. Any commit by you or another developer with access updates modifications within the repository and syncs with the staging environment system.
Deployment is straightforward; use the one-line deployment functionality or add a "--project user/some-name" flag to the initial "apex" command during a typical Apex install. The full system is then installed without the risk of human error.
Built-In CI Pipeline
Both package and project repositories come with a built-in CI pipeline linked with phpUnit, phpStan, and phpCs. Package configuration allows setting limits for a successful run. Each commit and release automatically triggers the pipeline, executing unit tests, and checking code with phpStan and phpCs. Successful runs save the commit, triggering configured web hooks that may potentially sync to other servers or complete other tasks.
Onboarding new developers, designers, or personnel takes minutes after a project's initial creation. With full ACL controls, permissions to a repository can be easily granted, utilizing x.509 certificates and chain of custody for enhanced network security against code injection attacks. Once granted access, developers can install the latest code with a simple "apex" command, and running "apex commit" uploads modifications to the repository and syncs with staging/production environments instantly.
3 Stage Syncing
Setting up a fully syncing process from local development -> repository -> staging -> production is straightforward. Repository and staging are automatic by creating a new project with "apex project create some-name." Production syncing is simplified using the svn-sync package and integrated web hooks, ensuring every successful CI pipeline execution after a commit automatically syncs to production.
For ready-to-deploy projects, use the one-line deployment functionality. Integrating with AWS, Digital Ocean, Azure, and Google Cloud Platform, a single command creates the necessary server instance, configures it via Ansible, and installs the custom Apex system. This automated process takes minutes and eliminates human error.
Upon account creation, both an SSH key and x.509 certificate are automatically generated. Each commit and release includes a digital signature signed by the x.509 certificate, consisting of the merkle root of the current codebase. This signature is automatically verified during package installation and upgrading, preventing code injection attacks by malicious entities.