5

C# プロジェクトがあり、それにセマンティック バージョニングを追加したいと考えています。そのため、ブランチにプッシュするたびにmain、新しいリリースを作成し、コミット タイプに基づいて新しいバージョン番号を自動生成したいと考えています。私はすでにhuskyでcommitlintを使用しているので、セマンティックリリースは非常にうまく機能すると思います。

複製の場合:

  • Github に新しいリポジトリを作成する
  • リポジトリ内で新しい C# プロジェクトを作成します (この手順は省略できます)。
  • 実行npm init -yして npm をセットアップする
  • https://commitlint.js.org/#/guides-local-setupに従ってcommitlint と husky をセットアップします
  • アカウントの新しい個人用アクセス トークンを作成する
  • 新しい Github シークレットをリポジトリに追加し、名前を付けてSEMANTIC_RELEASE、アクセス トークンをその値として追加します。
  • https://semantic-release.gitbook.io/semantic-release/usage/getting-startedに基づいて、新しい Github ワークフローを作成します

.

name: Release

on:
  push:
    branches:
      - `main`

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: Setup Node
        uses: actions/setup-node@v2
        with:
          node-version: 14.x

      - name: Install dependencies
        run: npm install

      - name: Release
        env:
          GITHUB_TOKEN: ${{ secrets.SEMANTIC_RELEASE }}
        run: npx semantic-release
  • プッシュした後、ワークフローは次のエラー メッセージで失敗するはずです

[2:51:48 PM] [semantic-release] › ✔ プラグイン「@semantic-release/github」のステップ「fail」を完了 npm トークン ( https://github.com/semantic-release/npm/blob/ master/README.md#npm-registry-authentication ) を作成し、CI 環境の NPM_TOKEN 環境変数に設定する必要があります。

npm トークン ( https://docs.npmjs.com/getting-started/working_with_tokens#how-to-create-new-tokens ) を作成し、CI 環境の NPM_TOKEN 環境変数に設定してください。トークンは、レジストリhttps://registry.npmjs.org/への公開を許可する必要があり ます。

AggregateError: SemanticReleaseError: npm トークンが指定されていません。module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/node_modules/@semantic-release/npm/lib/get-error.js:6:10) で module.exports で(/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/node_modules/@semantic-release/npm/lib/set-npmrc-auth.js:45:31) module.exports (/ home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/node_modules/@semantic-release/npm/lib/verify-auth.js:17:9) の verifyConditions (/home/runner/.npm) /_npx/1561/lib/node_modules/semantic-release/node_modules/@semantic-release/npm/index.js:36:13) 非同期バリデータ (/home/runner/.npm/_npx/1561/lib/node_modules/) semantic-release/lib/plugins/normalize.js:34:24) 非同期 /home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/pipeline.js:37:34 で非同期約束。すべて (インデックス 0) /home/runner/. npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/pipeline.js:54:11 at async Object.pluginsConf. [検証条件として] (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/index.js:80:11) 非同期実行時 (/home/runner/.npm/_npx) /1561/lib/node_modules/semantic-release/index.js:95:3) 非同期 module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/index.js:260) :22) async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/cli.js:55:5) エラー: プロセスは終了コード 1 で完了しました。npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/pipeline.js:54:11 at async Object.pluginsConf. [検証条件として] (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/index.js:80:11) 非同期実行時 (/home/runner/.npm/_npx) /1561/lib/node_modules/semantic-release/index.js:95:3) 非同期 module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/index.js:260) :22) async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/cli.js:55:5) エラー: プロセスは終了コード 1 で完了しました。npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/pipeline.js:54:11 at async Object.pluginsConf. [検証条件として] (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/lib/plugins/index.js:80:11) 非同期実行時 (/home/runner/.npm/_npx) /1561/lib/node_modules/semantic-release/index.js:95:3) 非同期 module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/index.js:260) :22) async module.exports (/home/runner/.npm/_npx/1561/lib/node_modules/semantic-release/cli.js:55:5) エラー: プロセスは終了コード 1 で完了しました。

npm レジストリに公開したくありません。新しいリリース バージョンを作成するだけです。

私は何かを見逃していましたか、それともセマンティック リリースが私のプロジェクトにとって間違ったツールでしたか?

4

3 に答える 3

0

ハックを使用して目的の使用法を実現する代わりに、アトミックリリースと呼ばれるセマンティック リリースの代替手段を使用することをお勧めします。これは、リリース中の障害が以前に実行されたアクションをロールバックすることを保証するアトミック リリースを作成する SDK です。

独自のリリース戦略を作成し、gitSemanticReleaseを利用できます

免責事項: 私は、atomic-release の作成者です。

于 2021-11-06T07:30:20.267 に答える