blob: c5c2645d3bc3d3f820ca188429c84e7a5e458a5f [file] [log] [blame] [view]
---
layout: default
title: Miscellaneous
parent: Release & Milestone Tasks
grand_parent: Contributors
nav_order: 80
---
<!--
© 2021 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html
-->
# Miscellaneous
{: .no_toc }
## Contents
{: .no_toc .text-delta }
1. TOC
{:toc}
---
## Complete code reviews
Nag all the reviewers to finish reviewing the code and change the status of
bugs.
---
## Check in serialization compatibility test data
ICU4J unit test contains serialization compatibility test cases. When a new
reference version is released, we build serialized object data with the version
and use it for future testing.
1. Run "ant serialTestData" at ICU4J root directory
2. The target generates test data and runs some serialization test cases.
3. Once you confirm the test runs clean, copy
`out/serialTestData/ICU_<version>` to
`main/core/src/test/resources/com/ibm/icu/dev/test/serializable/data/ICU_<version>`.
---
## Release ticket
After every milestone (GA / RC / Milestone-N) is completed, create a new release
ticket in ICU Jira.
The release ticket is used for BRS tasks, such as version update, tagging new version,
merging post RC fixes from trunk and others.
---
## Check integrity of Jira issues in commit messages
Every commit being shipped in the next ICU release should be labeled with a Jira
ticket that is marked as fixed with the correct fix version. Further, there
should be no Jira tickets marked as fixed with the current fixVersion that do
not have commits.
### Run locally
To check this, run the following tool:
<https://github.com/unicode-org/icu/tree/main/tools/commit-checker>
Follow the instructions in the README file to generate the report locally and send it
for review.
### Run via CI
Alternatively, you can run the "BRS Commit Checker Report" workflow directly from the project page CI
by:
1. Go to the [Actions tab](https://github.com/unicode-org/icu/actions)
1. Click on the "BRS Commit Checker Report" workflow name on the left hand list of workflows
1. Click the "Run workflow" dropdown.
The dropdown should reveal an input form in which to provide inputs
1. Provide the same inputs in the form as you would for a local run of the tool,
as described in the [tool's Readme](https://github.com/unicode-org/icu/tree/main/tools/commit-checker) in the instructions above.
The only difference from the local run instructions is that git branch names in the
Actions workflow input form should be prefixed with `origin/`. Ex:
```
The ICU Jira "Fix Version" semver -> 78.1
The git ref start of comparison range. Prefix branches with `origin/`. -> release-77-1
The git ref end of comparison range. Must be descendant of `from_git_ref`. Prefix branches with `origin/`. -> origin/main
```
1. If the job fails with an error such as this:
```
jira.exceptions.JIRAError: JiraError HTTP 404 url: https://unicode-org.atlassian.net/rest/api/2/issue/ICU-XXXXX
text: Issue does not exist or you do not have permission to see it.
```
then you likely can solve this by recreating the Jira API token as described in the [tool's Readme](https://github.com/unicode-org/icu/tree/main/tools/commit-checker) in the instructions above.
Since 2024, the [Jira API tokens are not allowed to last longer than 365 days](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/),
but may expire more quickly than 365 days depending on what duration was set, etc.
The account corresponding to the email should be allowed to view sensitive tickets, or else any
existence of sensitive tickets in the git commit range will cause a failure.
---
## Fix Mis-ticketted commits
If the commit checker tool above reports any malformed commit messages, it might
mean that a bad commit made its way onto ICU main branch. To fix this, a rebase
is required. Since rebases can be disruptive, confirm with ICU-TC before
performing one. If ICU-TC agrees to perform a rebase, initiate the process as
follows:
$ git checkout main; git pull --ff-only upstream main
$ git rebase -i --preserve-merges latest
Note: although tempting, please do not use --committer-date-is--author-date. It
changes the order of commits in ways we don't want to do.
In the interactive rebase window, choose commit messages to rewrite using the
"reword" option. Save and exit the interactive screen, and then edit each commit
message.
When ready, force-push the main branch to your fork and give ICU-TC a day or two
to review. Before force-pushing to upstream, create a new branch on upstream
with the latest commit on the old main branch; name it something like
"pre63-old-main". When ready, disable branch protection on main, force-push,
and then reapply branch protection. Create a new branch named something like
"pre63-new-main" to allow users to easily switch between the two heads.
Send an email to icu-support explaining the change and how to deal with it. You
can use [this email](https://groups.google.com/a/unicode.org/g/icu-support/c/DC_pX9kPEoc) as
a model.
---
## Scrub closed issues in code
(1) Search for "TODO(12345)" to detect TODO items for closed issues.
(2) Do the same for logKnownIssue. (the data related logKnownIssues are often
addressed during CLDR data integration)
If the TODO or logKnownIssue references a closed issue, if the problem is fixed,
remove the TODO/logKnownIssue, or if the problem is not fixed, open a new issue
and update the reference in the code.