When a new version of Ember is released, the learning team has to make sure some parts of our infrastructure are adequately updated to account for it. Please update the following in the listed order:
💁 manual process
🚨 This process is not well defined and needs to be streamlined ASAP 🚨
Check if there are any Tutorial Updates
PRs that need to be merged before ember-cli is released. If we have missed our window then the guides/release/tutorial/part-1/orientation.md
will show the new ember-cli version and when we snapshot the release
folder (i.e. copy it to a folder with the previous release number) then the tutorial will be wrong.
💁 manual process
NOTE ember-source, ember-data, and ember-cli must already be released.
- Generate a new blog post for the release with
ember generate release-blog MAJOR.MINOR
where MAJOR.MINOR is the version number, i.e4.5
. There is a--authors
option available which defaults to the Ember Learning Team. - Open a PR with the template at https://github.com/ember-learn/ember-blog/pulls.
- Tag core teams in
core-meta
on discord to fill in details and approve for their respective teams.
💁 manual process
- Clone deprecation-app.
- To see deprecations in
ember-source
, you can visit https://deprecations.emberjs.com/v3.x/. - Check if there are deprecations listed under "Upcoming Features" that are a part of the new release (e.g.
v3.25
). If there are, proceed with this step, if there are not, you can skip to the Guides step. - Find the relevant Markdown file in
/content/ember/v3
folder. - Update the frontmatter
since: "Upcoming Features"
tosince: "v3.25"
. - Repeat steps 2-5 for deprecations in
ember-data
. (https://deprecations.emberjs.com/ember-data/v3.x) - Open a pull request.
We have a CLI tool called tool-new-release
that automates many of the below steps and is recommended. Each of those automated steps has a manual fallback process.
- install
tool-new-release
- this automates most of the things - install 1Password and make sure you have access to the
Ember CLI
vault - install
1password-cli
- sign in to
1password-cli
- sign in to 1password
Ember CLI
vault
- Guides PR
- merge guides PR
- Guides search
- API documentation
- API docs search
- merge blog PR
- merge deprecations PR
- Release pages
- Upgrade Guide
- Glitch Ember starter
- Ember Wikipedia
- Release bot
🤖 automated process
Run the following command with tool-new-release
tool-new-release guides
Note: This tool-new-release command runs the release:guides:minor
shell script from the guides-source repo and doesn't support major versions.
Note: If prompted that a guides directory already exists this likely means you have already run tool-new-release and you probably want to choose to delete the existing guides directory.
Fallback 💁 Manual process
Instructions are found in [MAINTAINERS.md](https://github.com/ember-learn/guides-source/blob/master/MAINTAINERS.md#deploying-a-new-version).
Merge the PR that you generated in the Guides step. Ensure that it is successfully deployed and manually spot-check the Guides before proceeding.
🤖 automated process
Run the following command with tool-new-release
tool-new-release guides-search
Note: This tool-new-release command runs the release:search
shell script from the guides-source repo.
Note: If prompted that a guides directory already exists this likely means you have just run the tool-new-release in the above Guides step and you probably DO NOT want to choose to delete the existing guides directory as we are building the Guides search index for the Guides directory we just generated.
Fallback 💁 manual process
Instructions are found in [MAINTAINERS.md](https://github.com/ember-learn/guides-source/blob/master/MAINTAINERS.md#updating-the-guides-search).
💁 manual process
Instructions are found in the README of ember-jsonapi-docs.
💁 manual process
Instructions are found in the README of algolia-index-update-scripts.
Ensure the Blog post PR is ready to be released (final date checks, check no bug fixes, features or deprecations are missing from each package, double check grammar/spelling, general polish, etc.), and once it is ready merge the PR. Ensure the blog post is deployed.
Ensure the deprecations PR is ready to be merged (ensure no new deprecations have been added that need to be addressed if the PR has been open for some time). Ensure the deprecations PR is deployed.
💁 manual process
- Clone ember-website
- Edit
data/project/ember/release.md
- update
lastRelease
to be the first patch version of the newember-source
release - update
date
to be the date of the first patch version of the newember-source
release
- update
- Edit
data/project/emberData/release.md
- update
lastRelease
to be the first patch version of the newember-data
release - update
date
to be the date of the first patch version of the newember-data
release
- update
- Edit
data/project/ember/beta.md
- update
lastRelease
to be the latest beta version ofember-source
- update
date
to be the date of the latest beta version ofember-source
- update
- Edit
data/project/emberData/beta.md
- update
lastRelease
to be the latest beta version ofember-data
- update
date
to be the date of the latest beta version ofember-data
- update
If there is a new LTS release then you should make the following changes too:
- Edit
data/project/ember/lts.md
- update
lastRelease
to be the latest patch version of the new LTS release - update
date
to be the date of the latest patch version of the new LTS release
- update
- Edit
app/controllers/releases/lts.js
- make sure the entries in the array are correct
- if there is a LTS version that has been removed from support then remove it and add it to the html table on
app/templates/releases/lts.hbs
Pro tip: if you're looking for the exact date that a project has released you can run npm info ember-source time
and see the list of releases and dates.
Note: https://libraries.io/npm/ may not contain all the versions so it may be best to check tags (not releases) in the GitHub project for dates.
💁 manual process
- Clone upgrade-guide and run
npm install
. (You can runember serve
and visit http://localhost:4200 to see your changes take effect.) - Run
ember generate upgrade-notes <NEW_VERSION>
(e.g.ember g upgrade-notes 3.25
) to create 3 Markdown files. - Edit the files by recording features and deprecations. You can find short descriptions for features and deprecations in the release blog post.
- Edit the
app/utils/ember-versions.js
file. Append the release version to the end of the array. - Run
npm run lint
andnpm test
. (You will likely need to update 1 test assertion. It checks how many features and deprecations can be seen since Ember 3.15 release.) - Open a pull request, then merge it.
🤖 automated process
Run the following command with tool-new-release
tool-new-release glitch
Fallback 💁 manual process
Or, use the 💁 manual process fallback:Since generating a new application using ember-cli made Glitch run out of memory, the application is cloned from ember-new-output.
- Log in to https://glitch.com/
- Go to https://glitch.com/edit/console.html?emberjs
- Update the local repository with
git fetch
- Check out the release version with
git reset --hard <VERSION>
. Replace<VERSION>
with the correct tag, e.g.v.3.25.0
- Add the following snippet for the Glitch button in
app/index.html
:
<!-- include the Glitch button to show what the webpage is about and
to make it easier for folks to view source and remix -->
<div class="glitchButton" style="position:fixed;top:20px;right:20px;"></div>
<script src="https://button.glitch.me/button.js"></script>
- Edit
package.json
to explicitly include port 4200:"start": "ember serve -p 4200"
.
💁 manual process
Note: The Wikipedia page may have already been updated automatically for the version you are releasing. If that is the case, you can skip this step.
- Go to https://en.wikipedia.org/wiki/Ember.js.
- Click the
Edit source
tab (you will likely need to login). - Update the
latest release version
,latest release date
,latest preview version
&latest preview date
in the Infobox if they need updating. - Be sure to update the accessdate for the citation url of the releases page referenced on the
latest release date
line.
💁 manual process
- Go to the core meta channel in Discord.
- Mark current release as done with
/release-done blog
. - Schedule next release with the
/release-next <version M.mm> <date MM/DD/YYYY>
command. E.g./release-next 3.26 03/22/2021
. Note, the date should likely be 6 weeks from the Monday that the current release week started with (regardless of how late we might be). https://wolframalpha.com/ can help with accurately calculating this date.