experiment with saving build results as artifacts #9
Workflow file for this run
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
# SPDX-FileCopyrightText: TNG Technology Consulting GmbH <https://www.tngtech.com> | |
# | |
# SPDX-License-Identifier: Apache-2.0 | |
name: Build Executable | |
on: | |
push: | |
branches: | |
- main | |
- feat-improve-distribution # For testing purposes, needs to be removed before merge | |
- 'renovate/*' | |
pull_request: | |
types: [opened, reopened, synchronize] | |
workflow_dispatch: | |
jobs: | |
build-executable: | |
runs-on: ${{ matrix.os }} | |
if: | | |
!(github.event_name == 'pull_request' && startsWith(github.head_ref, 'renovate/')) | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: ['3.13'] | |
include: | |
- os: ubuntu-latest | |
art-name: ubuntu-executable | |
art-path: dist/cli | |
- os: windows-latest | |
art-name: windows-executable | |
art-path: dist/cli.exe | |
- os: macos-latest | |
art-name: macos-executable | |
art-path: dist/cli | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv and set the python version | |
uses: astral-sh/setup-uv@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
enable-cache: true | |
cache-dependency-glob: "uv.lock" | |
- name: Install the project | |
run: uv sync --locked | |
- name: Install PyInstaller | |
run: uv pip install pyinstaller | |
- name: Find site package directory | |
run: echo "sitepackage_dir=$(python -c "import site; print(site.getsitepackages()[-1])")" >> $GITHUB_ENV | |
# On ubuntu/macos, getsitepackages returns a list with only one element, on windows a list with two elements is returned where the second is correct. | |
- name: Build executable | |
run: uv run pyinstaller --onefile --add-data "$sitepackage_dir/license_expression/data/scancode-licensedb-index.json:./license_expression/data" --add-data "$sitepackage_dir/spdx_tools/spdx/parser/tagvalue/*:./spdx_tools/spdx/parser/tagvalue" src/opossum_lib/cli.py | |
- name: Test executable | |
run: dist/cli --help | |
- name: Upload executable artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.art-name }} | |
path: ${{ matrix.art-path }} |