diff --git a/.changeset/few-falcons-grab.md b/.changeset/few-falcons-grab.md new file mode 100644 index 0000000..b710f10 --- /dev/null +++ b/.changeset/few-falcons-grab.md @@ -0,0 +1,5 @@ +--- +"@samsungknox/scripts": patch +--- + +Added create release tag script and workflow. From now on, the release version will be based on the root package version. diff --git a/.github/workflows/create-release.yaml b/.github/workflows/create-release.yaml new file mode 100644 index 0000000..4534eb8 --- /dev/null +++ b/.github/workflows/create-release.yaml @@ -0,0 +1,53 @@ +name: Create Release + +on: + pull_request: + branches: + - develop + types: [closed] + workflow_dispatch: + inputs: + force_deploy: + type: boolean + description: '(Force Deploy) If you need force deploy, change this option to true.' + required: true + default: false + +jobs: + create-release: + if: > + (github.event.pull_request.merged == true && github.head_ref == 'changeset-release/main') || + (inputs.force_deploy == 'true') + name: Create Release Note + runs-on: [self-hosted, linux, x64] + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v2 + with: + version: 8 + + - name: Use Node.js 18 + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: "pnpm" + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies + run: pnpm i + + - name: Create a release tag + working-directory: scripts + id: create_tag + run: pnpm script:create-release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create a release + uses: softprops/action-gh-release@v1 + with: + tag_name: ${{ steps.create_tag.outputs.tag_name }} + body_path: docs/releases/${{ steps.create_tag.outputs.tag_name }}-changelog.md + token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/scripts/package.json b/scripts/package.json index 3041569..80aeeba 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -5,7 +5,7 @@ "build:production": "NODE_ENV=production tsup-node", "build:watch": "tsup-node --watch", "postinstall": "pnpm build:production", - "script:create-release": "node ./dist/changeset/scripts/create-release.js" + "script:create-release": "node ./dist/scripts/create-release.js" }, "devDependencies": { "@actions/core": "1.3.0", diff --git a/scripts/src/changeset/scripts/create-release.ts b/scripts/src/changeset/scripts/create-release.ts index ee1dacb..bb636a6 100644 --- a/scripts/src/changeset/scripts/create-release.ts +++ b/scripts/src/changeset/scripts/create-release.ts @@ -48,8 +48,8 @@ async function main(): Promise { const commitSha: string = process.env.GITHUB_SHA; const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN }); - const releaseVersion = await getRootPackageJsonMetadata(); - const tagName = `v${releaseVersion}`; + const { version } = await getRootPackageJsonMetadata(); + const tagName = `v${version}`; log.debug(`tag_name=${tagName}${EOL}`); log.action(`Creating release tag ${tagName} at ${commitSha}`); @@ -59,7 +59,7 @@ async function main(): Promise { log.info(`Successfully! release tag ${tagName} at ${commitSha}`); await fs.appendFile(process.env.GITHUB_OUTPUT, `tag_name=${tagName}${EOL}`); - await fs.appendFile(process.env.GITHUB_OUTPUT, `version=${releaseVersion}${EOL}`); + await fs.appendFile(process.env.GITHUB_OUTPUT, `version=${version}${EOL}`); } main().catch((error) => {