Symfony application to generate the Crown Commercial public website at https://www.crowncommercial.gov.uk/
Please see further web documentation (this is a private repo), or check the documentation in the docs directory of this repo.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See Deployment for notes on how to deploy the project on a live system.
- PHP 7.3+
- NPM 8.9.4
- Elasticsearch 7.x+
A step-by-step guide to get a development environment running on your machine.
To install PHP packages for development, run:
composer install
To install PHP packages for Staging and Production, run:
composer install --no-dev --optimize-autoloader
Installation instructions for Elasticsearch.
Run bin/elasticsearch
(from Elasticsearch root directory) to make Frameworks and Suppliers search work.
Add a file called env.local
with the following configuration settings:
APP_ENV=dev
APP_API_BASE_URL='http://wordpress-domain.com/wp-json/'
APP_CMS_BASE_URL='http://wordpress-domain.com/'
APP_BASE_URL='http://frontend-domain.com'
SEARCH_API_BASE_URL='http://wordpress-domain.com/api'
PARDOT_EMAIL_FORM_HANDLER_URL='http://go.pardot.com/l/path'
To explain these settings:
- APP_ENV - Environment (dev = local development)
- APP_API_BASE_URL - Base URL to WordPress site suffixed with /wp-json/ (e.g.
https://cms.crowncommercial.local/wp-json/
) - APP_CMS_BASE_URL - Base URL to WordPress site (without any suffix)
- APP_BASE_URL - Base URL to front-end site
- SEARCH_API_BASE_URL - Base API URL for Elasticsearch queries
- PARDOT_EMAIL_FORM_HANDLER_URL - Pardot form handler to send email addresses to
Use NPM to compile Javascript modules and Sass into CSS. Install the long-term support (LTS) version of Node.js, which includes NPM. The minimum version of Node required is 8.9.4. We recommend using nvm
for managing versions of Node.
To install Node packages, run:
npm install
To create the folder structure required for watch
to work, run (once):
npm run build
We import the GOV.UK Frontend styles into the main Sass file in our project. All our own Sass variables are placed before @import "node_modules/govuk-frontend/all";
to make sure the right settings have been set before we compile the Sass to CSS.
The JavaScript is copied from node_modules/govuk-frontend/all.js
to public/assets/scripts/all.js
(and public/assets/scripts/all.min.js
), where it is referenced in all templates.
As the GOV.UK Frontend does not initialise any scripts by default; all scripts are initialised, using initAll
, in app.js
.
See Gov.uk Design System's Coding standards to learn more about the standards we're following.
To watch for changes, run:
npm run watch
Set up local host http://local.crowncommercial.gov.uk/ to point to the public/
folder.
Optionally, you can view the website at http://127.0.0.1:8000, by running run:
bin/console server:run
Although we wouldn't recommend using this method long-term as the environment is less customisable and reliable.
To clear the Symfony cache (e.g. compiled templates) run:
bin/console cache:clear
To clear the application cache (e.g. cached API data) run:
bin/console cache:pool:clear cache.app_clearer
To clear the HTTP cache run:
rm -Rf var/cache/prod/http_cache
For more information about the caching setup for the site please read CACHING.md.
- Test in a feature branch.
- Merge to
development
branch to test in Development environment. - Merge to
preprod
branch to test in PreProd (UAT) environment. - Get client to test and approve change.
- Create Pull Request to merge changes into
master
, ensure you add details of tickets you are fixing in the PR. - Code must pass automatic tests & be approved by one other person.
- Email internal-it@crowncommercial.gov.uk to ask approval of this PR.
- Once approved, merge into master. This deploys to Production.
For more information on deployment please read the relevant docs (private repo).
See details on Environments (private docs).
There are a few deployment checks that are required to pass before merging new code into production, notably:
- Code must pass static code analysis tests & automated tests (Travis).
- Manual review by CCS TechOps to approve Pull Request.
We use Travis CI to run automated tests on all merges into development, preprod and master.
Application code must meet the (PSR12) coding standard.
We currently ignore long line lengths, though we can fix this in the future if desired. PHPCS configuration can be found
in phpcs.xml.dist
.
You can test for this via:
# Summary report
vendor/bin/phpcs --report=summary
# Full details
vendor/bin/phpcs
Where possible you can auto-fix code via:
vendor/bin/phpcbf
Create unit tests in tests/
and run via bin/phpunit
See Getting Started with PHPUnit
Please note: Behat is not currently used in CI but has a basic setup.
Create Behat tests in features/
To run first ensure you are running the local server via bin/console server:run
Run Behat tests via: bin/behat
See quick start and Behat and Mink.
- GOV.UK Design System - Frontend design system
- GDS .