@greg, @rvtraveller and I are working on an initiative to lower the barrier of using advanced continuous integration (CI) workflows with Pantheon. We are looking for feedback on whether this work is valuable to you and your team.
Please take some time to read the information about this initiative below and answer the questions. This will help us do work that best serves your needs!
Additionally, I encourage you to reply to this thread and discuss why a CI workflow with Pantheon is important to you, what are you struggling with when adopting/implementing this type of workflow (or what has prevented you from adopting a CI workflow).
Current Status of Build Tools
Version 1 of the Terminus Build Tools plugin, supporting Terminus
1.x and GitHub + CircleCI + Pantheon, has reached end of life.
Version 2 of Build Tools is currently in development and aims to add Terminus
2, GitLab and BitBucket Pipelines support.
What is Terminus Build Tools?
CI Project Creation and Scaffolding
Build Tools provides a way to scaffold new projects by connecting an external Git repository, a continuous integration service, and Pantheon using the
terminus build:project:create command.
The goal of the project creation command is to reduce the work of setting up SSH keys for authentication, declaring environment variables, etc. needed to make this connection for each new project as doing so manually is time-consuming, error-prone, and cumbersome.
Additional Terminus Commands
In addition to scaffolding new projects, Build Tools adds additional Terminus commands that are useful in a CI setting. For example,
terminus build:env:create will create a new multidev environment and deploy the contents of the current directory to the multidev.
The goal of these commands is to take common tasks that would normally need more scripting to work and to consolidate/standardize them into single commands.
Which repository + CI provider support combinations are important to you?
- GitHub and CircleCI
- BitBucket and Pipelines
Are you using Build Tools? If so, which version are you using?
- I am not using Terminus Build Tools
- Version 1
- Version 2
- A mix of versions 1 and 2
In addition to the Terminus Build Tools Plugin, Pantheon also maintains supporting repositories as part of the larger Build Tools initiative.
These repositories demonstrate a fully-built CI process including Composer support, a build step, deployment to Pantheon and automated testing.
These examples are meant to be a starting point for new projects so that CI configuration and bash scripts do not need to be developed from scratch.
Did you know that you can fork our examples and use your own repository as a starting point for new projects with
terminus build:project:create? This is useful if you need a different set of automated tests, a modified build step, or just want a common set of modules or plugins to be installed on each project.
- Yes, I know you can use a custom repository as a starting state for
- No, I didn’t know you can use a custom repository as a starting state for
Do you find the custom starting state feature valuable?
- Yes, I find the custom starting state feature valuable
- No, I do not find the custom starting state feature valuable
Pantheon also maintains the
The docker image aims to provide the tooling needed to run the scripts in the example repositories in a single image. The image follows semantic versioning and the current version,
6.x, can be by referencing
What parts of the Build Tools initiative are most valuable to you?
- Scaffolding new projects and setting up CI providers with Pantheon (configuring ssh keys, environment variables, etc.)
- The CI best practice example repositories
- The Docker image with Pantheon related tooling pre-installed
- All of it! If we have one but not the others Build Tools is not valuable.
If there is anything you think we should know, or think I have missed in this post, please leave a reply :-). If you want to report bugs or make a feature request for the Build Tools plugin, the example repositories, or the Dockerfile please open an issue on GitHub for the respective project.