name: Release CI on: push: tags: - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 jobs: build-chatgpt: runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: include: - build: linux os: ubuntu-latest arch: x86_64 target: x86_64-unknown-linux-gnu - build: macos os: macos-latest arch: x86_64 target: x86_64-apple-darwin - buid: macos os: macos-latest arch: aarch64 target: aarch64-apple-darwin - build: windows os: windows-latest 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 - run: pnpm install --frozen-lockfile - name: 'Setup Rust' uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - uses: Swatinem/rust-cache@v2 with: key: ${{ matrix.target }} - name: Install xattr (macos only) if: matrix.os == 'macos-latest' run: pip install xattr - 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: Build FE run: pnpm build:fe - name: Install rust target run: rustup target add ${{ matrix.target }} - name: fix tray icon if: matrix.os != 'macos-latest' run: | pnpm fix:tray - run: pnpm build --target ${{ matrix.target }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }} TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }} - uses: actions/upload-artifact@v3 if: matrix.os == 'ubuntu-latest' with: name: artifacts-${{ matrix.arch }} path: | ./target/${{ matrix.target }}/release/bundle/appimage/**.AppImage.* ./target/${{ matrix.target }}/release/bundle/deb/**.deb - uses: actions/upload-artifact@v3 if: matrix.os == 'macos-latest' with: name: artifacts-${{ matrix.arch }} path: | ./target/${{ matrix.target }}/release/bundle/dmg/**.dmg ./target/${{ matrix.target }}/release/bundle/macos/**.app.* - uses: actions/upload-artifact@v3 if: matrix.os == 'windows-latest' with: name: artifacts-${{ matrix.arch }} path: | ./target/${{ matrix.target }}/release/bundle/msi/** release-chatgpt: needs: build-chatgpt runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install xattr run: | sudo apt-get update sudo apt-get install -y xattr - name: Query version number run: echo "version=${GITHUB_REF:11}" >> $GITHUB_ENV - name: Download x86_64 artifacts uses: actions/download-artifact@v3 with: name: artifacts-x86_64 path: artifacts/x86_64 - name: Download aarch64 artifacts uses: actions/download-artifact@v3 with: name: artifacts-aarch64 path: artifacts/aarch64 - 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 - name: Query version number run: echo "version=${GITHUB_REF:11}" >> $GITHUB_ENV publish-winget: # Action can only be run on windows runs-on: windows-latest needs: [build-chatgpt, release-chatgpt] steps: - uses: vedantmgoyal2009/winget-releaser@v1 with: identifier: lencx.ChatGPT token: ${{ secrets.WINGET_TOKEN }} version: ${{ github.event.release.tag_name }}