Introduction
A starter kit for teams that are looking to make the leap to more advanced workflows.
Contributors: Greg Anderson, Steve Persch, Andrew Taylor, Rachel Whitton, Fatima Sarah Khalid, Drew Gorton.
Discuss in our Forum Discuss in SlackWhat Is Build Tools?
Build Tools connects Pantheon with your CI service and external Git provider. It also includes Composer support, Automated Testing, and best practice recommendations for your advanced WebOps workflow. This is an extension of the Pantheon WebOps workflow.
Using Build Tools will make it easy to create new projects that:
Allow customization with your choice of Git provider and Continuous Integration (CI) service.
Provides extra Terminus commands and customization options for common workflow tasks and to customize your build.
Includes templates and best practices to help level up WebOps teams with automated testing, composer updates, and more.
Avoid the complexity of combining multiple Pantheon start-state repositories on your own.
A Build Tools Project's Components
Build Tools currently supports the following combinations of Git and CI services:
Is Build Tools Right For You?
It's quick to get started with a Build Tools project, but it’s also helpful to understand the components and how they work together.
In general, it's a good fit if your team is comfortable with:
- command-line tools,
- creating a bash script with terminus commands,
- CI to automate the deployments.
Developer Resources
Pantheon's Developer Relations team holds trainings, Office Hours and monitors posts in our community forum. Join us to learn about Terminus, automations, advanced workflows like Build Tools, and more.
Build Tools Changelog
2.0.3
New Features/Updates:
- Add
terminus build:self:info
command for build tools. ([#341](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/341)) - Add
TERMINUS_BUILD_TOOLS_WORKFLOW_TIMEOUT
environment variable ([#362](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/362)) - Change references to old default branch master to new default branch main
- Increase workflow timeout and add better logging ([#353](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/353))
Bug Fixes:
- Fix broken pushback in Gitlab ([#363](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/363))
- Sanitize URL before writing to build metadata. ([#355](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/355))
- Adding an option for
--no-git-force
onbuild:env:create
andbuild:env:push
([#346](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/346))
Misc:
- README typo updates ([#310](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/310))
- Update README.md ([#359](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/359))
- Fix link in badge in README
2.0.0
- [closed] Github api warning on create new project [#323](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/323)
- [closed] /bin/bash: ./.ci/build/php: Permission denied - both on Bitbucket and Github/CircleCI [#314](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/314)
- [bug] GitLab branchesForPullRequests returns SHA, not branch [#298](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/298)
- [bug] GitLab branchesForPullRequests does not handled "closed" state properly [#297](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/297)
- [question] Question: Why "Empty WordPress" Upstream by default in Pantheon? [#295](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/295)
- [enhancement] No documentation for build:comment:add:pr and build:comment:add:commit [#284](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/284)
- [enhancement] Allow for ssh instead of https for the initial push to external Git providers during build:project:create [#276](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/276)
- [enhancement] Support for private packages [#275](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/275)
- [documentation] Document self hosted GitLab [#274](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/274)
- [bug] Valid GitLab access tokens rejected [#271](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/271)
- [documentation] Confusing usage of
checkPagedCallback()
[#266](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/266) - [closed] Unexpected PHP notices when running
build:env:delete:pr
[#261](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/261) - [bug] --visibility=private ignored by bitbucket provider [#255](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/255)
- [enhancement] Make the API for isPagedResponse and getPagerInfo more flexible [#254](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/254)
- [bug] Incomplete BitBucket Pagination Methods [#253](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/253)
- [closed] A customer Transferred their GitHub repo under their organization and the build setup got broken [#252](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/252)
- [closed] The latest release contains a composer.lock file which conflicts with Terminus' composer.lock file [#251](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/251)
- [closed] build:env:push is incompatible with the recent 2.1.0 release of Terminus [#250](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/250)
- [bug] build:env:create fails when the multidev option is dev [#247](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/247)
- [closed] Terminus Build Env Create Takes too long [#244](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/244)
- [bug] Build Tools Assumes Projects Always Live 1 Level Deep [#239](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/239)
- [enhancement] multidev link on pull request, instead of a commit comment [#238](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/238)
- [closed] deploy-to-pantheon.sh fails after PR #227 merged into master [#236](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/236)
- [enhancement] Add visibility flag to build:project:create [#231](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/231)
- [closed] Explore support for Github Actions [#230](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/230)
- [closed] Self-hosted GitLab Support [#220](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/220)
- [closed] Automatic dependency update for GitLab [#218](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/218)
- [closed] Update documentation to include all supported CI providers [#216](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/216)
- [closed] Ensure that automatic multidev deletion works when PR is on BitBucket [#215](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/215)
- [closed] Quicksilver pushback for GitLab [#214](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/214)
- [closed] Ensure private GitLab projects work [#213](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/213)
- [closed] build:project:create wp workflow loads drupal docker image [#210](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/210)
- [closed] Prepare Database takes 3 minutes to run [#206](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/206)
- [closed] Unable to login to BitBucket [#205](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/205)
- [question] Private git repository in composer [#204](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/204)
- [closed] Moved Github repository from personal account to org [#203](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/203)
- [closed] Terminus build Error: sed: -e expression #1, char 1: Unknown command: ``''' [#196](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/196)
- [closed] Could not load plugin pantheon-systems/terminus-build-tools-plugin because it is not compatible with this version of Terminus. [#179](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/179)
- [question] sh: composer: command not found when running build:project:create [#165](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/165)
- [closed] Error parsing remote URI with dots in it [#163](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/163)
- [documentation] Document lack of Windows support [#162](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/162)
- [enhancement] Add option for
build:env:push
command to include message [#161](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/161) - [closed] API authentication with CircleCI fails [#158](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/158)
- [closed] 2.0.0-beta1 isn't removing my ci- environments [#155](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/155)
- [closed] CircleCI fails for pantheon/01-prepare with "permission denied" [#153](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/153)
- [closed] How do I move my Drupal 8 site's GitHub repository to a GitHub Organization? [#146](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/146)
- [closed] Bitbucket Support [#145](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/145)
- [closed]
build:env:delete:pr
command uses incorrect GitHub API endpoint [#143](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/143) - [closed] CircleCI 1.0 EOL on August 31 [#142](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/142)
- [closed] Build fails with "[error] Successfully queued ellis_clone_files" [#140](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/140)
- [closed] Initial commit fails on Windows due to single quotes around commit message [#139](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/139)
- [closed] Updated help text need for terminus:env:delete:pr [#132](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/132)
- [closed] build:project:create failing at drush site-install [#131](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/131)
- [closed] CircleCI build failing with "shallow update not allowed" [#129](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/129)
- [closed] Template project not on Packagist? [#126](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/126)
- [closed] build:env:delete not working on multi-dev environments [#125](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/125)
- [closed] Build failing on create [#123](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/123)
- [closed] SSH key required during push, even w/ Pantheon token auth [#122](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/122)
- [closed] Set TERMINUS_HIDE_UPDATE_MESSAGE environment variable [#121](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/121)
- [closed] Bitbucket fails on CircleCI [#120](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/120)
- [Usability][**enhancement**] BT-39: Only build pull requests [#118](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/118)
- [Usability][**bug**] build:project:create does not put correct CI badge in README [#116](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/116)
- [closed] Feature request: respect "require-dev" in composer.json [#113](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/113)
- [closed] Can CircleCI be updated to Drush 9? [#112](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/112)
- [bug] build:env:delete:ci fails with BitBucket [#109](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/109)
- [closed] build:project:create fails [#102](https://github.com/pantheon-systems/terminus-build-tools-plugin/issues/102)
- [closed] CircleCI badge shows green/pass even though workflows are failing #97
- [closed] Handling of PHP versions mismatch #92
- [enhancement] Add --pr-only option to build:env:create and build:env:push #91
- [closed] terminus build-env:delete:ci deletes non ci-build environments #87
- [closed] build:project:create --git=bitbucket fails with CircleCI API error #86
- [bug] --preserve-prs fails with build:env:delete:pr #81
- [closed] Tests fail when branch is master #72
- [bug] build-env:create-project permission denied on Windows 10 #71
- [closed] build-env:create-project fails for d7 #70
- [closed] Will we continue to maintain aliases? #68
- [closed] Cleanup repos in pantheon-ci-bot #65
- [closed] Handling of a non-master default branch #58
- [closed] Call build-assets in build:project:create #54
- [closed] UX: Store tokens in cache #50
- [closed] install workflow #49
- [closed] Allow installing a specific profile #43
- [closed] Evaluate GitHub Apps #38
- [closed] Error on first time use. #33
- [closed] Cleanup failed build? #23
- [closed] Please do not nuke all .git files from all sibling directories recursively #22
- [enhancement] Allow The Merge Command To Persist the Multidev Environment #17
- [closed] META: Development of build-env:create-project command #7
- [closed] Sterile artifact build environment #6
- [closed] Testing strategy for permutations of external git hosts / CI services / CMS versions #5
- [closed] Delete multidev environments as soon as PR is merged #1
2.0.0 Beta 16
- Update
BitbucketAPI
to handle API data pagination (#267) - Make
isPagedResponse()
andgetPagerInfo()
more flexible and typehint (#264) - Fix PHP notices when interacting with BitBucket API data (#263)
- BitBucket's API response is shaped differently than GitHub and GitLab. The values themselves are nested in a
values
key. - Mark
branchesForPullRequests
method public (#260) - Properly parse the BitBucket visibility flag (#256)
- Add missing use statement in BitbucketProvider (#212)
2.0.0 Beta 14
New Features:
- Private repository support for
build:project:create
(#226) - Allow setting the Pantheon region during
build:project:create
(#225) - Build assets on project creation if command exists (#207)
GitLab support:
- Add support for creating scheduled GitLab Pipeline (#232)
- Add Drupal 8 GitLab test (#245)
- Allow git providers to override build metadata (#200)
Bug fixes:
- Gracefully fail if build:env:create source and multidev are the same (#227)
Misc:
- Documentation updates (#243)
- Clear Composer cache before running
build:project:create
in tests (#242)