name: Generate requirements files with pip-compile. on: workflow_dispatch: jobs: generate_requirements: name: Generate requirements files for ${{ matrix.os }} platform. runs-on: ${{ matrix.os }} strategy: matrix: os: - ubuntu-latest - windows-latest - macos-latest steps: - name: Checkout the repository. uses: actions/checkout@v3 - name: Set up Python 3.8. uses: actions/setup-python@v4 with: python-version: | 3.11 3.10 3.9 3.8 - name: Install dependencies on Linux/macOS if: matrix.os != 'windows-latest' run: | python3.11 -m pip install -U pip pip-tools python3.10 -m pip install -U pip pip-tools python3.9 -m pip install -U pip pip-tools python3.8 -m pip install -U pip pip-tools - name: Install dependencies on Windows if: matrix.os == 'windows-latest' run: | py -3.11 -m pip install -U pip pip-tools py -3.10 -m pip install -U pip pip-tools py -3.9 -m pip install -U pip pip-tools py -3.8 -m pip install -U pip pip-tools - name: Generate requirements files. id: compile_requirements run: | python .github/workflows/scripts/compile_requirements.py - name: Upload requirements files. uses: actions/upload-artifact@v3 with: name: ${{ steps.compile_requirements.outputs.sys_platform }} path: requirements/${{ steps.compile_requirements.outputs.sys_platform }}-*.txt merge_requirements: name: Merge requirements files. needs: generate_requirements runs-on: ubuntu-latest steps: - name: Checkout the repository. uses: actions/checkout@v3 - name: Set up Python 3.8. uses: actions/setup-python@v4 with: python-version: '3.8' - name: Install dependencies run: | python -m pip install -U "packaging>=22.0" - name: Download Windows requirements. uses: actions/download-artifact@v3 with: name: win32 path: requirements - name: Download Linux requirements. uses: actions/download-artifact@v3 with: name: linux path: requirements - name: Download macOS requirements. uses: actions/download-artifact@v3 with: name: darwin path: requirements - name: Merge requirements files. run: | python .github/workflows/scripts/merge_requirements.py - name: Upload merged requirements files. uses: actions/upload-artifact@v3 with: name: merged path: | requirements/base.txt requirements/extra-*.txt