Skip to content

Build and Release

Build and Release #37

name: Build and Release
on:
push:
tags:
- 'v*.*.*'
jobs:
build-linux:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python3 -
- name: Install dependencies
run: |
poetry install
poetry add pyinstaller
- name: Generate spec file and build executable
run: |
poetry run pyinstaller --name orion_linux --onefile --add-data "orion_cli/services/*.py:orion_cli/services" orion_cli/cli.py
- name: Upload Linux executable
uses: actions/upload-artifact@v2
with:
name: orion_linux
path: dist/orion_linux
build-macos-intel:
runs-on: macos-13
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: Install Poetry
uses: snok/install-poetry@v1
- name: Install dependencies
run: |
poetry install
poetry add pyinstaller
- name: Generate initial spec file and build executable
run: |
poetry run pyinstaller --name orion_intel --onefile --add-data "orion_cli/services/*.py:orion_cli/services" orion_cli/cli.py
- name: Modify spec file
run: |
sed -i '' 's/optimize=0/optimize=2/' orion_intel.spec
sed -i '' 's/strip=False/strip=True/' orion_intel.spec
sed -i '' 's/upx=True/upx=False/' orion_intel.spec
- name: Rebuild executable using modified spec file
run: |
poetry run pyinstaller orion_intel.spec
- name: Upload Intel macOS executable
uses: actions/upload-artifact@v2
with:
name: orion_intel
path: dist/orion_intel
- name: Upload PyInstaller spec file
uses: actions/upload-artifact@v2
with:
name: pyinstaller-spec-file
path: orion_intel.spec
build-macos-arm:
runs-on: macos-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: Install Poetry
run: |
curl -sSL https://install.python-poetry.org | python3 -
- name: Install dependencies
run: |
poetry install
poetry add pyinstaller
- name: Generate spec file and build executable for Apple Silicon macOS
run: |
poetry run pyinstaller --name orion_arm --onefile --add-data "orion_cli/services/*.py:orion_cli/services" orion_cli/cli.py
- name: Upload Apple Silicon macOS executable
uses: actions/upload-artifact@v2
with:
name: orion_arm
path: dist/orion_arm
release:
needs: [build-linux, build-macos-intel, build-macos-arm]
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Download Linux artifact
uses: actions/download-artifact@v2
with:
name: orion_linux
path: ./release_artifacts/orion_linux
- name: Download Intel macOS artifact
uses: actions/download-artifact@v2
with:
name: orion_intel
path: ./release_artifacts/orion_intel
- name: Download Apple Silicon macOS artifact
uses: actions/download-artifact@v2
with:
name: orion_arm
path: ./release_artifacts/orion_arm
- name: Upload to GitHub Releases
uses: softprops/action-gh-release@v1
with:
files: |
./release_artifacts/orion_linux/orion_linux
./release_artifacts/orion_intel/orion_intel
./release_artifacts/orion_arm/orion_arm
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}