All Projects → Lullabot → drupal9ci

Lullabot / drupal9ci

Licence: GPL-3.0 License
One-line installers for implementing Continuous Integration in Drupal 9

Programming Languages

shell
77523 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to drupal9ci

travis-ci-latex-pdf
Overview of different methods to build LaTeX with GitHub Actions or Travis-CI (idea by @jackolney but completely rewritten by @PHPirates and contributors).
Stars: ✭ 113 (-17.52%)
Mutual labels:  travis-ci, continuous-integration, gitlab-ci, github-actions
Drupal8ci
One-line installers for implementing Continuous Integration in Drupal 8
Stars: ✭ 113 (-17.52%)
Mutual labels:  workflow, circleci, drupal, continuous-integration
CI-Utils
Utilities for running Common Lisp on CI platforms
Stars: ✭ 18 (-86.86%)
Mutual labels:  circleci, travis-ci, gitlab-ci, github-actions
docker-coala-base
coala base docker image
Stars: ✭ 20 (-85.4%)
Mutual labels:  circleci, travis-ci, gitlab-ci
googletest-ci
Continuous integration (CI) + Google Test (gtest) + CMake example boilerplate demo
Stars: ✭ 14 (-89.78%)
Mutual labels:  circleci, travis-ci, github-actions
nest-boilerplate
Nest.js boilerplate with CircleCI, Commitizen, Commitlint, Docker-Compose, ESLint, GitHub Actions, Husky, Lint-staged, OpenAPI, Prettier, PostGreSQL, Travis CI, TypeORM
Stars: ✭ 16 (-88.32%)
Mutual labels:  circleci, travis-ci, github-actions
Ci Detector
Detect continuous integration environment and get information of current build
Stars: ✭ 138 (+0.73%)
Mutual labels:  circleci, travis-ci, continuous-integration
Nevergreen
🐤 A build monitor with attitude
Stars: ✭ 170 (+24.09%)
Mutual labels:  circleci, travis-ci, continuous-integration
Ci Matters
Integration (comparison) of different continuous integration services on Android project
Stars: ✭ 119 (-13.14%)
Mutual labels:  circleci, travis-ci, gitlab-ci
koshry
Run on CI, Apply Rules on the Build and Get the Result back to the Pull Request.
Stars: ✭ 59 (-56.93%)
Mutual labels:  circleci, travis-ci, continuous-integration
scikit-ci
Simpler and centralized CI configuration for Python extensions.
Stars: ✭ 15 (-89.05%)
Mutual labels:  circleci, travis-ci, continuous-integration
cibuildwheel
🎡 Build Python wheels for all the platforms on CI with minimal configuration.
Stars: ✭ 1,350 (+885.4%)
Mutual labels:  circleci, travis-ci, github-actions
dump-env
A utility tool to create .env files
Stars: ✭ 81 (-40.88%)
Mutual labels:  travis-ci, continuous-integration, gitlab-ci
Cargo Make
Rust task runner and build tool.
Stars: ✭ 895 (+553.28%)
Mutual labels:  circleci, travis-ci, gitlab-ci
Cml
♾️ CML - Continuous Machine Learning | CI/CD for ML
Stars: ✭ 2,843 (+1975.18%)
Mutual labels:  continuous-integration, gitlab-ci, github-actions
developer-ci-benefits
Talk docs—includes CI (Continuous Integration) benefits, description, and setup tips 💡💪
Stars: ✭ 29 (-78.83%)
Mutual labels:  circleci, travis-ci, continuous-integration
ci-skip
CI skip comment
Stars: ✭ 35 (-74.45%)
Mutual labels:  circleci, travis-ci, github-actions
noise-php
A starter-kit for your PHP project.
Stars: ✭ 52 (-62.04%)
Mutual labels:  travis-ci, continuous-integration, github-actions
cpp14-project-template
A simple, cross-platform, and continuously integrated C++14 project template
Stars: ✭ 64 (-53.28%)
Mutual labels:  travis-ci, continuous-integration
drevops
💧 + 🐳 + ✓✓✓ + 🤖 + ❤️ Build, Test, Deploy scripts for Drupal using Docker and CI/CD
Stars: ✭ 55 (-59.85%)
Mutual labels:  drupal, continuous-integration

Drupal 9 CI

CircleCI

This repository provides the foundation to implement Continuous Integration in a Drupal 9 project using any of the following CI providers:

To install, simply run the respective installer and allow the CI provider that you chose to watch repository changes to start building on every pull request.

If you want to test an individual module instead of a Drupal project, see Andrew Berry's drupal_tests.

Here is a clip that shows how it works for CircleCI.

Requirements

The scripts assume that you have a Drupal 9 project created using drupal-project, which sets a well known foundation. If your project's directory structure differs from what drupal-project sets up, you will need to adjust the CI scripts.

It's also recommended to adjust your project to add a subset of the settings.php file into version control and rely on settings.local.php for setting the database connection. See this commit which contains these changes among other ones. The CI scripts have their own settings.local.php which is copied at build time into web/sites/default.

DocumentRoot: web vs docroot

By default Apache and the rest of the code is set up to have the DocumentRoot folder as web. If your project uses docroot instead, the easiest thing to do is to symlink one to the other. This can be done adding a line like this one before running Apache (you will need to adapt paths).

Otherwise you can go through the files and replace as needed. You can see a list of affected files in this comment.

Installation

Each CI tool has its own installer, which extracts the required files to run the jobs. It also adds a demo module with tests.

Choose a CI tool from the list below and follow its installation steps.

CircleCI

Demo repository | Deep dive article

Open a terminal and run the installer from the root of your project:

curl -L https://github.com/lullabot/drupal9ci/raw/master/setup-circleci.sh | bash

Sign up at CircleCI and allow access to your project's repository.

CircleCI watch

Happy CI-ing! :-D. From now every time you create a pull request, CircleCI will run the set of jobs and report their result like in the following screenshot:

CircleCI pull request

For an overview of the CircleCI features, have a look at this article from the Lullabot blog.

Using a custom Docker image

The CircleCI configuration file uses a custom Docker image that extends from the official Drupal image and it is hosted at Docker Hub. If this image does not fit your project's architecture then consider creating your own image based out of it.

Travis CI

Demo repository | Deep dive article

Open a terminal and run the installer from the root of your project:

curl -L https://github.com/lullabot/drupal9ci/raw/master/setup-travis-ci.sh | bash

Sign up at Travis CI and allow access to your project's repository:

Travis watch

Happy CI-ing! :-D. From now on every pull request will trigger a build in Travis and its progress will be visible like in the following screenshot:

Travis pull request

For you to see the result of the individual jobs, you need to click at the Details link from the above screenshot:

Travis CI jobs

Setting up code coverage reports

Coveralls.io is a third party tool that can host and present PHPUnit code coverage reports in a neat way within a pull request. Here is how to set it up:

Register at https://coveralls.io using your GitHub account and then add your repository like in the following screenshot:

Coveralls add repository

Then take the chance to adjust a couple settings to get cleaner feedback in pull requests:

Coveralls settings

That's it! Here is a sample report which you can see by clicking at Details at the pull request's status message:

Coveralls report

GitLab CI

Demo repository | Deep dive article

Open a terminal and run the installer from the root of your project:

curl -L https://github.com/lullabot/drupal9ci/raw/master/setup-gitlab-ci.sh | bash

Review, commit, and push the resulting changes. After doing that, navigate to the project's homepage at GitLab and open the CI / CD >> Pipelines section. You should see a running pipeline like the following one:

GitLab pipeline

GitHub Actions

Demo repository

Open a terminal and run the installer from the root of your project:

curl -L https://github.com/lullabot/drupal9ci/raw/master/setup-github-actions.sh | bash

Review, commit, and push the resulting changes. After doing that, navigate to the repository's homepage at GitHub and open the Actions tab. You should see a running workflow like the following one:

Github actions

Bitbucket

Open a terminal and run the installer from the root of your project:

curl -L https://github.com/lullabot/drupal9ci/raw/master/setup-bitbucket.sh | bash

Review, commit, and push the resulting changes. After doing that, navigate to the repository's homepage at Bitbucket and open the Pipelines tab. You should see a running workflow like the following one:

Bitbucket pipelines

Setting up the Behat and Cypress jobs for all platforms

The Behat and Cypress jobs require a running Drupal 9 site. The repository contains the code, but for running tests in a realistic environment you need:

1. A recent copy of the production environment's database

Travis

If you have Drush site aliases, and your repository is private, then follow these instructions to add an SSH key. Next, set up a drush site alias. Finally, adjust the Behat job to run drush @my.alias sql-cli.

CircleCI

If you have Drush site aliases, then at the CircleCI dashboard go to the project's permissions and add an SSH key. Next, add drush @my.alias sql-cli to the Behat job at .circleci/config.yml.

Alternative

Alternatively, upload a sanitized database dump somewhere and set up the DB_DUMP_URL environment variable so the job can download it.

For example: Travis CI db env var CircleCI database via environment variable

2. The production environment's files directory

If you have a site alias, then add drush rsync @my.alias @self to the Behat job. Alternatively, use Stage File Proxy module.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].