name: Remote Release Platforms on: workflow_dispatch: inputs: release_tag: description: Draft GitHub release tag used as the transport bucket required: true type: string release_title: description: Human-readable title for the draft release required: false type: string concurrency: group: remote-release-${{ github.ref }}-${{ inputs.release_tag }} cancel-in-progress: false env: PNPM_VERSION: "10.24.0" NODE_VERSION: "22" jobs: build-windows: name: Windows Universal Installer runs-on: windows-latest permissions: contents: write steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: ${{ env.PNPM_VERSION }} - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm - run: pnpm install --frozen-lockfile - name: Build electron-vite run: pnpm exec electron-vite build - name: Package run: pnpm exec electron-builder --win --x64 --arm64 --config electron-builder.yml --publish never env: CSC_LINK: ${{ secrets.WIN_CERTIFICATE_P12_BASE64 }} CSC_KEY_PASSWORD: ${{ secrets.WIN_CERTIFICATE_PASSWORD }} - name: Upload release files shell: bash env: GH_TOKEN: ${{ github.token }} RELEASE_TAG: ${{ inputs.release_tag }} RELEASE_TITLE: ${{ inputs.release_title }} run: | set -euo pipefail gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \ gh release create "$RELEASE_TAG" \ --draft \ --prerelease \ --title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \ --notes "Temporary release transport generated by remote-release-platforms.yml." \ --target "$GITHUB_SHA" shopt -s nullglob files=( build/release/*.exe build/release/*.blockmap build/release/latest.yml ) if [ ${#files[@]} -eq 0 ]; then echo "No Windows release files found." exit 1 fi gh release upload "$RELEASE_TAG" "${files[@]}" --clobber build-linux-x64: name: Linux x64 runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: ${{ env.PNPM_VERSION }} - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm - run: pnpm install --frozen-lockfile - name: Build electron-vite run: pnpm exec electron-vite build - name: Package run: pnpm exec electron-builder --linux --x64 --config electron-builder.yml --publish never - name: Upload release files env: GH_TOKEN: ${{ github.token }} RELEASE_TAG: ${{ inputs.release_tag }} RELEASE_TITLE: ${{ inputs.release_title }} run: | set -euo pipefail gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \ gh release create "$RELEASE_TAG" \ --draft \ --prerelease \ --title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \ --notes "Temporary release transport generated by remote-release-platforms.yml." \ --target "$GITHUB_SHA" shopt -s nullglob files=() for file in build/release/AgentCompany-*.AppImage; do if [[ "$file" != *arm64* ]]; then files+=("$file") fi done files+=( build/release/agent-company_*_amd64.deb build/release/agent-company-*.x86_64.rpm build/release/latest-linux.yml ) if [ ${#files[@]} -eq 0 ]; then echo "No Linux x64 release files found." exit 1 fi gh release upload "$RELEASE_TAG" "${files[@]}" --clobber build-linux-arm64: name: Linux arm64 runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 with: version: ${{ env.PNPM_VERSION }} - uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: pnpm - run: pnpm install --frozen-lockfile - name: Build electron-vite run: pnpm exec electron-vite build - name: Package run: pnpm exec electron-builder --linux --arm64 --config electron-builder.yml --publish never - name: Upload release files env: GH_TOKEN: ${{ github.token }} RELEASE_TAG: ${{ inputs.release_tag }} RELEASE_TITLE: ${{ inputs.release_title }} run: | set -euo pipefail gh release view "$RELEASE_TAG" >/dev/null 2>&1 || \ gh release create "$RELEASE_TAG" \ --draft \ --prerelease \ --title "${RELEASE_TITLE:-Remote Release $GITHUB_RUN_ID}" \ --notes "Temporary release transport generated by remote-release-platforms.yml." \ --target "$GITHUB_SHA" shopt -s nullglob files=( build/release/*arm64*.AppImage build/release/*arm64*.deb build/release/*aarch64*.rpm ) if [ ${#files[@]} -eq 0 ]; then echo "No Linux arm64 release files found." exit 1 fi gh release upload "$RELEASE_TAG" "${files[@]}" --clobber