diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 86e118e..5870c07 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,170 +6,181 @@ on: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 jobs: - create-release: - runs-on: ubuntu-latest - # outputs: - # RELEASE_UPLOAD_ID: ${{ steps.create_release.outputs.id }} - - steps: - - uses: actions/checkout@v2 - - name: Query version number - id: get_version - shell: bash - run: | - echo "using version tag ${GITHUB_REF:10}" - echo "version=${GITHUB_REF:10}" >> $GITHUB_ENV - - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: '${{ env.version }}' - release_name: 'ChatGPT ${{ env.version }}' - body: 'See the assets to download this version and install.' - - build-tauri: + build-chatgpt: runs-on: ${{ matrix.os }} - timeout-minutes: 40 - needs: create-release strategy: fail-fast: false matrix: include: - build: linux os: ubuntu-latest - rust: stable + arch: x86_64 target: x86_64-unknown-linux-gnu - - build: linux - os: ubuntu-latest - rust: stable - target: aarch64-unknown-linux-gnu - build: macos os: macos-latest - rust: stable + arch: x86_64 target: x86_64-apple-darwin - buid: macos os: macos-latest - rust: stable + arch: aarch64 target: aarch64-apple-darwin - build: windows os: windows-latest - rust: stable + arch: x86_64 target: x86_64-pc-windows-msvc steps: - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + name: Install pnpm + id: pnpm-install + with: + version: 7 + run_install: false + - name: Install Node.js uses: actions/setup-node@v3 with: node-version: 18 cache: pnpm - cache-dependency-path: chatgpt/pnpm-lock.yaml + - run: pnpm install --frozen-lockfile - name: 'Setup Rust' uses: dtolnay/rust-toolchain@stable with: - targets: ${{ matrix.config.rust_target }} + targets: ${{ matrix.target }} - uses: Swatinem/rust-cache@v2 with: - key: ${{ matrix.config.rust_target }} + key: ${{ matrix.target }} - - name: install dependencies (ubuntu only) - if: matrix.platform == 'ubuntu-latest' + - name: Install dependencies (ubuntu only) + if: matrix.os == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y libgtk-3-dev webkit2gtk-4.0 libayatana-appindicator3-dev librsvg2-dev patchelf - - name: Install dependencies - run: cd chatgpt && pnpm install --force - - - name: Build + - name: Build FE run: pnpm build:fe - # - name: Rewrite tauri.conf.json - # run: pnpm fix:conf - - name: Install rust target run: rustup target add ${{ matrix.target }} - name: fix tray icon - if: matrix.platform != 'macos-latest' + if: matrix.os != 'macos-latest' run: | pnpm fix:tray - - uses: tauri-apps/tauri-action@v0.3 + - run: pnpm build --target ${{ matrix.target }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # 📝: https://tauri.app/v1/guides/distribution/updater#signing-updates TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} - with: - args: --target ${{ matrix.target }} - # releaseId: ${{ needs.create-release.outputs.RELEASE_UPLOAD_ID }} - uses: actions/upload-artifact@v3 - if: matrix.target == 'aarch64-apple-darwin' + if: matrix.os == 'ubuntu-latest' with: - name: chatgpt-macos-aarch64 - path: ./target/aarch64-apple-darwin/release/bundle/macos/ChatGPT.app.tar.* - - - uses: actions/upload-artifact@v3 - if: matrix.target == 'x86_64-apple-darwin' - with: - name: chatgpt-macos - path: ./target/x86_64-apple-darwin/release/bundle/macos/ChatGPT.app.tar.* - - - uses: actions/upload-artifact@v3 - if: matrix.platform == 'windows-latest' - with: - name: chatgpt-windows - path: ./target/x86_64-pc-windows-msvc/release/bundle/msi/ChatGPT_**.msi.zip.* - - - uses: actions/upload-artifact@v3 - if: matrix.target == 'x86_64-unknown-linux-gnu' - with: - name: chatgpt-linux + name: artifacts-${{ matrix.arch }} path: | - ./target/x86_64-unknown-linux-gnu/release/bundle/appimage/chat-gpt_**.deb - ./target/x86_64-unknown-linux-gnu/release/bundle/appimage/chat-gpt_**.AppImage.tar.* + ./target/${{ matrix.target }}/release/bundle/appimage/**.AppImage.* + ./target/${{ matrix.target }}/release/bundle/deb/**.deb - uses: actions/upload-artifact@v3 - if: matrix.target == 'aarch64-unknown-linux-gnu' + if: matrix.os == 'macos-latest' with: - name: chatgpt-linux + name: artifacts-${{ matrix.arch }} path: | - ./target/aarch64-unknown-linux-gnu/release/bundle/appimage/chat-gpt_**.deb - ./target/aarch64-unknown-linux-gnu/release/bundle/appimage/chat-gpt_**.AppImage.tar.* + ./target/${{ matrix.target }}/release/bundle/dmg/**.dmg + ./target/${{ matrix.target }}/release/bundle/macos/**.app.* - # updater: - # runs-on: ubuntu-latest - # needs: [create-release, build-tauri] + - uses: actions/upload-artifact@v3 + if: matrix.os == 'windows-latest' + with: + name: artifacts-${{ matrix.arch }} + path: | + ./target/${{ matrix.target }}/release/bundle/msi/** - # steps: - # - uses: actions/checkout@v3 + release-chatgpt: + needs: build-chatgpt + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 - # - name: Install Node.js - # uses: actions/setup-node@v3 - # with: - # node-version: 18 - # cache: pnpm - # cache-dependency-path: chatgpt/pnpm-lock.yaml + - name: Query version number + run: echo "version=${GITHUB_REF:11}" >> $GITHUB_ENV - # - name: Install dependencies - # run: cd chatgpt && pnpm install --force + - name: Download x86_64 artifacts + uses: actions/download-artifact@v3 + with: + name: artifacts-x86_64 + path: artifacts/x86_64 - # - run: pnpm updater --token=${{ secrets.GITHUB_TOKEN }} + - name: Download aarch64 artifacts + uses: actions/download-artifact@v3 + with: + name: artifacts-aarch64 + path: artifacts/aarch64 - # - name: Deploy install.json - # uses: peaceiris/actions-gh-pages@v3 - # with: - # github_token: ${{ secrets.GITHUB_TOKEN }} - # # 📝: Edit the deployment directory - # publish_dir: ./updater - # # force_orphan: true + - name: Rename artifacts + run: | + mv "artifacts/aarch64/dmg/ChatGPT_${{ env.version }}_aarch64.dmg" "artifacts/ChatGPT_${{ env.version }}_macos_aarch64.dmg" + mv "artifacts/aarch64/macos/ChatGPT.app.tar.gz" "artifacts/ChatGPT_${{ env.version }}_macos_aarch64.app.tar.gz" + mv "artifacts/aarch64/macos/ChatGPT.app.tar.gz.sig" "artifacts/ChatGPT_${{ env.version }}_macos_aarch64.app.tar.gz.sig" + + mv "artifacts/x86_64/dmg/ChatGPT_${{ env.version }}_x64.dmg" "artifacts/ChatGPT_${{ env.version }}_macos_x86_64.dmg" + mv "artifacts/x86_64/macos/ChatGPT.app.tar.gz" "artifacts/ChatGPT_${{ env.version }}_macos_x86_64.app.tar.gz" + mv "artifacts/x86_64/macos/ChatGPT.app.tar.gz.sig" "artifacts/ChatGPT_${{ env.version }}_macos_x86_64.app.tar.gz.sig" + + mv "artifacts/x86_64/deb/chat-gpt_${{ env.version }}_amd64.deb" "artifacts/x86_64/deb/ChatGPT_${{ env.version }}_linux_x86_64.deb" + mv "artifacts/x86_64/appimage/chat-gpt_${{ env.version }}_amd64.AppImage.tar.gz" "artifacts/ChatGPT_${{ env.version }}_linux_x86_64.AppImage.tar.gz" + mv "artifacts/x86_64/appimage/chat-gpt_${{ env.version }}_amd64.AppImage.tar.gz.sig" "artifacts/ChatGPT_${{ env.version }}_linux_x86_64.AppImage.tar.gz.sig" + + mv "artifacts/x86_64/ChatGPT_${{ env.version }}_x64_en-US.msi" "artifacts/ChatGPT_${{ env.version }}_windows_x86_64.msi" + mv "artifacts/x86_64/ChatGPT_${{ env.version }}_x64_en-US.msi.zip" "artifacts/ChatGPT_${{ env.version }}_windows_x86_64.msi.zip" + mv "artifacts/x86_64/ChatGPT_${{ env.version }}_x64_en-US.msi.zip.sig" "artifacts/ChatGPT_${{ env.version }}_windows_x86_64.msi.zip.sig" + + - name: Create Release + uses: softprops/action-gh-release@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: v${{ env.version }} + name: ChatGPT v${{ env.version }} + body: See the assets to download this version and install. + prerelease: false + generate_release_notes: false + files: ./artifacts/**/* + + updater: + runs-on: ubuntu-latest + needs: release-chatgpt + + steps: + - uses: actions/checkout@v3 + + - uses: pnpm/action-setup@v2 + name: Install pnpm + id: pnpm-install + with: + version: 7 + run_install: false + + - name: Install Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: pnpm + - run: pnpm install --frozen-lockfile + + - name: Updater JSON + run: pnpm updater --token=${{ secrets.GITHUB_TOKEN }} + + - name: Deploy install.json + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./updater + # force_orphan: true # publish-winget: # # Action can only be run on windows diff --git a/scripts/download.js b/scripts/download.js deleted file mode 100644 index 517ff8e..0000000 --- a/scripts/download.js +++ /dev/null @@ -1,33 +0,0 @@ -const fs = require('fs'); - -const argv = process.argv.slice(2); - -async function rewrite(filename) { - const content = fs.readFileSync(filename, 'utf8').split('\n'); - const startRe = //; - const endRe = //; - - let flag = false; - for (let i = 0; i < content.length; i++) { - if (startRe.test(content[i])) { - flag = true; - } - if (flag) { - if (!/winget install --id=lencx.ChatGPT -e --version/.test(content[i])) { - content[i] = content[i].replace(/(\d+).(\d+).(\d+)/g, argv[0]); - } - } - if (endRe.test(content[i])) { - break; - } - } - - fs.writeFileSync(filename, content.join('\n'), 'utf8'); -} - -async function init() { - rewrite('README.md'); - rewrite('README-ZH_CN.md'); -} - -init().catch(console.error);