Add workflow job to test built binaries #61
This file contains hidden or 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 | |
| on: | |
| workflow_call: | |
| inputs: | |
| version: | |
| type: string | |
| required: false | |
| default: '' | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| jobs: | |
| lint: | |
| name: Lint and Type Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10.6' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: latest | |
| enable-cache: true | |
| - name: Install dependencies | |
| shell: bash | |
| run: uv sync --group dev | |
| - name: Run ruff linter | |
| shell: bash | |
| run: uv run ruff check . | |
| - name: Run ruff formatter check | |
| shell: bash | |
| run: uv run ruff format --check . | |
| - name: Run basedpyright type checker | |
| shell: bash | |
| run: uv run basedpyright | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10.6' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: latest | |
| enable-cache: true | |
| - name: Install dependencies | |
| shell: bash | |
| run: uv sync --group dev | |
| - name: Run tests | |
| run: uv run pytest tests/ -v | |
| python-package: | |
| name: Python Package | |
| needs: | |
| - lint | |
| - test | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| packages: write | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10.6' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: latest | |
| enable-cache: true | |
| - name: Build wheel | |
| shell: bash | |
| run: | | |
| uv build | |
| - name: Upload wheel artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: python-wheel | |
| path: dist/*.whl | |
| retention-days: 90 | |
| - name: Upload sdist artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: python-sdist | |
| path: dist/*.tar.gz | |
| retention-days: 90 | |
| build-binaries: | |
| name: ${{ matrix.platform }} Binary | |
| needs: | |
| - lint | |
| - test | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - runner: ubuntu22-2cpu-amd64 | |
| platform: linux-amd64 | |
| - runner: ubuntu22-2cpu-arm64 | |
| platform: linux-arm64 | |
| - runner: macos-latest | |
| platform: macos-arm64 | |
| - runner: windows-latest | |
| platform: windows | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10.6' | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| version: latest | |
| enable-cache: true | |
| - name: Install dependencies | |
| shell: bash | |
| run: uv sync | |
| - name: Build binary | |
| shell: bash | |
| run: | | |
| uv run pyinstaller src/lumos_cli/__main__.py | |
| if [[ "${{ matrix.platform }}" == "windows" ]]; then | |
| mv ./dist/__main__/__main__.exe ./dist/__main__/lumos.exe | |
| else | |
| mv ./dist/__main__/__main__ ./dist/__main__/lumos | |
| fi | |
| VERSION="${{ inputs.version || 'dev' }}" | |
| tar -czf lumos-${{ matrix.platform }}-${VERSION}.tar.gz -C ./dist/__main__ . | |
| - name: Upload artifacts to workflow | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: lumos-${{ matrix.platform }}-${{ inputs.version || 'dev' }} | |
| path: lumos-${{ matrix.platform }}-${{ inputs.version || 'dev' }}.tar.gz | |
| retention-days: 90 | |
| test-binaries: | |
| name: Test ${{ matrix.platform }} Binary | |
| needs: build-binaries | |
| runs-on: ${{ matrix.runner }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - runner: ubuntu22-2cpu-amd64 | |
| platform: linux-amd64 | |
| - runner: ubuntu22-2cpu-arm64 | |
| platform: linux-arm64 | |
| - runner: macos-latest | |
| platform: macos-arm64 | |
| - runner: windows-latest | |
| platform: windows | |
| steps: | |
| - name: Download binary artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: lumos-${{ matrix.platform }}-${{ inputs.version || 'dev' }} | |
| - name: Extract and test binary (Unix) | |
| if: matrix.platform != 'windows' | |
| shell: bash | |
| run: | | |
| tar -xzf lumos-${{ matrix.platform }}-${{ inputs.version || 'dev' }}.tar.gz | |
| chmod +x lumos | |
| ./lumos --version | |
| - name: Extract and test binary (Windows) | |
| if: matrix.platform == 'windows' | |
| shell: pwsh | |
| run: | | |
| tar -xzf lumos-${{ matrix.platform }}-${{ inputs.version || 'dev' }}.tar.gz | |
| .\lumos.exe --version |