Cog-Creators/Red-DiscordBot

View on GitHub
.github/workflows/run_pip_compile.yaml

Summary

Maintainability
Test Coverage
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