Create a New Project

In step two of the Build Tools guide, learn how to create a new Build Tools project.

Discuss in our Forum Discuss in Slack

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.

 Note

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.

Prerequisites

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.

  1. Install Composer.

    • Verify your installation with composer --version:

      composer --version
      Composer version 2.1.8 2021-09-15 13:55:14
  2. Install the most recent release of Terminus.

    • Verify your installation with terminus --version:

      terminus --version
      Terminus 3.0.1
  3. Add an SSH key in your Personal Workspace to enable passwordless access and avoid authentication prompts. Otherwise, provide your Pantheon Dashboard credentials when prompted.

  4. Generate a Pantheon machine token, then authenticate Terminus.

  5. Install the Terminus Build Tools Plugin:

    terminus self:plugin:install terminus-build-tools-plugin

Access Tokens (Optional)

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:

    • repo (required)

    • delete-repo (optional)

    • workflow (required if using Github Actions)

  • CircleCI: No scopes are configurable for this token.

  • Gitlab: The Gitlab token requires the following scopes:

    • api

    • read_repository

    • write_repository

  • Bitbucket: A Bitbucket app password requires the following scopes:

    • Projects (read)

    • Repositories (read and write)

    • Pull Requests (read and write)

    • Pipelines (edit variables)

Optionally, you can generate your tokens ahead of time and manually export them to the local variables. Note that Bitbucket requires a user name and password instead of a token. Review the local variable export examples below:

  • GITHUB_TOKEN
  • CIRCLE_TOKEN
  • GITLAB_TOKEN
  • BITBUCKET_USER and BITBUCKET_PASS

The examples below vary depending on what services you use. Replace exampleToken (or exampleUserName and exampleUserPassword if you use Bitbucket) with your token or Bitbucket user name and password.

export GITHUB_TOKEN=exampleToken
export CIRCLE_TOKEN=exampleToken
export GITLAB_TOKEN=exampleToken
export BITBUCKET_USER=exampleUserName
export BITBUCKET_PASS=exampleUserPassword

Navigate to your project settings page in CircleCI if you need to replace a token.

Create a Build Tools Project

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:

    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

Troubleshooting

View Your New Project Repo

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:

Initial Project Page shows title of project in GitHub