Releasing Fuel UX
** Read this entire document including Release Notes Prerequisites. You may need SauceLabs, FuelCDN, NPM, Twitter, Browserstack, Aloha SSO, and TravisCI credentials in order to release. **
Complete the prerequisites for the generating release notes.
You will need
FUEL_CDN.yml file, as well as ssh keys. Contact another maintainer for credentials/keys.
You will also need to add the following to your
Host fuelux.upload.akamai.com HostkeyAlgorithms +ssh-dss
You will need to authorize your machine to do npm publishing using
npm adduser. Contact another maintainer for credentials.
grunt saucelabsBest to find out if they pass or not now as opposed to in the middle of a release.
- WILL NOT WORK ON VPN
- If some environments fail, you can comment out the passing environments temporarily in
sauce_browsers.ymlwhile you debug
- If some environments fail, start your server with
grunt servefastand use Browserstack to investigate.
- Generate test distribution package for use on the Fuel UX Site
- Test on Fuel UX Site
- From Fuel UX Site repo
npm run local
- Check all known affected controls on dev instance of Fuel UX site on Heroku
- Scroll to the bottom of each page scanning for visual errors
- Make sure right-hand nav functions correctly
- Click on the "base" example of each control on the control pages and make sure it functions
- Pay special attention to any controls that were modified in the release, look at each example and interact with it to make sure there are no obvious issues
1. Update GitHub issue tracker for release. Use clear, obvious language for pull request titles. Modify if necessary.
- 1a. Create a milestone in GitHub for the next version.
- 1b. Assign any remaining open tickets to the milestone you just created (or, if appropriate, assign them to the backlog).
- 1c. Mark the current release milestone as closed.
2. Log off of VPN (or saucelabs will probably fail)
npm run releaseThis grunt task:
- Creates a new release branch from remote master.
- Builds dist.
- Updates the
bower.json, and markdown files with the version. This will build and run all tests on the
distfolder (including SauceLabs cross browser testing).
- Adds modified release files.
- Commits with version number.
- Adds version tag.
- Pushes to origin (
git push origin 3.x).
- Publishes tag to Github. The tag commit should exist in the major.x branch.
- Upload contents of
distfolder to Fuel CDN server via SFTP (
mv dist x.x.x && scp -i ~/.ssh/fuelcdn -r x.x.x/ [user@domain]:/[id]/fuelux/ && mv x.x.x dist).
- Pushes 3.x to master if nothing new has been merged in.
npm publishusing the fuelux profile
- (with prompt) Runs Ruby Gem described below for Release Notes.
- 4. Create Release Notes for release and publish
5. Update getfuelux.com
- 4a. Checkout the
- 4b. Run
- 4c. Commit
- 4d. Push to
- 4a. Checkout the
6. Run fuelux-tools updatedependencies.js script
- 7. Cut fusion release
- 10. Announce
- 10a. Tweet via @FuelUX account
- 10b. Post to Chatter in the Marketing Cloud Lightning UX group
Generate Release Notes
Release notes are generated automagically using this Ruby gem.
- Create a GitHub token for the changelog generator, be sure to make note of the token that is created, because you'll need it
GITHUB_TOKEN.jsonis git ignored)
- Fill the
tokenvariable in GITHUB_TOKEN.json with the token you just created.
- Install Ruby
- Install the gem
[sudo] gem install github_changelog_generator
Creating a GitHub token
GitHub only allows only 50 unauthenticated requests per hour. Therefore, it's recommended to run this script with authentication by using a token.
- Generate a token here - you only need "repo" scope for private repositories
Creating Release Notes
Creating release notes can either be done as part of the release (by saying yes to the prompt) or manually afterwards.
- Say "yes" when prompted.
Release notes will be placed in
CHANGELOG.md. There is a bug with the changelog_generator (or a mis-configuration or something) that makes it mess up and include links for basically every issue ever.
- Delete all issues listed for all previous releases leaving just the issues for the current release.
- Copy and paste the remaining issues into a New Release on Github titled after the release number, prepended with a
Each time a release is done, it must be integrated into the following properties: