This repository contains the files and infrastructure to run the vote.gov
website.
| Section | Description |
|---|---|
| Federalist staging builds | Federalist staging builds |
| Federalist production builds | Federalist production builds |
| Installation | Installing the project locally. |
| Development | Development workflow using gulp. |
| Deployment | Automated & Manual deployment information on Federalist |
| Contributing | Contributing to the project. |
| Wiki | usagov/vote-gov wiki. |
The development for the vote.gov site has the following dependencies
- Hugo, a static-site generator written in Go.
- Gulp, an automation tool for asset-pipelines.
- NodeJS
- Ruby
This documentation assumes that you have Ruby and NodeJS installed on your
machine. Instructions for installing node, and npm, can be found here.
In order to serve the vote.gov site locally, you will need to install the hugo
command-line tool. This can be installed easily via Homebrew
on Mac OS X with the following command in your Terminal.
brew update && \
brew install hugoYou can also download the latest release and checkout the quick start guide for further instructions.
In order to build the assets for the vote.gov site, you will need to install the
gulp command-line tool.
npm install --global gulp-cliThe Sass file linter uses the Ruby gem scss_lint. This gem must be installed
on your machine in order to run any tasks that depend on the scss-lint binary.
gem install scss_lintOnce gulp is installed globally, navigate to this directory in your Terminal
and tell npm to bring in the asset-pipeline's dependencies.
npm installOnce that is complete, run gulp in your Terminal to get a list of tasks.
$ gulp
Using gulpfile ~/Developer/vote-gov/gulpfile.js
Starting 'default'...
v1.0.0 vote-gov
______ ______ _____ __ ________ ______ ______
/\ ___\/\ ___\/\ __-. /\ \ / /\ __ \/\__ _\/\ ___\
\ \ __\\ \ __\\ \ \/\ \ \ \ \'/\ \ \/\ \/_/\ \/\ \ __\
\ \_\ \ \_\ \ \____- \ \__| \ \_____\ \ \_\ \ \_____\
\/_/ \/_/ \/____/ \/_/ \/_____/ \/_/ \/_____/
Available tasks
...To start the local webserver for the English and Spanish site and have hugo watch for changes:
npm startOptional: To have gulp watch for changes to the assets and content folder run:
$ gulp watch Then open a new terminal, navigate to this directory, and run:
npm startThe English website is now available at http://localhost:1313/.
The Spanish website is now available at http://localhost:1313/es/.
These flags are 100% optional and can be omitted from any tasks that are affected by them.
no-testThis flag disables linters and tests for all assets.productionThis flag enables minification and compression of all assets in prep for a production environment.
The microsite is deployed on Federalist.18f.gov. To read Federalist
documentation, click here. The documentation below makes the
following assumptions.
- Assuming that you have Federalist access.
- Please read Access and Permissions for more Information.
This project uses Federalist for continuous deployment. Our
current process deploys our staging branch and our master branch to their
own staging and production URLs.
To view the build for another branch, see the links below and replace with the name of the branch. The build for the branch must have completed successfully.
For production builds: https://cg-9e8debaf-b030-4825-a43c-cb2bc850c96c.app.cloud.gov/preview/usagov/vote-gov//
For staging builds: https://cg-82f344a8-cccc-4f34-b090-19d55b2b6585.app.cloud.gov/preview/usagov/vote-gov//
Using the cf command-line tool, you can run a manual deployment to either
staging or production by targeting the corresponding organization / space
and as long as you have access to cf push the target. More information on
deploying to cloud.gov can be found here and here.
Manual deployments are not necessary as all deployments should go through Federalist.
Information about launching a live site on Federalist can be found at the launch checklist.
To check which space you're targeting using the cf command-line tool, type the
following in your terminal.
cf targetTo build the vote.gov site locally , run npm start . This command calls the gulp website task and starts the hugo server.
To mimic the Federalist build run npm run federalist. To start the server run ‘hugo server’ .
Federalist is a continuous deployment-like build environment that automatically pushes the vote.gov application for staging and production.
Any commits made to staging will be automatically built on Federalist.
During the re-launch of vote.gov, we realised that there were lingering
issues with cached redirects between vote.gov and vote.usa.gov. To
fix this, we created a minimal nginx configuration which:
- redirects front page requests to
https://vote.gov/?1(the query string was added to defeat a previously-cached 301 redirect) - redirects all other file requests to the original S3 bucket containing
the
vote.usa.govassets
The manifest and configuration for this redirector app can be found in the
redirector folder.
This project is in the worldwide public domain. As stated in CONTRIBUTING:
This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.
All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.