Skip to content

final changes

final changes #55

Workflow file for this run

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, 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: 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'
uses: actions/upload-artifact@v4
with:
name: linux-build
path: |
dist/*.tar.gz
if-no-files-found: error
- name: Upload Windows artifacts
if: matrix.os == 'windows-latest'
uses: actions/upload-artifact@v4
with:
name: windows-build
path: |
dist/*.exe
if-no-files-found: error
- name: Upload macOS artifacts
if: matrix.os == 'macos-latest'
uses: actions/upload-artifact@v4
with:
name: macos-build
path: |
dist/*.dmg
if-no-files-found: error
upload-to-releases:
name: Upload to releases.drivechain.info
runs-on: ubuntu-latest
needs: [build]
if: github.event_name == 'push' && github.repository_owner == 'LayerTwo-Labs'
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
pattern: "*-build"
path: artifacts
- name: List downloaded files
run: |
echo "Artifacts directory contents:"
ls -la artifacts
echo "Linux build directory contents:"
ls -la artifacts/linux-build
echo "Windows build directory contents:"
ls -la artifacts/windows-build
echo "macOS build directory contents:"
ls -la artifacts/macos-build
- name: Process artifacts
run: |
# Process Linux artifact
cd artifacts/linux-build
mv drivechain-launcher-*.tar.gz ../../drivechain-launcher-latest-x86_64-linux-gnu.tar.gz
cd ../..
# Process Windows artifact
cd artifacts/windows-build
echo "Windows build directory contents before processing:"
ls -la
# Find the exact exe file
EXE_FILE=$(ls Drivechain-Launcher-Setup-*.exe 2>/dev/null || echo "")
if [ -z "$EXE_FILE" ]; then
echo "Error: No Windows exe file found"
exit 1
fi
echo "Found Windows exe file: $EXE_FILE"
# Create zip file containing the exe
zip ../../drivechain-launcher-latest-windows.zip "$EXE_FILE"
cd ../..
# Process macOS artifacts
cd artifacts/macos-build
echo "macOS build directory contents before processing:"
ls -la
# Process arm64 DMG
ARM64_DMG=$(ls *-arm64.dmg 2>/dev/null || echo "")
if [ -z "$ARM64_DMG" ]; then
echo "Error: No arm64 DMG file found"
exit 1
fi
mv "$ARM64_DMG" ../../drivechain-launcher-latest-osx-arm64.dmg
# Process x64 DMG
X64_DMG=$(ls *-x64.dmg 2>/dev/null || echo "")
if [ -z "$X64_DMG" ]; then
echo "Error: No x64 DMG file found"
exit 1
fi
mv "$X64_DMG" ../../drivechain-launcher-latest-osx-x64.dmg
cd ../..
echo "Final files:"
ls -la drivechain-launcher-*
- name: Verify files exist
run: |
if [ ! -f "drivechain-launcher-latest-x86_64-linux-gnu.tar.gz" ]; then
echo "Error: Linux tar.gz file not found"
exit 1
fi
if [ ! -f "drivechain-launcher-latest-windows.zip" ]; then
echo "Error: Windows zip file not found"
exit 1
fi
if [ ! -f "drivechain-launcher-latest-osx-arm64.dmg" ]; then
echo "Error: macOS arm64 DMG file not found"
exit 1
fi
if [ ! -f "drivechain-launcher-latest-osx-x64.dmg" ]; then
echo "Error: macOS x64 DMG file not found"
exit 1
fi
- name: Upload to releases.drivechain.info
uses: cross-the-world/ssh-scp-ssh-pipelines@latest
with:
host: 45.33.96.47
user: root
pass: ${{ secrets.RELEASES_SERVER_PW }}
port: 22
scp: |
'drivechain-launcher-latest-x86_64-linux-gnu.tar.gz' => '/var/www/html/'
'drivechain-launcher-latest-windows.zip' => '/var/www/html/'
'drivechain-launcher-latest-osx-arm64.dmg' => '/var/www/html/'
'drivechain-launcher-latest-osx-x64.dmg' => '/var/www/html/'