From 7d1910df71e8fd32029094d4156ab992b24feb3c Mon Sep 17 00:00:00 2001 From: dijunkun Date: Thu, 13 Nov 2025 14:13:54 +0800 Subject: [PATCH] [ci] append build date to artifact names and write download URLs to version.json --- .github/workflows/build.yml | 78 ++++++++++++++++++++++-------- .github/workflows/update-pages.yml | 51 ------------------- 2 files changed, 59 insertions(+), 70 deletions(-) delete mode 100644 .github/workflows/update-pages.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ea2f7ce..5c9c12d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,12 +35,14 @@ jobs: id: set_deb_version run: | SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7) + BUILD_DATE=$(date +%Y%m%d) if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then - LEGAL_VERSION="0.0.0-${VERSION_NUM}-${SHORT_SHA}" + LEGAL_VERSION="v0.0.0-${VERSION_NUM}-${BUILD_DATE}-${SHORT_SHA}" else - LEGAL_VERSION="${VERSION_NUM}-${SHORT_SHA}" + LEGAL_VERSION="v${VERSION_NUM}-${BUILD_DATE}-${SHORT_SHA}" fi echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV + echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v4 @@ -99,12 +101,14 @@ jobs: id: set_deb_version run: | SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7) + BUILD_DATE=$(date +%Y%m%d) if [[ ! "${VERSION_NUM}" =~ ^[0-9] ]]; then - LEGAL_VERSION="0.0.0-${VERSION_NUM}-${SHORT_SHA}" + LEGAL_VERSION="v0.0.0-${VERSION_NUM}-${BUILD_DATE}-${SHORT_SHA}" else - LEGAL_VERSION="${VERSION_NUM}-${SHORT_SHA}" + LEGAL_VERSION="v${VERSION_NUM}-${BUILD_DATE}-${SHORT_SHA}" fi echo "LEGAL_VERSION=${LEGAL_VERSION}" >> $GITHUB_ENV + echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v4 @@ -160,9 +164,11 @@ jobs: run: | VERSION="${GITHUB_REF##*/}" SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7) - VERSION_NUM="${VERSION#v}-${SHORT_SHA}" + BUILD_DATE=$(date +%Y%m%d) + VERSION_NUM="v${VERSION#v}-${BUILD_DATE}-${SHORT_SHA}" echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV echo "VERSION_NUM=${VERSION_NUM}" + echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_ENV - name: Cache xmake dependencies uses: actions/cache@v4 @@ -223,7 +229,9 @@ jobs: $version = $version -replace '^v', '' $version = $version -replace '/', '-' $SHORT_SHA = $env:GITHUB_SHA.Substring(0,7) - echo "VERSION_NUM=$version-$SHORT_SHA" >> $env:GITHUB_ENV + $BUILD_DATE = Get-Date -Format "yyyyMMdd" + echo "VERSION_NUM=v$version-$BUILD_DATE-$SHORT_SHA" >> $env:GITHUB_ENV + echo "BUILD_DATE=$BUILD_DATE" >> $env:GITHUB_ENV - name: Cache xmake dependencies uses: actions/cache@v4 @@ -292,7 +300,7 @@ jobs: run: | xmake f --CROSSDESK_VERSION=${{ env.VERSION_NUM }} -y xmake b -vy crossdesk - + - name: Decode and save certificate shell: powershell run: | @@ -332,8 +340,14 @@ jobs: run: | VERSION="${GITHUB_REF##*/}" SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7) - VERSION_NUM="${VERSION#v}-${SHORT_SHA}" + BUILD_DATE=$(date +%Y%m%d) + BUILD_DATE_ISO=$(date +%Y-%m-%d) + VERSION_NUM="v${VERSION#v}-${BUILD_DATE}-${SHORT_SHA}" + VERSION_ONLY="${VERSION#v}" echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_OUTPUT + echo "VERSION_ONLY=${VERSION_ONLY}" >> $GITHUB_OUTPUT + echo "BUILD_DATE=${BUILD_DATE}" >> $GITHUB_OUTPUT + echo "BUILD_DATE_ISO=${BUILD_DATE_ISO}" >> $GITHUB_OUTPUT - name: Rename artifacts run: | @@ -387,17 +401,43 @@ jobs: remote_key: ${{ secrets.SERVER_KEY }} - name: Generate version.json - run: | - echo "{" > version.json - echo " \"latest_version\": \"${{ steps.version.outputs.VERSION_NUM }}\"" >> version.json - echo "}" >> version.json cat version.json + run: | + cat > version.json << EOF + { + "version": "${{ steps.version.outputs.VERSION_ONLY }}", + "releaseDate": "${{ steps.version.outputs.BUILD_DATE_ISO }}", + "downloads": { + "windows-x64": { + "url": "https://downloads.crossdesk.cn/crossdesk-win-x64-${{ steps.version.outputs.VERSION_NUM }}.exe", + "filename": "crossdesk-win-x64-${{ steps.version.outputs.VERSION_NUM }}.exe" + }, + "macos-x64": { + "url": "https://downloads.crossdesk.cn/crossdesk-macos-x64-${{ steps.version.outputs.VERSION_NUM }}.pkg", + "filename": "crossdesk-macos-x64-${{ steps.version.outputs.VERSION_NUM }}.pkg" + }, + "macos-arm64": { + "url": "https://downloads.crossdesk.cn/crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_NUM }}.pkg", + "filename": "crossdesk-macos-arm64-${{ steps.version.outputs.VERSION_NUM }}.pkg" + }, + "linux-amd64": { + "url": "https://downloads.crossdesk.cn/crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_NUM }}.deb", + "filename": "crossdesk-linux-amd64-${{ steps.version.outputs.VERSION_NUM }}.deb" + }, + "linux-arm64": { + "url": "https://downloads.crossdesk.cn/crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_NUM }}.deb", + "filename": "crossdesk-linux-arm64-${{ steps.version.outputs.VERSION_NUM }}.deb" + } + } + } + EOF + cat version.json - - name: Upload version.json to server + - name: Upload version.json to server uses: burnett01/rsync-deployments@5.2 - with: + with: switches: -avzr --delete - path: version.json - remote_path: /var/www/html/version/ - remote_host: ${{ secrets.SERVER_HOST }} - remote_user: ${{ secrets.SERVER_USER }} - remote_key: ${{ secrets.SERVER_KEY }} \ No newline at end of file + path: version.json + remote_path: /var/www/html/version/ + remote_host: ${{ secrets.SERVER_HOST }} + remote_user: ${{ secrets.SERVER_USER }} + remote_key: ${{ secrets.SERVER_KEY }} diff --git a/.github/workflows/update-pages.yml b/.github/workflows/update-pages.yml deleted file mode 100644 index 2a2e9ce..0000000 --- a/.github/workflows/update-pages.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Update GitHub Pages Downloads - -on: - push: - tags: - - "v*" - -jobs: - update-pages: - runs-on: ubuntu-latest - steps: - - name: Checkout CrossDesk repo - uses: actions/checkout@v4 - - - name: Set version number - id: version - run: | - SHORT_SHA=$(echo "${GITHUB_SHA}" | cut -c1-7) - VERSION_NUM="${GITHUB_REF##*/}" - VERSION_NUM="${VERSION_NUM#v}-${SHORT_SHA}" - echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_ENV - echo "VERSION_NUM=${VERSION_NUM}" >> $GITHUB_OUTPUT - - - name: Checkout Pages repo - uses: actions/checkout@v4 - with: - repository: kunkundi/kunkundi.github.io - token: ${{ secrets.GH_PAGES_PAT }} - path: pages - - - name: Update download links - run: | - cd pages - echo "Updating download links to ${VERSION_NUM}" - sed -E -i "s/crossdesk-win-x64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.exe/crossdesk-win-x64-${VERSION_NUM}.exe/g" index.html - sed -E -i "s/crossdesk-macos-x64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.pkg/crossdesk-macos-x64-${VERSION_NUM}.pkg/g" index.html - sed -E -i "s/crossdesk-macos-arm64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.pkg/crossdesk-macos-arm64-${VERSION_NUM}.pkg/g" index.html - sed -E -i "s/crossdesk-linux-amd64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.deb/crossdesk-linux-amd64-${VERSION_NUM}.deb/g" index.html - sed -E -i "s/crossdesk-linux-arm64-[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9._-]+)?\.deb/crossdesk-linux-arm64-${VERSION_NUM}.deb/g" index.html - git diff index.html || true - - - name: Commit & Push changes - run: | - cd pages - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add index.html - git commit -m "Update download links to v${VERSION_NUM}" || echo "No changes to commit" - git push origin main - env: - VERSION_NUM: ${{ env.VERSION_NUM }}