Skip to content

add more debug steps (print out requirements.txt) #70

add more debug steps (print out requirements.txt)

add more debug steps (print out requirements.txt) #70

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: Build executable as directory for Linux
run: |
poetry run pyinstaller --name orion --onedir --add-data "orion_cli/services/*.py:orion_cli/services" orion_cli/cli.py
- name: Rename output directory
run: |
mv dist/orion dist/orion_linux
- name: Zip the output directory
run: |
cd dist && zip -r orion_linux.zip orion_linux
- name: Upload zipped executable
uses: actions/upload-artifact@v2
with:
name: orion_linux
path: dist/orion_linux.zip
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: Build executable as directory
run: |
poetry run pyinstaller --name orion --onedir --add-data "orion_cli/services/*.py:orion_cli/services" orion_cli/cli.py
- name: Rename output directory
run: |
mv dist/orion dist/orion_intel
- name: Zip the output directory
run: |
cd dist && zip -r orion_intel.zip orion_intel
- name: Upload zipped executable
uses: actions/upload-artifact@v2
with:
name: orion_intel
path: dist/orion_intel.zip
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
uses: snok/install-poetry@v1
- name: Export dependencies to requirements.txt
run: |
poetry export -f requirements.txt --output requirements.txt --without-hashes
echo "Contents of requirements.txt before sed:"
cat requirements.txt
sed '/; python_version/ s/; python_version.*//' requirements.txt > requirements_no_version.txt
echo "Contents of requirements_no_version.txt:"
cat requirements_no_version.txt
- name: Install Miniforge and Mamba
run: |
curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh -b -p ~/miniforge3
source ~/miniforge3/etc/profile.d/conda.sh
conda init bash
conda activate
- name: Create and activate conda environment
run: |
source ~/miniforge3/etc/profile.d/conda.sh
mamba create -n orion-env -y python=3.11
conda activate orion-env
- name: Install dependencies with Mamba
run: |
source ~/miniforge3/etc/profile.d/conda.sh
conda activate orion-env
mamba install -y --file requirements_no_version.txt
mamba install -y pyinstaller
- name: List installed packages
run: |
source ~/miniforge3/etc/profile.d/conda.sh
conda activate orion-env
python -m pip list --format=freeze > installed-packages.txt
- name: Print Conda environment paths and info
run: |
source ~/miniforge3/etc/profile.d/conda.sh
conda activate orion-env
echo "Conda Environment Paths:"
conda info --envs
echo "Conda Environment Info:"
conda list
echo "Site-packages directory:"
python -c "import site; print(site.getsitepackages())"
echo "List of all files in site-packages:"
ls -lR $(python -c "import site; print(site.getsitepackages()[0])")
echo "List of dynamic libraries in the Conda environment:"
find $CONDA_PREFIX/lib -name "*.dylib"
echo "List of all shared objects in site-packages:"
find $(python -c "import site; print(site.getsitepackages()[0])") -name "*.so"
echo "PyInstaller hook directory:"
ls -l $CONDA_PREFIX/lib/python3.11/site-packages/_pyinstaller_hooks_contrib/hooks/stdhooks
- name: Generate PyInstaller command
id: pyinstaller_cmd
run: |
INSTALL_PATH=$(python -c "import site; print(site.getsitepackages()[0])")
CMD="pyinstaller --name orion --onedir --add-data 'orion_cli/services/*.py:orion_cli/services'"
while IFS= read -r line; do
PACKAGE=$(echo $line | cut -d '=' -f 1)
CMD="$CMD --copy-metadata $PACKAGE --collect-all $PACKAGE"
done < installed-packages.txt
CMD="$CMD orion_cli/cli.py"
echo "PyInstaller command: $CMD"
echo "COMMAND=$CMD" >> $GITHUB_ENV
- name: Build executable as directory for Apple Silicon macOS
run: |
source ~/miniforge3/etc/profile.d/conda.sh
conda activate orion-env
eval $COMMAND
- name: Rename output directory
run: |
mv dist/orion dist/orion_arm
- name: Zip the output directory
run: |
cd dist && zip -r orion_arm.zip orion_arm
- name: Upload zipped executable
uses: actions/upload-artifact@v2
with:
name: orion_arm
path: dist/orion_arm.zip
build-windows:
runs-on: windows-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: |
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
shell: powershell
- name: Add Poetry to PATH
run: |
$env:Path += ";C:\Users\runneradmin\AppData\Roaming\Python\Scripts"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [EnvironmentVariableTarget]::Process)
C:\Users\runneradmin\AppData\Roaming\Python\Scripts\poetry --version
shell: powershell
- name: Install dependencies
run: |
C:\Users\runneradmin\AppData\Roaming\Python\Scripts\poetry install
C:\Users\runneradmin\AppData\Roaming\Python\Scripts\poetry add pyinstaller
shell: powershell
- name: Build executable as directory for Windows
run: |
C:\Users\runneradmin\AppData\Roaming\Python\Scripts\poetry run pyinstaller --name orion --onedir --add-data "orion_cli/services/*.py;orion_cli/services" orion_cli/cli.py
shell: powershell
- name: Rename output directory
run: |
Rename-Item -Path dist\orion -NewName orion_windows
shell: powershell
- name: Zip the output directory
run: |
Compress-Archive -Path dist\orion_windows -DestinationPath dist\orion_windows.zip
shell: powershell
- name: Upload zipped executable
uses: actions/upload-artifact@v2
with:
name: orion_windows
path: dist\orion_windows.zip
release:
needs: [build-linux, build-macos-intel, build-macos-arm, build-windows]
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: Download Windows artifact
uses: actions/download-artifact@v2
with:
name: orion_windows
path: ./release_artifacts/orion_windows
- name: Upload to GitHub Releases
uses: softprops/action-gh-release@v1
with:
files: |
./release_artifacts/orion_linux/orion_linux.zip
./release_artifacts/orion_intel/orion_intel.zip
./release_artifacts/orion_arm/orion_arm.zip
./release_artifacts/orion_windows/orion_windows.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}