diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 6e267f7f2..95c4b4658 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -106,11 +106,25 @@ jobs: console.log(`releaseNotes (modified): ${JSON.stringify(modifiedBody, null, 2)}`); core.setOutput("release_body", modifiedBody); + - name: Prepare Release Title + id: title + env: + # "vX.Y.Z Release Title" + RAW_TITLE: ${{ steps.calculate-version.outputs.new_version }} ${{ github.event.inputs.release_title }} + run: | + # Print RAW_TITLE safely, then escape double quotes + SANITIZED_TITLE="$(printf '%s' "$RAW_TITLE" | sed 's/"/\\"/g')" + echo "sanitized_title=$SANITIZED_TITLE" >> "$GITHUB_OUTPUT" + + - name: Write Release Notes to File + run: | + echo "${{ steps.generate-release-notes.outputs.release_body }}" > release-notes.txt + - name: Create Draft Release run: | gh release create "${{ steps.calculate-version.outputs.new_version }}" \ - --title "${{ steps.calculate-version.outputs.new_version }} ${{ github.event.inputs.release_title }}" \ - --notes "${{ steps.generate-release-notes.outputs.release_body }}" \ + --title "${{ steps.title.outputs.sanitized_title }}" \ + --notes-file release-notes.txt \ --draft \ --repo "${{ github.repository }}" env: diff --git a/package-lock.json b/package-lock.json index 4872f7d08..c24490f8b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1661,9 +1661,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.10.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.6.tgz", - "integrity": "sha512-qNiuwC4ZDAUNcY47xgaSuS92cjf8JbSUoaKS77bmLG1rU7MlATVSiw/IlrjtIyyskXBZ8KkNfjK/P5na7rgXbQ==", + "version": "22.10.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.10.tgz", + "integrity": "sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==", "license": "MIT", "dependencies": { "undici-types": "~6.20.0" diff --git a/package.json b/package.json index e3ee0408a..75bc9affb 100644 --- a/package.json +++ b/package.json @@ -58,7 +58,7 @@ "sdk" ], "dependencies": { - "@types/node": "^22.0.0" + "@types/node": "^22.10.10" }, "optionalDependencies": { "axios": "^1.7.4" diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 25cdba114..000000000 --- a/renovate.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:base" - ], - "automerge": true, - "platformAutomerge": true, - "git-submodules": { - "enabled": true - }, - "labels": [ "dependency upgrade" ], - "packageRules": [ - { - "matchPackagePatterns": ["^line-openapi$"], - "labels": ["dependency upgrade", "line-openapi-update"] - }, - { - "matchPaths": [ - "examples/*" - ], - "postUpgradeTasks": { - "commands": [ - "npm install" - ], - "fileFilters": [ - "package.json", - "package-lock.json" - ] - } - } - ] -} diff --git a/renovate.json5 b/renovate.json5 new file mode 100644 index 000000000..77d9f9ff6 --- /dev/null +++ b/renovate.json5 @@ -0,0 +1,77 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended" + ], + "timezone": "Asia/Tokyo", + "automerge": true, + "platformAutomerge": true, + "git-submodules": { + "enabled": true + }, + "prHourlyLimit": 100, + "labels": [ + "dependency upgrade" + ], + // npm マネージャ固有の設定 + "npm": { + // デフォルトはだいたい "(^|/)package\\.json$" + // ここにサブディレクトリを含むパターンを追加 + "fileMatch": [ + "(^|/)package\\.json$", // 既定のパターン + "(^|/)examples/.+/package\\.json$" // 追加で読みたいパターン + ] + }, + "ignorePaths": [ + "**/node_modules/**", + "**/bower_components/**" + ], + "packageRules": [ + { + "matchPackagePatterns": [ + "line-openapi" + ], + "labels": [ + "dependency upgrade", + "line-openapi-update" + ], + // In many cases, we would like to update line-openapi by dispatching the GitHub workflow during working + // hours, as there are code changes. + // If that is forgotten, there's a possibility that line-openapi updates or code changes won't happen at + // all, so we allow it to run at night just in case. + "schedule": [ + "after 11pm", + "before 4am" + ] + }, + { + // トップレベルのpackage.json / package-lock.jsonが更新されたら発動 + "description": "When top-level is updated, also run npm install in all examples/*", + "matchPaths": [ + "package.json", + "package-lock.json" + ], + "postUpgradeTasks": { + "commands": [ + // 1. トップレベルでlockファイル再生成 + "npm install --package-lock-only", + + // 2. サブディレクトリごとに明示的に --prefix 付きでインストール + "npm install --prefix examples/echo-bot --package-lock-only", + "npm install --prefix examples/echo-bot-esm --package-lock-only", + "npm install --prefix examples/echo-bot-ts-cjs --package-lock-only", + "npm install --prefix examples/echo-bot-ts-esm --package-lock-only", + "npm install --prefix examples/kitchensink --package-lock-only", + "npm install --prefix examples/rich-menu --package-lock-only" + ], + "fileFilters": [ + // トップレベルの更新 + "package.json", + "package-lock.json", + // サブディレクトリの lock ファイルもコミット + "examples/**/package-lock.json" + ] + } + } + ] +}