Build: Update artifact upload #36
This file contains 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: Build | |
on: | |
push: | |
branches: [ master ] | |
tags: | |
- 'v*' | |
pull_request: | |
branches: [ master ] | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest-large, windows-latest-large, macos-latest] | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '18.x' | |
cache: 'npm' | |
- name: Setup GitHub CLI | |
run: | | |
gh auth login --with-token <<< "${{ secrets.GITHUB_TOKEN }}" | |
- name: Prepare Release | |
run: | | |
if [[ $GITHUB_REF == refs/tags/* ]]; then | |
# For tags, create a new release | |
VERSION=${GITHUB_REF#refs/tags/} | |
gh release create "$VERSION" --draft --title "$VERSION" | |
echo "RELEASE_TAG=$VERSION" >> $GITHUB_ENV | |
else | |
# For branches, use or create 'latest' release | |
gh release view latest || gh release create latest --draft --title "Latest Build" | |
echo "RELEASE_TAG=latest" >> $GITHUB_ENV | |
fi | |
- name: Install dependencies | |
run: npm ci | |
- name: Build React app | |
env: | |
CI: false | |
run: npm run react-build | |
- name: Build Electron app | |
if: matrix.os != 'ubuntu-latest-large' | |
env: | |
DEBUG: electron-builder | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: npm run electron-build | |
- name: Build Electron app (Linux) | |
if: matrix.os == 'ubuntu-latest-large' | |
env: | |
DEBUG: electron-builder | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
# Show electron-builder version | |
npx electron-builder --version | |
# List contents before build | |
ls -la | |
# Run build with verbose logging | |
npx electron-builder --linux tar.gz --x64 | |
# Show build output directory | |
echo "Build output directory contents:" | |
ls -la dist/ | |
# Upload artifacts based on platform | |
- name: Check Linux build output | |
if: matrix.os == 'ubuntu-latest-large' | |
run: | | |
echo "Checking build output..." | |
if [ ! -d "dist" ]; then | |
echo "Error: dist directory not found" | |
exit 1 | |
fi | |
find dist -type f -name "*.tar.gz" || echo "No tar.gz files found in dist/" | |
- name: Upload Linux artifacts | |
if: matrix.os == 'ubuntu-latest-large' | |
run: | | |
cd dist | |
for file in *.tar.gz; do | |
gh release upload --clobber "$RELEASE_TAG" "$file" | |
done | |
- name: Upload Windows artifacts | |
if: matrix.os == 'windows-latest-large' | |
run: | | |
cd dist | |
for file in *.exe; do | |
gh release upload --clobber "$RELEASE_TAG" "$file" | |
done | |
- name: Upload macOS artifacts | |
if: matrix.os == 'macos-latest' | |
run: | | |
cd dist | |
for file in *.dmg; do | |
gh release upload --clobber "$RELEASE_TAG" "$file" | |
done |