Artifact deployment
Artifact deployment packages your codebase and pushes it to a remote Git repository. This is commonly used for hosting platforms like Acquia that require pre-built code artifacts.
How it works
When artifact is included in $VORTEX_DEPLOY_TYPES, the deployment script:
- Creates a clean code artifact using Git Artifact
- Applies the
.gitignore.artifactrules to control which files are included - Pushes the artifact to the configured remote repository
- The hosting platform then deploys from that repository
Configuration
Environment variables
| Variable | Required | Default | Location | Description |
|---|---|---|---|---|
VORTEX_DEPLOY_ARTIFACT_GIT_REMOTE | Yes | .env | Remote repository URL for the artifact | |
VORTEX_DEPLOY_ARTIFACT_ROOT | No | Current directory | .env | Root directory for artifact creation |
VORTEX_DEPLOY_ARTIFACT_SRC | No | Current directory | .env | Source directory to package |
VORTEX_DEPLOY_ARTIFACT_DST | No | .artifact | .env | Destination directory for artifact |
VORTEX_DEPLOY_ARTIFACT_GIT_USER_NAME | Yes | CI | Git user name for commits | |
VORTEX_DEPLOY_ARTIFACT_GIT_USER_EMAIL | Yes | CI | Git user email for commits | |
VORTEX_DEPLOY_ARTIFACT_LOG | No | .env | Log file path |
Setup
-
Add
artifactto theVORTEX_DEPLOY_TYPESvariable in your.envfile:.envVORTEX_DEPLOY_TYPES=artifact -
Configure the artifact remote repository:
.envVORTEX_DEPLOY_ARTIFACT_GIT_REMOTE=git@github.com:your-org/your-project-artifact.git -
Add Git user credentials to your CI provider's environment variables:
VORTEX_DEPLOY_ARTIFACT_GIT_USER_NAME="Deployment Bot"VORTEX_DEPLOY_ARTIFACT_GIT_USER_EMAIL="deploy@example.com"
Artifact file control
The .gitignore.artifact file controls which files are included in the
deployment artifact. During deployment it replaces the standard .gitignore in
the artifact repository, so its rules - not the project's normal ignore rules -
decide what reaches the hosting Git repository.
Vortex writes .gitignore.artifact as a deny list: every file is
deployed by default, and the file lists only what must be kept out of
production. Vortex provides a
pre-configured .gitignore.artifact
that deploys everything a production Drupal site needs - vendor/, the built
webroot (Drupal core, contributed modules and themes, and compiled theme
assets), config/, drush/, scripts/, and .env - while excluding:
- Development, continuous integration, and AI configuration (
.ahoy.yml,.circleci,.docker,.github,docker-compose.yml). - Documentation and testing configuration (
docs,tests,behat.yml,phpunit.xml,phpcs.xml). - Dependency manifests and lock files not needed at runtime (
composer.lock,package.json,yarn.lock). - Credentials, local overrides, caches, and content files (
auth.json,.env.local,.data,web/sites/*/files). - Theme asset sources, since only the compiled
build/output is deployed.
Customizing the artifact
Because the file is a deny list, a new file you add to the project is deployed
automatically. Edit .gitignore.artifact only to keep an additional file out of
the artifact, or to re-include something that a broader rule excludes:
# Keep an additional development file out of the artifact.
/RELEASE.md
# Re-include theme images that the artifact excludes by default.
!/web/themes/custom/your_site_theme/images
Use cases
- Acquia hosting - Acquia requires code artifacts pushed to their Git repository
- Pantheon hosting - Similar artifact-based deployment model
- Custom hosting - Any platform that deploys from a Git repository
See also
- Git Artifact tool - Detailed documentation on the artifact tool
- Acquia hosting - Acquia-specific deployment configuration