Update main.yml #15
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 epo.exe for multiple platforms | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
build-windows: | |
runs-on: windows-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pyinstaller | |
pip install -r requirements.txt | |
- name: Build epo.exe on Windows | |
run: | | |
pyinstaller --onefile --name epo.exe epo.py | |
- name: Check output files | |
run: | | |
Get-ChildItem -Path dist/ | |
shell: pwsh | |
- name: Upload epo.exe as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: epo-executable-windows | |
path: dist/epo.exe | |
build-linux: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Build in manylinux | |
run: | | |
docker run --rm -v $(pwd):/src quay.io/pypa/manylinux2014_x86_64 bash -c " | |
cd /src && | |
/opt/python/cp310-cp310/bin/python -m pip install pyinstaller && | |
/opt/python/cp310-cp310/bin/pyinstaller --onefile --name epo-linux epo.py" | |
- name: Upload epo executable as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: epo-executable-linux | |
path: dist/epo-linux | |
build-macos: | |
runs-on: macos-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.x' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install pyinstaller | |
pip install -r requirements.txt | |
- name: Build executable on macOS | |
run: | | |
pyinstaller --onefile --name epo-macos epo.py | |
- name: Check output files | |
run: | | |
ls -al dist/ | |
- name: Upload epo-macos as artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: epo-executable-macos | |
path: dist/epo-macos | |
commit-and-push: | |
needs: [build-windows, build-linux, build-macos] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Download all artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: dist/ | |
- name: Move artifacts to correct locations | |
run: | | |
mv dist/epo-executable-windows/epo.exe dist/ | |
mv dist/epo-executable-linux/epo-linux dist/ | |
mv dist/epo-executable-macos/epo-macos dist/ | |
rm -rf dist/epo-executable-windows dist/epo-executable-linux dist/epo-executable-macos | |
- name: Show downloaded files | |
run: | | |
ls -al dist/ | |
- name: Set up Git for commit | |
run: | | |
git config --global user.name "github-actions" | |
git config --global user.email "[email protected]" | |
- name: Add and commit all built executables | |
run: | | |
git add dist/* || echo "No files to add" | |
git diff --cached --quiet || git commit -m "Add built executables for Windows, Linux, and macOS" | |
- name: Push built executables to repository | |
run: | | |
git pull --rebase | |
git push https://github.com/${{ github.repository }}.git HEAD:main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |