diff --git a/.github/workflows/stable-release.yml b/.github/workflows/stable-release.yml new file mode 100644 index 000000000..c4f6d9a50 --- /dev/null +++ b/.github/workflows/stable-release.yml @@ -0,0 +1,84 @@ +name: stable-release +on: + workflow_dispatch: + inputs: + version: + description: "版本号(如 v1.42.5)" + required: true + type: string + +permissions: + contents: read + packages: write + +jobs: + make-stable: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to aliyun container Registry + uses: docker/login-action@v3 + with: + registry: registry.cn-shenzhen.aliyuncs.com + username: ${{ secrets.aliyun_cs_username }} + password: ${{ secrets.aliyun_cs_password }} + + - name: Login to GitHub Packages + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.dockerhub_username }} + password: ${{ secrets.dockerhub_password }} + + # stable 镜像:叠加 ENV 层 + - name: Build and push stable images + run: | + echo "FROM greper/certd:${{ inputs.version }} + ENV certd_release_mode=stable" > Dockerfile.stable + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --push \ + -f Dockerfile.stable \ + -t registry.cn-shenzhen.aliyuncs.com/handsfree/certd:stable \ + -t registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{ inputs.version }}-stable \ + -t greper/certd:stable \ + -t greper/certd:${{ inputs.version }}-stable \ + -t ghcr.io/${{ github.repository }}:stable \ + -t ghcr.io/${{ github.repository }}:${{ inputs.version }}-stable \ + . + + # slim-stable 镜像 + - name: Build and push slim-stable images + run: | + echo "FROM greper/certd:${{ inputs.version }}-slim + ENV certd_release_mode=stable" > Dockerfile.slim-stable + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --push \ + -f Dockerfile.slim-stable \ + -t registry.cn-shenzhen.aliyuncs.com/handsfree/certd:slim-stable \ + -t registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{ inputs.version }}-slim-stable \ + -t greper/certd:slim-stable \ + -t greper/certd:${{ inputs.version }}-slim-stable \ + -t ghcr.io/${{ github.repository }}:slim-stable \ + -t ghcr.io/${{ github.repository }}:${{ inputs.version }}-slim-stable \ + . + + - name: Set AtomGit release as stable + run: | + export ATOMGIT_TOKEN=${{ secrets.ATOMGIT_TOKEN }} + export VERSION=${{ inputs.version }} + npm run set-release-stable \ No newline at end of file diff --git a/C b/C deleted file mode 100644 index 5f282702b..000000000 --- a/C +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/package.json b/package.json index 28f818c71..3ea00d58d 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "devb": "lerna run dev-build", "i-all": "lerna link && lerna exec npm install ", "publish": "pnpm run prepublishOnly2 && lerna publish --force-publish=pro/plus-core --conventional-commits && pnpm run afterpublishOnly ", - "publish2":" npm run pub_all && pnpm run afterpublishOnly", + "publish2": " npm run pub_all && pnpm run afterpublishOnly", "afterpublishOnly": "pnpm run copylogs && time /t >trigger/build.trigger && git add ./trigger/build.trigger && git commit -m \"build: trigger build image\" && TIMEOUT /T 10 && pnpm run commitAll", "transform-sql": "cd ./packages/ui/certd-server/db/ && node --experimental-json-modules transform.js", "plugin-doc-gen": "cd ./packages/ui/certd-server/ && pnpm run export-metadata", @@ -45,7 +45,9 @@ "publish_to_atomgit": "node --experimental-json-modules ./scripts/publish-atomgit.js", "publish_to_gitee": "node --experimental-json-modules ./scripts/publish-gitee.js", "publish_to_github": "node --experimental-json-modules ./scripts/publish-github.js", - "get_version": "node --experimental-json-modules ./scripts/version.js" + "get_version": "node --experimental-json-modules ./scripts/version.js", + "stable": "node ./scripts/stable.js", + "set-release-stable": "node ./scripts/set-release-stable.js" }, "license": "AGPL-3.0", "dependencies": { diff --git a/packages/ui/Dockerfile b/packages/ui/Dockerfile index 1b72ff5e0..097151f88 100644 --- a/packages/ui/Dockerfile +++ b/packages/ui/Dockerfile @@ -1,4 +1,4 @@ -ARG base_type=alpine +ARG base_type=alpine # 根据 base_type 参数选择基础镜像系列 FROM --platform=linux/amd64 node:22-alpine AS base-amd64-alpine @@ -99,6 +99,7 @@ RUN ARCH=$(uname -m) && \ ENV TZ=Asia/Shanghai ENV NODE_ENV=production +ENV certd_release_mode=latest ENV MIDWAY_SERVER_ENV=production RUN npm install -g pnpm@10.33.4 diff --git a/packages/ui/certd-client/src/locales/langs/en-US/certd/dashboard.ts b/packages/ui/certd-client/src/locales/langs/en-US/certd/dashboard.ts index 159ded6dc..47c9253f5 100644 --- a/packages/ui/certd-client/src/locales/langs/en-US/certd/dashboard.ts +++ b/packages/ui/certd-client/src/locales/langs/en-US/certd/dashboard.ts @@ -25,5 +25,7 @@ export default { expiringCerts: "Soon-to-Expire Certificates", supportedTasks: "Overview of Supported Deployment Tasks", changeLog: "Change Log", + stableRelease: "Stable", + latestRelease: "Preview", }, }; diff --git a/packages/ui/certd-client/src/locales/langs/zh-CN/certd/dashboard.ts b/packages/ui/certd-client/src/locales/langs/zh-CN/certd/dashboard.ts index 3217e83a8..a04f8c4bb 100644 --- a/packages/ui/certd-client/src/locales/langs/zh-CN/certd/dashboard.ts +++ b/packages/ui/certd-client/src/locales/langs/zh-CN/certd/dashboard.ts @@ -26,5 +26,7 @@ export default { expiringCerts: "最快到期证书", supportedTasks: "已支持的部署任务总览", changeLog: "更新日志", + stableRelease: "稳定版", + latestRelease: "预览版", }, }; diff --git a/packages/ui/certd-client/src/store/settings/api.basic.ts b/packages/ui/certd-client/src/store/settings/api.basic.ts index ffc5d2057..7b3d4b30e 100644 --- a/packages/ui/certd-client/src/store/settings/api.basic.ts +++ b/packages/ui/certd-client/src/store/settings/api.basic.ts @@ -11,6 +11,7 @@ export type AppInfo = { version?: string; time?: number; deltaTime?: number; + releaseMode?: string; }; export type SiteInfo = { title?: string; diff --git a/packages/ui/certd-client/src/store/settings/index.tsx b/packages/ui/certd-client/src/store/settings/index.tsx index 7f97acc64..36beab4a9 100644 --- a/packages/ui/certd-client/src/store/settings/index.tsx +++ b/packages/ui/certd-client/src/store/settings/index.tsx @@ -35,6 +35,7 @@ export interface SettingState { version?: string; time?: number; deltaTime?: number; + releaseMode?: string; }; productInfo: { notice?: string; @@ -109,6 +110,7 @@ export const useSettingStore = defineStore({ version: "", time: 0, deltaTime: 0, + releaseMode: "latest", }, productInfo: { notice: "", @@ -229,6 +231,9 @@ export const useSettingStore = defineStore({ this.app.time = appInfo.time; this.app.version = appInfo.version; this.app.deltaTime = new Date().getTime() - this.app.time; + if (appInfo.releaseMode) { + this.app.releaseMode = appInfo.releaseMode; + } }, initSiteInfo(siteInfo: SiteInfo) { //@ts-ignore diff --git a/packages/ui/certd-client/src/views/framework/home/dashboard/index.vue b/packages/ui/certd-client/src/views/framework/home/dashboard/index.vue index c815434ff..9b1de4ec0 100644 --- a/packages/ui/certd-client/src/views/framework/home/dashboard/index.vue +++ b/packages/ui/certd-client/src/views/framework/home/dashboard/index.vue @@ -1,4 +1,4 @@ -