diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d59dac2..8e7bb95 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,3 +40,4 @@ jobs: - detect-file-changes uses: ./.github/workflows/pytest.yml if: needs.detect-file-changes.outputs.oom_investigate == 'true' + secrets: inherit diff --git a/.github/workflows/pytest.yml b/.github/workflows/pytest.yml index 0c417a7..ddc3680 100644 --- a/.github/workflows/pytest.yml +++ b/.github/workflows/pytest.yml @@ -1,51 +1,143 @@ -name: Run Unit Tests on Multiple Python Versions + +name: Run Unit Tests on Multiple Python Versions and Distributions on: workflow_call: jobs: - pytest_legacy_python: - name: python:${{ matrix.python-version }} - runs-on: ubuntu-20.04 - container: - image: python:${{ matrix.python-version }}-buster - strategy: - fail-fast: true - matrix: - python-version: ["2.7", "3.6"] + build_and_push: + runs-on: ubuntu-latest steps: - - name: Checkout Code - uses: actions/checkout@v4 + - name: Checkout code + uses: actions/checkout@v3 - - name: Display Python version - run: python -c "import sys; print(sys.version)" + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 - - name: Test with pytest - run: | - pip install pytest pytest-cov - pytest tests/ + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} + + - name: Build and push Docker images + run: | + docker-compose -f docker-compose.yml build + docker-compose -f docker-compose.yml config --services | while read service; do + docker tag "${service}:latest" "lukeshirnia/out-of-memory:${service}-latest" + docker push "lukeshirnia/out-of-memory:${service}-latest" + done - pytest_latest_python: - name: ${{ matrix.os }} ${{ matrix.python-version }} - runs-on: ${{ matrix.os }} + test-python-versions: + needs: build_and_push + runs-on: ubuntu-latest strategy: - fail-fast: true matrix: - os: [ubuntu-latest] - python-version: ["3.11"] + python-version: ["python27", "python36", "python310"] steps: - - name: Checkout Code - uses: actions/checkout@v4 + - name: Checkout code + uses: actions/checkout@v3 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} + - name: Run pytest + run: docker compose run --rm ${{ matrix.python-version }}-pytest pytest -v --ignore=tests/test_system.py - - name: Display Python version - run: python -c "import sys; print(sys.version)" + test-systems: + needs: build_and_push + runs-on: ubuntu-latest + strategy: + matrix: + distro: ["amazonlinux", "centos7", "osx"] + steps: + - name: Checkout code + uses: actions/checkout@v3 - - name: Test with pytest + - name: Setup test command + id: setup run: | - pip install pytest pytest-cov - pytest tests/ + if [ "${{ matrix.distro }}" == "osx-pytest" ]; then + echo "::set-output name=command::python -m pytest" + else + echo "::set-output name=command::pytest" + fi + + - name: Run system tests + run: docker compose run --rm ${{ matrix.distro }}-pytest ${{ steps.setup.outputs.command }} -v tests/test_system.py -p no:cacheprovider + + +# name: Run Unit Tests on Multiple Python Versions + +# on: +# workflow_call: + +# jobs: +# pytest_legacy_python_version: +# name: python:${{ matrix.python-version }} +# runs-on: ubuntu-20.04 +# container: +# image: python:${{ matrix.python-version }}-buster +# strategy: +# fail-fast: true +# matrix: +# python-version: ["2.7", "3.6"] +# steps: +# - name: Checkout Code +# uses: actions/checkout@v4 + +# - name: Display Python version +# run: python -c "import sys; print(sys.version)" + +# - name: Test with pytest +# run: | +# pip install pytest pytest-cov +# pytest tests/ + +# pytest_latest_python_version: +# name: ${{ matrix.os }} ${{ matrix.python-version }} +# runs-on: ${{ matrix.os }} +# strategy: +# fail-fast: true +# matrix: +# os: [ubuntu-latest] +# python-version: ["3.11"] +# steps: +# - name: Checkout Code +# uses: actions/checkout@v4 + +# - name: Set up Python +# uses: actions/setup-python@v4 +# with: +# python-version: ${{ matrix.python-version }} + +# - name: Display Python version +# run: python -c "import sys; print(sys.version)" + +# - name: Test with pytest +# run: | +# pip install pytest pytest-cov +# pytest tests/ + +# pytest_distribution_tests: +# name: ${{ matrix.os }} ${{ matrix.python-version }} +# runs-on: ${{ matrix.os }} +# strategy: +# fail-fast: true +# matrix: +# os: [ubuntu-latest] +# python-version: ["3.11"] +# steps: +# - name: Checkout Code +# uses: actions/checkout@v4 + +# - name: Set up Python +# uses: actions/setup-python@v4 +# with: +# python-version: ${{ matrix.python-version }} + +# - name: Display Python version +# run: python -c "import sys; print(sys.version)" + +# - name: Test with pytest +# run: | +# pip install pytest pytest-cov +# pytest tests/distribution_tests/ + diff --git a/docker-compose.yml b/docker-compose.yml index bd4f087..4a87c64 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,7 +39,7 @@ services: IMAGE: amazonlinux PIP: pip3 PYTHON_VERSION: 3 - image: amazonlinux + image: amazonlinux-pytest volumes: - .:/app @@ -50,7 +50,7 @@ services: IMAGE: centos/python-27-centos7 PIP: pip PYTHON_VERSION: 2 - image: centos7 + image: centos7-pytest volumes: - .:/app @@ -62,6 +62,6 @@ services: IMAGE: sickcodes/docker-osx PIP: python -m pip PYTHON_VERSION: 3 - image: osx + image: osx-pytest volumes: - .:/app