In this section, we will use the Terminus Build Tools Plugin to create a new project consisting of a Git repository, a Continuous Integration service, and a Pantheon site.
These instructions are written with GitHub as the Git provider repository, CircleCI as the CI, and a Pantheon site.
Substitute your chosen Git Provider and CI service in these instructions with the options of your choice. Refer to A Build Tools Project's Components for the supported combinations.
Ensure you have the latest versions of Terminus and the Terminus Build Tools plugin installed. You may want to run
terminus self:plugin:update pantheon-systems/terminus-build-tools-plugin to ensure you have the most recent version.
Verify your installation with
composer --version Composer version 2.1.8 2021-09-15 13:55:14
Install the most recent release of Terminus.
Verify your installation with
terminus --version Terminus 3.0.1
Add an SSH key in your User Dashboard to enable passwordless access and avoid authentication prompts. Otherwise, provide your Pantheon Dashboard credentials when prompted.
Generate a Pantheon machine token, then authenticate Terminus.
Install the Terminus Build Tools Plugin:
terminus self:plugin:install terminus-build-tools-plugin
The Build Tools plugin will prompt you to create access tokens for the services you use as an alternative to a password. Access tokens are stored as environment variables. Access token requirements vary by service. Read below for specific access token requirements.
GitHub: The GitHub token checks for the following scopes:
workflow(required if using Github Actions)
CircleCI: No scopes are configurable for this token.
Gitlab: The Gitlab token requires the following scopes:
Bitbucket: A Bitbucket app password requires the following scopes:
Repositories(read and write)
Pull Requests(read and write)
Optionally, you can generate your tokens ahead of time and manually export them to the local variables
BITBUCKET_TOKEN, depending on what services are you using:
export GITHUB_TOKEN=yourGitHubToken export CIRCLE_TOKEN=yourCircleCIToken export GITLAB_TOKEN=yourGitlabToken export BITBUCKET_TOKEN=yourBitbucketToken
Navigate to your project settings page in CircleCI if you need to replace a token.
Scaffold a new project from a template repository and perform a one-time setup to connect an external Git provider and CI service with Pantheon. This setup also configures SSH keys and environment variables. To use your own template repository, refer to Customization in the Build Tools Plugin documentation.
Modify the commands in the following examples to match your project's needs.
Start a GitHub project with WordPress:
terminus build:project:create --git=github --team='My Agency Name' wp my-site
Start a GitHub project with Drupal 9:
terminus build:project:create --git=github --team='My Agency Name' d9 my-site
The script will ask for additional information such as tokens/credentials for GitHub and the associated CI.
For a list of all available command options, see the Build Tools Project README
As packages pulled by Composer are updated (along with their dependencies), version compatibility issues can pop up. Sometimes you may need to manually alter the version constraints on a given package within the
require-dev section of
composer.json in order to update packages. See the updating dependencies section of Composer's documentation for more information.
As a first troubleshooting step, try running
composer update to bring
composer.lock up to date with the latest available packages (as constrained by the version requirements in
Use Build Tools to help host a static site or files on Pantheon.
If you encounter an issue such as:
The "https://packagist.org/packages.json" file could not be downloaded: failed to open stream: Operation timed out Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info The "https://packagist.org/packages.json" file could not be downloaded: failed to open stream: Operation timed out https://packagist.org could not be fully loaded, package information was loaded from the local cache and may be out of date [Composer\Downloader\TransportException] Content-Length mismatch create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--no-install] [--ignore-platform-reqs] [--] [<package>] [<directory>] [<version>] [error] Command `composer create-project --working-dir=/private/var/folders/lp/7_1gh83s5mn9lwfjvqqlf1lm0000gn/T/local-sitevPumRP pantheon-systems/example-wordpress-composer pantheon-wp-composer-project -n --stability dev` failed with exit code 1
This indicates a network-level issue. We recommend contacting your Internet Service Provider (ISP) for support. One way to reduce connection woes is to use a non-standard channel with less activity/noise on wireless modems.
Check the output for the recommended fix. For example, PHP
7.0 is required for WordPress. Once you have resolved the issues as suggested by Composer try the command again.
The following error occurs when running
terminus build:project-create before authenticating your session with Terminus:
BuildToolsCommand.php line 166: The site name exampleuniquesitename is already taken on Pantheon.
To resolve, generate a Machine Token, then authenticate Terminus and try the build command again:
terminus auth:login --machine-token=<machine-token>
Pantheon's Composer-based example repositories are maintained and supported on GitHub. After browsing existing issues, report errors in the appropriate repository's issue queue:
Once your site is ready, the URL to your project page will be printed in the terminal. Copy this address and paste it into a browser to visit your new project on Github: