1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hyperledger-cactus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
RELEASE_MANAGEMENT.md 9.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 10.03.2025 23:00 649ad0f

Управление выпусками Hyperledger Cacti

Данный документ описывает шаги, которые должны быть выполнены администраторами при выпуске новых версий.

Мы стремимся автоматизировать как можно больше процесса, но всегда будут существовать некоторые задачи, которые должны выполняться человеком с правильными полномочиями (например, администратором), и данный документ должен быть актуализирован в случае изменения этих шагов.

Общие лучшие практики

  1. Выпуски следует осуществлять только из ветки main.
  2. Предпочтительно использовать семантическую версию: https://semver.org/
  3. Для коммитов, выбранных для выпуска, следует применять git-тэги.
  4. Названия тэгов должны следовать шаблону vX.Y.Z, например v2.0.0.

Проверочный список / Шаги для выпуска новой версии

Ниже приведён пример использования v1.1.3. При выпуске новой версии вам потребуется заменить этот номер на номер следующего выпуска. Первым шагом является обновление документа (не требуется отправка pull request с этими изменениями), чтобы скрипты помощника были также обновлены.

Выполните поиск и замену всех упоминаний версии: 1.1.3

git fetch --all
git switch main
git rebase upstream/main
git push --force-with-lease
git checkout -b release-v1.1.3
yarn run configure
yarn lerna version 1.1.3 --ignore-scripts --conventional-commits --exact --git-remote upstream --message="chore(release): publish %s" --no-push --no-git-tag-version --no-ignore-changes
yarn tools:bump-openapi-spec-dep-versions --target-version=1.1.3
yarn codegen
yarn build:dev
./tools/weaver-update-version.sh 1.1.3 .
./tools/go-gen-checksum.sh 1.1.3 .
```- Обратите внимание на `.` как последнего параметра в двух последних командах.

- Автоматический скрипт управления версиями `./tools/weaver-update-version.sh` в настоящее время имеет небольшую ошибку, поэтому вам придётся самостоятельно обновить `./weaver/core/relay/Cargo.toml`. Пример этого действия можно найти здесь: https://github.com/hyperledger-cacti/cacti/pull/3427#discussion_r1686850372

- Внимательно проверьте, что все зависимости пакетов были обновлены от предыдущей версии до новой, так как lerna обычно не может сделать это для частей `devDependencies` файла `package.json`, поэтому вам придётся выполнять эту операцию вручную через поиск и замену по всему репозиторию... Суть заключается в поиске версии предыдущего выпуска внутри файлов package.json либо просто поиск "@hyperledger/cacti-*" внутри файлов package.json. 

С помощью VSCode можно выполнить проектный поиск и замену, где:
  1. Убедитесь, что замена на основе регулярных выражений включена в панели поиска VSCode (в правом верхнем углу панели поиска)
  2. Установите файлы для включения как "package.json" (чтобы только файлы с названием package.json были включены в поиске)
  3. Установите строку поиска следующим образом, чтобы найти старые версии (без обратных апострофов, если вы читаете это в обычном тексте) `@hyperledger/cactus-(.*): "1.1.2"`
  4. Установите строку замены следующим образом (чтобы она меняла номера версий на новый) `@hyperledger/cactus-$1: "1.1.3"`- Также удвойте проверку того, что свойство `"version": "?.?.?"` было обновлено во всех файлах `package.json`.

- Наконец, проведите общую полнотекстовую проверку по всему проекту для строки предыдущей версии `?.?.?`, где исключите эти результаты: `rust/fixtures/ink, go/generated/, kotlin/generated/, typescript/generated, openapi.json, .github/workflows/actionlint.yaml, .github/workflows/.dast-nuclei-cmd-api-server.yaml, CHANGELOG.md, go.sum, go.mod, yarn.lock, package-lock.json, .yarn/, weaver/core/relay/Cargo.toml` и затем замените найденные значения новой версией, такой как `1.1.3`.

- Обновите файл запирающего лока при необходимости
    ```sh
    $ yarn
    ```

- Удвойте проверку того, что скрипт конфигурации всё ещё работает (CI будет завален без него в любом случае)
    ```sh
    $ yarn configure
    ```

- Удвойте проверку того, что CHANGELOG не содержит ссылки вашего форка вместо ссылок основного репозитория. Вам потребуется изменить это вручную, иначе. Например, замените:
    - `https://github.com/petermetz/cact`
    на
    - `https://github.com/hyperledger/cact`

```sh
git add . && git commit --signoff --gpg-sign --message="chore(release): publish v1.1.3"
git push --set-upstream upstream release-v1.1.3

Затем создайте запрос на слияние здесь — после того, как он будет объединён, переопределите на upstream/main и:ВАЖНО: Не включайте автоматическое слияние в GitHub для запроса на слияние, выполняющего выпуск.Проблема с автоматическим слиянием заключается в том, что это изменит хэш коммита выпуска (SHA), так как

перезапись будет происходить на серверах GitHub, где ваша личная подпись Git недоступна, поскольку GitHub (не должен) иметь доступ к вашему приватному ключу для подписывания.Чтобы сохранить действительность вашего подписывающегося коммита, хэш коммита должен остаться тем же самым, а способ достижения этого — выполнить слияние запроса на слияние с использованием быстрого слияния. Слияние гарантировано тем, что нет изменения хэша коммита, а опция --ff-only гарантирует, что нет коммита слияния, который мог бы помешать процессу.

  1. Выполнить заморозку слияния
  2. Разморозить конкретный запрос на вливание (pull request), который вы только что открыли для выпуска
  3. Подождать одобрения PR согласно стандартным правилам управления
  4. Выполнить эти команды (предполагается, что ваш форк имеет удалённый репозиторий origin, а официальный репозиторий Hyperledger — upstream):
git fetch --all
git switch main
git rebase upstream/main
git merge --ff-only upstream/release-v1.1.3
git push upstream
git push origin
git tag -s -a "v1.1.3" -m "v1.1.3"
git push upstream --follow-tags
  1. Отменить заморозку слияния запросов на вливание
  2. Создать выпуск на GitHub

Перейти и создать выпуск на GitHub вручную из файла CHANGELOG.md в корне проекта.

Закрыть текущую милюшку после перемещения всех задач в следующую, если они до сих пор не были решены

yarn run configure && yarn run build && yarn lerna publish from-git --loglevel=debug --summary-file

Для игнорирования провалившихся скриптов жизненного цикла

yarn lerna publish from-git --loglevel=debug --force-publish --ignore-scripts --ignore-prepublish --summary-file

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/hyperledger-cactus.git
git@api.gitlife.ru:oschina-mirror/hyperledger-cactus.git
oschina-mirror
hyperledger-cactus
hyperledger-cactus
main