From 2466f5a927de3cf5b7151c62c9293d0473bfcd91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=A5=E6=B5=A9?= Date: Fri, 11 Oct 2024 15:55:27 +0800 Subject: [PATCH] Initial commit --- .github/workflows/ci.yaml | 38 ++++++++++++++++++++++++++++++++++++++ .gitignore | 2 ++ .npmrc | 1 + .releaserc.yaml | 16 ++++++++++++++++ files/pr1 | 0 files/pr2 | 0 package.json | 16 ++++++++++++++++ scripts/01.sh | 19 +++++++++++++++++++ scripts/02.sh | 23 +++++++++++++++++++++++ 9 files changed, 115 insertions(+) create mode 100644 .github/workflows/ci.yaml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .releaserc.yaml create mode 100644 files/pr1 create mode 100644 files/pr2 create mode 100644 package.json create mode 100755 scripts/01.sh create mode 100755 scripts/02.sh diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..4dbcce9 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,38 @@ +name: 持续集成 +on: + push: + branches: + - main +env: + TZ: Asia/Shanghai + +jobs: + release: + outputs: + next_release_published: ${{ steps.semantic.outputs.next_release_published }} + next_release_version: ${{ steps.semantic.outputs.next_release_version }} + runs-on: ubuntu-latest + permissions: # Job-level permissions configuration starts here + contents: write # 'write' access to repository contents + id-token: write + steps: + - name: Checkout + uses: actions/checkout@v4 + + - uses: yanhao98/semantic-release-action@main + id: semantic + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + after-release: + runs-on: ubuntu-latest + needs: release + steps: + - name: Print + run: | + echo "next_release_published: ${{ needs.release.outputs.next_release_published }}" + echo "next_release_version: ${{ needs.release.outputs.next_release_version }}" + - uses: actions/checkout@v4 + with: + ref: main + - run: cat CHANGELOG.md \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..91dfed8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +node_modules \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..c483022 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +shamefully-hoist=true \ No newline at end of file diff --git a/.releaserc.yaml b/.releaserc.yaml new file mode 100644 index 0000000..b552a0b --- /dev/null +++ b/.releaserc.yaml @@ -0,0 +1,16 @@ +--- +plugins: + - "@semantic-release/commit-analyzer" + - "@semantic-release/release-notes-generator" + - "@semantic-release/changelog" + - - "@semantic-release/npm" # https://github.com/semantic-release/npm?tab=readme-ov-file#environment-variables + # [provenance](https://docs.npmjs.com/generating-provenance-statements#using-third-party-package-publishing-tools) + - npmPublish: true + - - "@semantic-release/git" + - message: |- + chore(release): ${nextRelease.version} [skip ci] + + ${nextRelease.notes} + - - "@semantic-release/exec" + - prepareCmd: echo 'prepareCmd' + publishCmd: echo 'publishCmd' diff --git a/files/pr1 b/files/pr1 new file mode 100644 index 0000000..e69de29 diff --git a/files/pr2 b/files/pr2 new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json new file mode 100644 index 0000000..75d30ba --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "semantic-release-example-24", + "description": "An example project to demonstrate semantic-release", + "version": "1.10.0", + "files": [ + "CHANGELOG.md" + ], + "scripts": {}, + "license": "MIT", + "repository": { + "url": "git+https://github.com/yanhao98/semantic-release-action-example.git" + }, + "publishConfig": { + "provenance": true + } +} diff --git a/scripts/01.sh b/scripts/01.sh new file mode 100755 index 0000000..69f32f9 --- /dev/null +++ b/scripts/01.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +git switch main +commit_types=( + "feat: 一项新功能" + "fix: 错误修复" + "docs: 仅更改文档" + "style: 不影响代码含义的更改(空格、格式、缺少分号等)" + "refactor: 既不修复错误也不添加功能的代码更改" + "perf: 提高性能的代码更改" + "test: 添加缺失的或纠正现有的测试" + "chore: 对构建过程或辅助工具和库(例如文档生成)的更改" +) +i=1 +for commit_type in "${commit_types[@]}"; do + git commit --allow-empty -m "$commit_type $i. $(date) on $(git rev-parse --abbrev-ref HEAD)" + ((i++)) +done +git push origin main:main diff --git a/scripts/02.sh b/scripts/02.sh new file mode 100755 index 0000000..5dbd924 --- /dev/null +++ b/scripts/02.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -e + +rm -f CHANGELOG.md +git fetch +latest_tag=$(git describe --tags "$(git rev-list --tags --max-count=1)") +git tag -l | xargs -I {} git push origin :refs/tags/{} +git tag -l | xargs git tag -d +git switch main +git checkout --orphan temp_branch +git add . +git commit -m "Initial commit" +git branch -D main +git branch -m main +git branch --set-upstream-to=origin/main main +for branch in $(git branch | grep -v "main"); do + git push origin --delete "$branch" + git branch -D "$branch" +done +git push -f origin main +git tag "$latest_tag" +git push origin "$latest_tag" \ No newline at end of file