on: release: types: [published] jobs: upload: runs-on: host permissions: packages: write steps: - uses: actions/setup-node@v6 with: node-version: 24 - uses: actions/checkout@v6 with: fetch-depth: 0 - name: Update version from tag run: | # Extract version from tag (e.g. v1.2.3 -> 1.2.3) VERSION=${GITHUB_REF_NAME#v} echo "Bumping version to $VERSION" npm version $VERSION --no-git-tag-version # Configure Git git config user.name "Forgejo Actions" git config user.email "actions@noreply.flegr.me" # Commit and push back to main if version changed if [ -n "$(git status --porcelain package.json)" ]; then git add package.json package-lock.json git commit -m "chore: bump version to $VERSION [skip ci]" git push origin HEAD:main fi - run: npm ci - run: npm run dist:linux - name: Build Windows installer with 32-bit Wine prefix run: | export WINEARCH=win32 export WINEPREFIX="$HOME/.wine32" wineboot -u npm run dist:win - name: Copy installers into static folder run: | mkdir -p static/installers find static/installers -mindepth 1 -maxdepth 1 -type f -delete copy_first() { pattern="$1" out="$2" file="$(find dist -maxdepth 1 -type f -name "$pattern" | head -n 1)" if [ -n "$file" ]; then cp "$file" "static/installers/$out" fi } copy_first '*.rpm' 'chattz-linux.rpm' copy_first '*.deb' 'chattz-linux.deb' copy_first '*.AppImage' 'chattz-linux.AppImage' copy_first '*.exe' 'chattz-windows.exe' copy_first '*.msi' 'chattz-windows.msi' # Metadata files for electron-updater copy_first 'latest-linux.yml' 'latest-linux.yml' copy_first 'latest.yml' 'latest.yml' - name: Cache Cargo registry uses: actions/cache@v4 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ key: ${{ runner.os }}-cargo-${{ hashFiles('Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo- - name: Cache Cargo target uses: actions/cache@v4 with: path: target/ key: ${{ runner.os }}-cargo-target-${{ hashFiles('Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-target- - run: ~/.cargo/bin/cargo build -r - run: | export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus systemctl --user stop discord mkdir -p ~/discord cp target/release/chattz ~/discord/discord chmod +x ~/discord/discord mkdir -p ~/discord/static/uploads find ~/discord/static -mindepth 1 -maxdepth 1 ! -name 'uploads' -exec rm -rf {} + cp -r static/* ~/discord/static/ systemctl --user start discord