Pre release¶
A new minor version of the Agent is released every 6 weeks (approximately). Each release ships a snapshot of integrations-core.
Setup¶
Ensure that you have configured the following:
- GitHub credentials
- Trello credentials
- Trello team mappings
Before Freeze¶
- Update style dependencies to latest versions (except if comments say otherwise) via PR. Example:
ISORT_DEP
,BLACK_DEP
, etc. - Check that the master, py2 and base_check builds are green.
Freeze¶
At midnight (EDT/EST) on the Friday before QA week we freeze, at which point the release manager will release all integrations with pending changes then branch off.
Release¶
- Make a pull request to release any new integrations, then merge it and pull
master
- Make a pull request to release all changed integrations, then merge it and pull
master
- Get 2+ thorough reviews on the changelogs. Entries should have appropriate SemVer levels (e.g.
Changed
entries must refer to breaking changes only). See also PR guidelines. - Consider x-posting the PR to Agent teams that have integrations in
integrations-core
, so they can check relevant changelogs too.
- Get 2+ thorough reviews on the changelogs. Entries should have appropriate SemVer levels (e.g.
Important
Update PyPI if you released datadog_checks_base
or datadog_checks_dev
.
Branch¶
- Create a branch based on
master
named after the highest version of the Agent being released in the form<MAJOR>.<MINOR>.x
- Push the branch to GitHub
Tag¶
Run:
git tag <MAJOR>.<MINOR>.0-rc.1 -m <MAJOR>.<MINOR>.0-rc.1
git push origin <MAJOR>.<MINOR>.0-rc.1
QA week¶
We test all changes to integrations that were introduced since the last release.
Create items¶
Create an item for every change in our board using the Trello subcommand called testable.
For example:
ddev release trello testable 7.17.1 7.18.0-rc.1
ddev release trello testable 7.17.1 origin/master
would select all commits that were merged between the Git references.
The command will display each change and prompt you to assign a team or skip. Purely documentation changes are automatically skipped.
Cards are automatically assigned if $trello_users_$team
table is configured.
Release candidates¶
The main Agent release manager will increment and build a new rc
every day a bug fix needs to be tested until all QA is complete.
Before each build is triggered:
- Merge any fixes that have been approved, then pull
master
- Release all changed integrations with the exception of
datadog_checks_dev
For each fix merged, you must cherry-pick to the branch:
- The commit to
master
itself - The release commit, so the shipped versions match the individually released integrations
After all fixes have been cherry-picked:
- Push the changes to GitHub
- Tag with the appropriate
rc
number even if there were no changes
Communication¶
The Agent Release Manager will post a daily status for the entire release cycle. Reply in the thread with any pending PRs meant for the next RC and update the spreadsheet PRs included in Agent RCs
.
Logs¶
Each release candidate is deployed in a staging environment. We observe the WARN
or ERROR
level logs filtered with the facets Service:datadog-agent
and index:main
and LogMessage
to see if any unexpected or frequent errors start occurring that was not caught during QA.
Release week¶
After QA week ends the code freeze is lifted, even if there are items yet to be tested. The release manager will continue the same process outlined above.
Notify the Agent Release Manager when code freeze ends.