name: CI on: pull_request: paths-ignore: - '**/*.md' - 'README*' - 'LICENSE*' push: branches: - master paths-ignore: - '**/*.md' - 'README*' - 'LICENSE*' jobs: build: timeout-minutes: 5 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: lfs: false - name: Set up JDK uses: actions/setup-java@v4 with: distribution: temurin java-version: '17' cache: maven - name: Build and test run: mvn -B verify electron-build: timeout-minutes: 5 name: Electron packages (${{ matrix.os }}) if: github.event_name == 'push' && github.ref == 'refs/heads/master' runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest build-command: npx electron-builder --linux AppImage --publish never artifact-name: electron-linux - os: windows-latest build-command: npx electron-builder --win nsis --publish never artifact-name: electron-windows - os: macos-latest build-command: npx electron-builder --mac --publish never artifact-name: electron-macos steps: - uses: actions/checkout@v4 with: lfs: true - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: npm cache-dependency-path: package-lock.json - name: Install dependencies run: npm ci - name: Build Electron bundles run: ${{ matrix.build-command }} - name: Smoke test AppImage (Linux) if: matrix.os == 'ubuntu-latest' run: | chmod +x dist/*.AppImage ./dist/*.AppImage --appimage-extract sudo apt-get update sudo apt-get install -y xvfb APPDIR="$(pwd)" xvfb-run ./AppRun --no-sandbox - name: Smoke test Windows exe if: matrix.os == 'windows-latest' shell: powershell run: | Start-Process -FilePath "dist\*.exe" Start-Sleep -Seconds 5 - name: Smoke test macOS app if: matrix.os == 'macos-latest' run: | open dist/*.app sleep 5 pkill -f Imgfloat || true - name: Upload Electron artifacts uses: actions/upload-artifact@v4 with: name: ${{ matrix.artifact-name }} path: | dist/*.AppImage dist/*.exe dist/*.dmg docker: timeout-minutes: 5 runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v4 with: lfs: true - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Log in to Docker Hub if: github.event_name == 'push' && github.ref == 'refs/heads/master' uses: docker/login-action@v3 with: username: kruhlmann password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} - name: Build and push Docker image uses: docker/build-push-action@v5 with: context: . push: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} tags: | kruhlmann/imgfloat-j:latest kruhlmann/imgfloat-j:${{ github.sha }}