Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Front end release management

Sara Cope edited this page Dec 11, 2019 · 33 revisions

This is our official process for releasing new versions of code-gov-front-end.

Table of contents

  1. Principles
  2. Versioning
  3. Release process
    1. Git workflow
    2. Publishing a new release

Principles

  1. Follow well-established versioning practices
  2. Provide detailed notes for each release
  3. Encourage contributions and thank contributors for their hard work

Versioning

See Version Control for more information about semantic versioning and what constitutes a release

Release process

Git workflow

See Git Workflow for more information about how to create new branches and suggest changes to @code.gov/* repositories

Publishing a new release

⚠️ In these docs, {{ version }} should always be replaced with the semantic version number, i.e. 1.2.1 ⚠️

Create the release branch

  • Determine if the version is a patch (#.#.#), minor (#.#.0), or major (#.0.0) version

  • Branch off master and use the branch name format release-{{ version }}:

           git pull origin master
           git checkout -b release-{{ version }} origin/master
    

Example > git checkout -b release-0.0.7 origin/master


Get started

  • Close all running processes in the terminal.
  • Publish new versions of any other components that have changed. If any other components listed at the top of Component Release Management have changed since the last release of code-gov-front-end, follow the instructions in Component Release Management to publish new versions to npm and update the package.json of code-gov-front-end with the new version numbers.
  • Generate a new sitemap. Go through the “Setup instructions” and “Generating a new sitemap.xml” sections in the README of code-gov-site-map-generator to generate a new sitemap.xml file and merge it into the master branch of that repo. Then follow the instructions in Component Release Management to publish a new version of code-gov-site-map-generator to npm. Once the new version has been published, update the version number for code-gov-site-map-generator in the package.json of code-gov-front-end and run npm install to update the package-lock.json. Commit the changes.
  • Update the filters on the browse projects and open task pages. Go through the “Setup instructions” and “Generating new filters” sections in the README of code-gov-data to generate the filter options for the browse projects page and the open tasks page.
  • If you haven't created a branch for this release in code-gov-front-end yet, create the branch following the branching instructions for releases
  • In code-gov-front-end, run npm run update-data. This will copy the new versions of repos.json and tasks.json that were just generated (as well as the schema.json) from the code-gov-data remote repository into your local code-gov-front-end repository. Run git status to see what change were made. If there were changes, then commit those changes to the release branch.
  • Run npm install to download the new components. Commit any changes.

Test the release

Test all of the latest updates and release to staging

  • Follow the testing instructions to test the branch
  • Execute CODE_GOV_RELATIVE_DIR='/dist/federalist-stag' CODE_GOV_BRANCH='federalist-stag' CODE_GOV_API_KEY='OC457325hyT6DpFm5HBBZ1i8SR6gtp5U2CdqtHZQ' npm run deploy-to-staging to publish federalist-stag and deploy to staging
  • Visit staging to verify any changes you made

Note: If you get the following error: `` fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

at ChildProcess.<anonymous> (/Users/josephcastle/Desktop/Development/DevCode/code-gov-front-end/node_modules/gh-pages/lib/git.js:42:16)
at ChildProcess.emit (events.js:200:13)
at maybeClose (internal/child_process.js:1021:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:283:5) {

code: 128, message: 'Cloning into ' + "'node_mod

Follow the `Generating a new SSH key and adding it to the ssh-agent`(https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent) instructions.
#### Version the release with `npm`

`npm version` will increment the version number semantically in `package.json` and commit the changes to git. Versions will be tagged on the master branch. See the [`npm publish`](https://docs.npmjs.com/cli/publish) documentation for additional options.

- [ ]  **For prerelease releases:** Run `npm version prerelease --no-tag`.
- [ ]  **For patch releases:** Run `npm version patch --no-tag`.
- [ ]  **For minor releases:** Run `npm version minor --no-tag`.
- [ ]  **For major releases:** Run `npm version major --no-tag`.

This bumps the version number in `package.json` and commits that change. It should echo back the new version number to your terminal command line. `git log` should show that new commit.

- [ ] **Regenerate the dependency_license.json file** by running the script `npm run licenses`. Commit the changes.

---

#### Deploy the release

- [ ]  Push the version branch up to GitHub
- [ ]  Merge `release-{{ version }}` back in to the `master` branch
- [ ] Run `git checkout master` and `git pull origin master` to update your local repository
- [ ]  From master, execute `CODE_GOV_RELATIVE_DIR='/dist/federalist-prod' CODE_GOV_BRANCH='federalist-prod' CODE_GOV_API_KEY='OC457325hyT6DpFm5HBBZ1i8SR6gtp5U2CdqtHZQ' npm run deploy-to-production` to publish `federalist-prod` and deploy to production
- [ ]  Wait for the deployment success message in your terminal
- [ ]  Check that [Federalist](https://federalistapp.18f.gov) deployed the new release's site

---

#### Publish the release on npm

- [ ]  Run `npm publish` to release the package to the npm directory
- [ ]  Check that the new release was published to [npm](https://www.npmjs.com/settings/code.gov/packages)

If you get the following error then run `npm login` to authenticate to npm.  

     npm ERR! publish Failed PUT 401  
     npm ERR! code E401  
     npm ERR! You must be logged in to publish packages.

---

#### Create the release in GitHub

- [ ]  In [GitHub releases](https://github.com/GSA/code-gov-front-end) select the release draft notes you had previously started or `Draft a new release`. Use the template provided from the [wiki](https://github.com/GSA/code-gov-front-end/wiki/Release-Notes-Template).
- [ ]  Add the `tag`: `v{{ version }}`
- [ ]  Use `target`: `master`
- [ ]  Add release notes to the body
- [ ]  Have at least one team member review the release notes
- [ ]  Select `Publish release`

---

#### Publicize the release

- [ ]  Post a message in the `#code-gov-team` Slack channel linking to the release.
- [ ]  Post a message in the `#code-gov-partners` Slack channel linking to the release. Pin the message to the channel.
- [ ] Post a message to the [email protected] listserv.

---

#### Setup the next draft release notes

- [ ]  Click "Draft a new release" from the Releases page
- [ ]  Set the target to master
- [ ]  Add the title [unreleased]
- [ ]  Save draft

---
Clone this wiki locally