diff --git a/.github/workflows/release-image.yml b/.github/workflows/release-image.yml index bba1be8ca..44d54c6e6 100644 --- a/.github/workflows/release-image.yml +++ b/.github/workflows/release-image.yml @@ -139,4 +139,12 @@ jobs: export ATOMGIT_TOKEN=${{ secrets.ATOMGIT_TOKEN }} pnpm install npm run publish_to_atomgit + working-directory: ./ + + - name: publish_to_gitee + id: publish_to_gitee + run: | + export GITEE_TOKEN=${{ secrets.GITEE_TOKEN }} + pnpm install + npm run publish_to_gitee working-directory: ./ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 7012403dc..a958e1de3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,5 +10,8 @@ "editor.defaultFormatter": "vscode.typescript-language-features" }, "editor.tabSize": 2, - "explorer.autoReveal": false + "explorer.autoReveal": false, + "[javascript]": { + "editor.defaultFormatter": "vscode.typescript-language-features" + } } \ No newline at end of file diff --git a/package.json b/package.json index b23cee250..e03b6bdd0 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "dev": "pnpm run -r --parallel compile ", "release": "time /t >trigger/release.trigger && git add trigger/release.trigger && git commit -m \"build: release\" && git push", "publish_to_atomgit": "node --experimental-json-modules ./scripts/publish-atomgit.js", + "publish_to_gitee": "node --experimental-json-modules ./scripts/publish-gitee.js", "get_version": "node --experimental-json-modules ./scripts/version.js" }, "license": "AGPL-3.0", diff --git a/scripts/get-new-version.js b/scripts/get-new-version.js new file mode 100644 index 000000000..aa294d499 --- /dev/null +++ b/scripts/get-new-version.js @@ -0,0 +1,30 @@ +import fs from 'fs' + + + +export function getVersionContent() { + // CHANGELOG.md + const changelog = fs.readFileSync('./CHANGELOG.md', 'utf8') + // 解析CHANGELOG.md + let lines = changelog.split('\n') + const versionLineIndex = lines.findIndex(line => line.startsWith('## ')) + const versionLine = lines[versionLineIndex] + // ## [1.37.16](https://github.com/certd/certd/compare/v1.37.15...v1.37.16) (2025-12-15) + const versionTitle = versionLine.match(/\[(.*?)\]/)[1] + + const contentStart = versionLineIndex + 1 + lines = lines.slice(contentStart) + const contentEnd = lines.findIndex(line => { + return line.startsWith('## ') + }) + const content = lines.slice(0, contentEnd).join('\n') + console.log("-------title------/n") + console.log(versionTitle) + console.log("-------content------/n") + console.log(content) + + return { + versionTitle, + content + } +} \ No newline at end of file diff --git a/scripts/publish-atomgit.js b/scripts/publish-atomgit.js index 0be8a4a8b..302a3f714 100644 --- a/scripts/publish-atomgit.js +++ b/scripts/publish-atomgit.js @@ -1,27 +1,11 @@ import fs from 'fs' import axios from 'axios' +import { getVersionContent } from './get-new-version.js' + const AtomgitAccessToken = process.env.ATOMGIT_TOKEN -// CHANGELOG.md -const changelog = fs.readFileSync('./CHANGELOG.md', 'utf8') -// 解析CHANGELOG.md -let lines = changelog.split('\n') -const versionLineIndex = lines.findIndex(line => line.startsWith('## ')) -const versionLine = lines[versionLineIndex] -// ## [1.37.16](https://github.com/certd/certd/compare/v1.37.15...v1.37.16) (2025-12-15) -const versionTitle = versionLine.match(/\[(.*?)\]/)[1] -const contentStart = versionLineIndex + 1 -lines = lines.slice(contentStart) -const contentEnd = lines.findIndex(line => { - return line.startsWith('## ') -}) -const content = lines.slice(0, contentEnd).join('\n') -console.log("-------title------/n") -console.log(versionTitle) -console.log("-------content------/n") -console.log(content) /** * 创建仓库Release @@ -68,7 +52,7 @@ string */ // 创建release -async function createRelease() { +async function createRelease(versionTitle, content) { const response = await axios.request({ method: 'POST', url: `https://api.atomgit.com/api/v5/repos/certd/certd/releases`, @@ -138,7 +122,7 @@ headers object */ -async function getUploadUrl() { +async function getUploadUrl(versionTitle) { const response = await axios.request({ method: 'GET', url: `https://api.atomgit.com/api/v5/repos/certd/certd/releases/v${versionTitle}/upload_url`, @@ -167,8 +151,9 @@ async function uploadFile(url, headers, data) { } async function publishToAtomgit() { - const release = await createRelease() - const uploadUrl = await getUploadUrl() + const { versionTitle, content } = getVersionContent() + const release = await createRelease(versionTitle, content) + const uploadUrl = await getUploadUrl(versionTitle) const fileName = `./packages/ui/certd-client/ui.zip` const fileData = fs.createReadStream(fileName) const contentLength = fs.statSync(fileName).size diff --git a/scripts/publish-gitee.js b/scripts/publish-gitee.js new file mode 100644 index 000000000..6ee8dcccf --- /dev/null +++ b/scripts/publish-gitee.js @@ -0,0 +1,36 @@ +import axios from 'axios' +import { getVersionContent } from './get-new-version.js' + + +const GiteeAccessToken = process.env.GITEE_TOKEN +if (!GiteeAccessToken) { + console.log("GiteeAccessToken is empty") + throw new Error("GiteeAccessToken is empty") +} +// 创建release +async function createRelease(versionTitle, content) { + const response = await axios.request({ + method: 'POST', + url: `https://gitee.com/api/v5/repos/certd/certd/releases`, + headers: { + "Content-Type": "application/json" + }, + data: { + access_token: GiteeAccessToken, + tag_name: `v${versionTitle}`, + name: `v${versionTitle}`, + body: content, + target_commitish: 'v2' + }, + }) + console.log("createRelease success") + return response.data +} + +async function publishToGitee() { + const { versionTitle, content } = getVersionContent() + const release = await createRelease(versionTitle, content) + console.log("publishToGitee success") +} + +publishToGitee()