name: Build on: push: branches: - main tags: - '[0-9]*.[0-9]*.[0-9]*' pull_request: permissions: contents: read jobs: check: strategy: fail-fast: false matrix: check: [lint, format] runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Setup pnpm uses: pnpm/action-setup@v5 - name: Setup Node.js uses: actions/setup-node@v5 with: node-version: 22 cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Run ${{ matrix.check }} run: pnpm ${{ matrix.check }} build: needs: check strategy: fail-fast: false matrix: os: [windows-latest, macos-latest, ubuntu-latest] include: - os: windows-latest platform: windows build-script: build:win - os: macos-latest platform: macos build-script: build:mac - os: ubuntu-latest platform: linux build-script: build:linux runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v5 - name: Setup pnpm uses: pnpm/action-setup@v5 - name: Setup Node.js uses: actions/setup-node@v5 with: node-version: 22 cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Set artifact version id: version shell: bash run: | if [[ "${GITHUB_REF}" == refs/tags/* ]]; then echo "value=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT" else echo "value=${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" fi - name: Build env: BUILD_VERSION: ${{ steps.version.outputs.value }} run: pnpm ${{ matrix.build-script }} - name: Upload artifacts uses: actions/upload-artifact@v6 with: name: ${{ matrix.platform }}-${{ steps.version.outputs.value }} path: | dist/*.exe dist/*.dmg dist/*.AppImage dist/*.deb if-no-files-found: error release: needs: build if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest permissions: contents: write steps: - name: Download artifacts uses: actions/download-artifact@v6 with: path: dist merge-multiple: true - name: Create release uses: softprops/action-gh-release@v2 with: files: | dist/*.exe dist/*.dmg dist/*.AppImage dist/*.deb generate_release_notes: true update-cask: needs: release if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout uses: actions/checkout@v5 with: ref: main - name: Compute DMG sha256 id: sha run: | version="${GITHUB_REF_NAME}" url="https://github.com/${GITHUB_REPOSITORY}/releases/download/${version}/discord-presence-relay-${version}.dmg" curl -sL -o dpr.dmg "$url" echo "value=$(shasum -a 256 dpr.dmg | cut -d ' ' -f1)" >> "$GITHUB_OUTPUT" - name: Update cask run: | version="${GITHUB_REF_NAME}" sed -i "s/version \".*\"/version \"${version}\"/" Casks/discord-presence-relay.rb sed -i "s/sha256 \".*\"/sha256 \"${{ steps.sha.outputs.value }}\"/" Casks/discord-presence-relay.rb - name: Commit and push run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add Casks/discord-presence-relay.rb git diff --cached --quiet && exit 0 git commit -m "Update discord-presence-relay to ${GITHUB_REF_NAME}" git push origin HEAD:main