Skip to content

Debug GH actions

Debug GH actions #33

Workflow file for this run

name: Build PyQt5 App
on:
push:
branches: [ main ]
env:
POETRY_VERSION: 1.4.1
PACKAGE_NAME: metaanalyser
PACKAGE_VERSION: 0.1.0
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: [3.11.1]
steps:
- name: Checkout code
uses: actions/checkout@v3
# Setup Python environment
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
# Install system libraries for Linux
- name: Install Linux system libraries
if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y xvfb x11-utils libxkbcommon-x11-0
# Install Poetry
- name: Install Poetry on Linux
if: runner.os == 'Linux'
run: |
curl -sSL https://install.python-poetry.org | python3 - --version ${{ env.POETRY_VERSION }}
echo "$HOME/.local/bin" >> $GITHUB_PATH
- name: Install Poetry on macOS
if: runner.os == 'macOS'
run: |
curl -sSL https://install.python-poetry.org | python3 - --version ${{ env.POETRY_VERSION }}
echo "$HOME/Library/Application Support/pypoetry/venv/bin" >> $GITHUB_PATH
- name: Install Poetry on Windows
if: runner.os == 'Windows'
run: |
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python3 - --version ${{ env.POETRY_VERSION }}
echo "$env:APPDATA\Python\Scripts" | Out-File -FilePath $env:GITHUB_PATH -Append
# Install dependencies
- name: Install dependencies
run: |
poetry install
# Install Chrome for Playwright (Mac/Linux)
- name: Install Chrome for Playwright (Mac/Linux)
if: runner.os != 'Windows'
run: |
export PLAYWRIGHT_BROWSERS_PATH=0
poetry run playwright install chromium
- name: Install Chrome for Playwright (Windows)
if: runner.os == 'Windows'
run: |
$env:PLAYWRIGHT_BROWSERS_PATH="0"
poetry run playwright install chromium
# Build PyQt5 app binary with PyInstaller
- name: Build with PyInstaller
run: |
poetry run pyinstaller --onefile --name ${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }} app/main.py
# Package the binary
- name: Package Binary on Mac/Linux
if: runner.os != 'Windows'
run: tar czvf ${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}_${{ runner.os }}.tar.gz -C dist ${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}
- name: Package Binary on Windows
if: runner.os == 'Windows'
run: Compress-Archive -Path .\dist\${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}.exe -DestinationPath .\${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}_windows.zip
# Upload the packaged binary as an artifact for Mac/Linux
- name: Upload Mac/Linux Binary as Artifact
if: runner.os != 'Windows'
uses: actions/upload-artifact@v2
with:
name: ${{ runner.os }}-binary
path: '*.tar.gz'
# Upload the packaged binary as an artifact for Windows
- name: Upload Windows Binary as Artifact
if: runner.os == 'Windows'
uses: actions/upload-artifact@v2
with:
name: windows-binary
path: '*.zip'
release:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Download all compiled artifacts
uses: actions/download-artifact@v2
with:
path: ./artifacts
- name: Create Public Release
run: |
RESPONSE=$(curl -s -X POST \
-H "Authorization: token ${{ secrets.GH_TOKEN }}" \
-d '{
"tag_name": "v${{ env.PACKAGE_VERSION }}",
"target_commitish": "main",
"name": "Release v${{ env.PACKAGE_VERSION }}",
"body": "First public release.",
"draft": true,
"prerelease": true
}' \
https://api.github.com/repos/jordantgh/meta-analyser-rc/releases)
echo "Full API Response: $RESPONSE"
UPLOAD_URL=$(echo "$RESPONSE" | jq -r '.upload_url')
echo "UPLOAD_URL=${UPLOAD_URL}" >> $GITHUB_ENV
# Upload assets to the public repo
- name: Upload Public Release Asset for Linux
run: |
UPLOAD_URL="${UPLOAD_URL/\{?name,label\}/?name=${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}_Linux.tar.gz}"
curl -s -X POST "$UPLOAD_URL" \
-H "Authorization: token ${{ secrets.GH_TOKEN }}" \
-F "file=@./artifacts/Linux-binary/${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}_Linux.tar.gz"
- name: Upload Public Release Asset for Mac
run: |
UPLOAD_URL="${UPLOAD_URL/\{?name,label\}/?name=${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}_macOS.tar.gz}"
curl -s -X POST "$UPLOAD_URL" \
-H "Authorization: token ${{ secrets.GH_TOKEN }}" \
-H "Content-Type: application/gzip" \
-F "file=@./artifacts/macOS-binary/${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}_macOS.tar.gz"
- name: Upload Public Release Asset for Windows
run: |
UPLOAD_URL="${UPLOAD_URL/\{?name,label\}/?name=${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}_windows.tar.gz}"
curl -s -X POST "$UPLOAD_URL" \
-H "Authorization: token ${{ secrets.GH_TOKEN }}" \
-H "Content-Type: application/zip" \
-F "file=@./artifacts/windows-binary/${{ env.PACKAGE_NAME }}_${{ env.PACKAGE_VERSION }}_windows.zip"