name: Build Release on: release: types: [created] jobs: webpack: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install Webpack dependencies working-directory: ./static run: npm install - name: Run Webpack working-directory: ./static run: npx webpack - name: Upload frontend bundle uses: actions/upload-artifact@v4 with: name: frontend-bundle path: ./static/dist pyinstaller: needs: webpack runs-on: ubuntu-latest strategy: matrix: arch: [x64, arm64] steps: - name: Checkout uses: actions/checkout@v4 # - name: Run pyinstaller # uses: sayyid5416/pyinstaller@v1 # with: # python_arch: ${{ matrix.arch }} # spec: 'pix.spec' # requirements: 'requirements.txt' # #upload_exe_with_name: 'pix' # options: --onefile - name: Set up QEMU for cross-architecture if: matrix.arch == 'arm64' uses: docker/setup-qemu-action@v3 with: platforms: arm64 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.10' - name: Install Python dependencies run: | python -m pip install --upgrade pip pip install pyinstaller pip install -r requirements.txt - name: Install system dependencies for arm64 if: matrix.arch == 'arm64' run: | sudo apt-get update sudo apt-get install -y zlib1g-dev libffi-dev libssl-dev - name: Run PyInstaller env: TARGET_ARCH: ${{ matrix.arch }} run: | if [ "${{ matrix.arch }}" = "arm64" ]; then ARCHITECTURE=aarch64 pyinstaller pix.spec else pyinstaller pix.spec fi - name: Rename the executable run: | mv ./dist/pix ./dist/pixpy-${{ matrix.arch }} - name: Upload executables uses: actions/upload-artifact@v4 with: name: pixpy-${{ matrix.arch }} path: ./dist/pixpy-${{ matrix.arch }} release: needs: pyinstaller runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Create Release and Upload Assets uses: softprops/action-gh-release@v2 with: files: | ./dist/pixpy-* env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}