refactor(icons): load icons per key instead of whole catalogs #3722
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| tag: | |
| description: "Release tag (e.g. v1.0.0)" | |
| required: true | |
| default: "v1.0.0" | |
| platform: | |
| description: "Build platform" | |
| required: true | |
| default: "all" | |
| type: choice | |
| options: | |
| - all | |
| - windows | |
| - mac | |
| - linux | |
| pull_request_target: | |
| branches: | |
| - main | |
| types: | |
| - closed | |
| permissions: | |
| contents: write | |
| jobs: | |
| release: | |
| # Only run for tag push, workflow_dispatch, or PR from release branches | |
| if: | | |
| github.event_name == 'push' || | |
| github.event_name == 'workflow_dispatch' || | |
| (github.event_name == 'pull_request_target' && github.event.pull_request.merged == true && github.event.pull_request.head.repo.full_name == github.repository && startsWith(github.event.pull_request.head.ref, 'release/v')) | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: ${{ fromJSON( | |
| github.event_name == 'push' && '["macos-latest", "windows-latest", "ubuntu-latest"]' || | |
| github.event_name == 'pull_request_target' && '["macos-latest", "windows-latest", "ubuntu-latest"]' || | |
| github.event.inputs.platform == 'all' && '["macos-latest", "windows-latest", "ubuntu-latest"]' || | |
| github.event.inputs.platform == 'linux' && '["ubuntu-latest"]' || | |
| github.event.inputs.platform == 'windows' && '["windows-latest"]' || | |
| github.event.inputs.platform == 'mac' && '["macos-latest"]' || | |
| '["macos-latest", "windows-latest", "ubuntu-latest"]' | |
| ) }} | |
| fail-fast: false | |
| steps: | |
| - name: Check out Git repository | |
| uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || '' }} | |
| - name: Get release tag | |
| id: get-tag | |
| shell: bash | |
| run: | | |
| if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then | |
| echo "tag=${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT | |
| elif [ "${{ github.event_name }}" = "pull_request_target" ]; then | |
| # Extract version from branch name (release/v1.0.0 -> v1.0.0) | |
| BRANCH="${{ github.event.pull_request.head.ref }}" | |
| echo "tag=${BRANCH#release/}" >> $GITHUB_OUTPUT | |
| else | |
| echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Set package.json version | |
| shell: bash | |
| run: | | |
| TAG="${{ steps.get-tag.outputs.tag }}" | |
| VERSION="${TAG#v}" | |
| npm version "$VERSION" --no-git-tag-version --allow-same-version | |
| - name: Install Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version-file: '.node-version' | |
| - name: macos-latest dependencies fix | |
| if: matrix.os == 'macos-latest' | |
| run: | | |
| brew install python-setuptools | |
| - name: Install pnpm | |
| uses: pnpm/action-setup@v5 | |
| - name: Get pnpm store directory | |
| id: pnpm-cache | |
| shell: bash | |
| run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_OUTPUT | |
| - name: Cache pnpm dependencies | |
| uses: actions/cache@v5 | |
| with: | |
| path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} | |
| key: ${{ runner.os }}-pnpm-${{ hashFiles('**/pnpm-lock.yaml') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pnpm- | |
| - name: Install Dependencies | |
| run: pnpm install | |
| - name: Build Linux | |
| if: matrix.os == 'ubuntu-latest' | |
| run: | | |
| sudo apt-get install -y rpm libevdev-dev libxtst-dev libx11-dev libxfixes-dev libwayland-dev | |
| pnpm build:linux | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| NODE_OPTIONS: --max-old-space-size=8192 | |
| MAIN_VITE_CHERRYAI_CLIENT_SECRET: ${{ secrets.MAIN_VITE_CHERRYAI_CLIENT_SECRET }} | |
| MAIN_VITE_MINERU_API_KEY: ${{ secrets.MAIN_VITE_MINERU_API_KEY }} | |
| RENDERER_VITE_AIHUBMIX_SECRET: ${{ secrets.RENDERER_VITE_AIHUBMIX_SECRET }} | |
| RENDERER_VITE_PPIO_APP_SECRET: ${{ secrets.RENDERER_VITE_PPIO_APP_SECRET }} | |
| - name: Build Mac | |
| if: matrix.os == 'macos-latest' | |
| run: | | |
| sudo -H pip install setuptools | |
| pnpm build:mac | |
| env: | |
| CSC_FOR_PULL_REQUEST: true | |
| CSC_LINK: ${{ secrets.CSC_LINK }} | |
| CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} | |
| APPLE_ID: ${{ secrets.APPLE_ID }} | |
| APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }} | |
| APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| NODE_OPTIONS: --max-old-space-size=8192 | |
| MAIN_VITE_CHERRYAI_CLIENT_SECRET: ${{ secrets.MAIN_VITE_CHERRYAI_CLIENT_SECRET }} | |
| MAIN_VITE_MINERU_API_KEY: ${{ secrets.MAIN_VITE_MINERU_API_KEY }} | |
| RENDERER_VITE_AIHUBMIX_SECRET: ${{ secrets.RENDERER_VITE_AIHUBMIX_SECRET }} | |
| RENDERER_VITE_PPIO_APP_SECRET: ${{ secrets.RENDERER_VITE_PPIO_APP_SECRET }} | |
| - name: Build Windows | |
| if: matrix.os == 'windows-latest' | |
| run: | | |
| pnpm build:win | |
| env: | |
| ELECTRON_BUILDER_7Z_FILTER: BCJ | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| NODE_OPTIONS: --max-old-space-size=8192 | |
| MAIN_VITE_CHERRYAI_CLIENT_SECRET: ${{ secrets.MAIN_VITE_CHERRYAI_CLIENT_SECRET }} | |
| MAIN_VITE_MINERU_API_KEY: ${{ secrets.MAIN_VITE_MINERU_API_KEY }} | |
| RENDERER_VITE_AIHUBMIX_SECRET: ${{ secrets.RENDERER_VITE_AIHUBMIX_SECRET }} | |
| RENDERER_VITE_PPIO_APP_SECRET: ${{ secrets.RENDERER_VITE_PPIO_APP_SECRET }} | |
| - name: Release | |
| uses: ncipollo/release-action@v1 | |
| with: | |
| draft: true | |
| allowUpdates: true | |
| makeLatest: false | |
| tag: ${{ steps.get-tag.outputs.tag }} | |
| artifacts: "dist/*.exe,dist/*.zip,dist/*.dmg,dist/*.AppImage,dist/*.snap,dist/*.deb,dist/*.rpm,dist/*.tar.gz,dist/latest*.yml,dist/rc*.yml,dist/beta*.yml,dist/*.blockmap" | |
| token: ${{ secrets.GITHUB_TOKEN }} |