diff --git a/.github/workflows/docs-rebuild.yaml b/.github/workflows/docs-rebuild.yaml index 826d7265..0a6415ba 100644 --- a/.github/workflows/docs-rebuild.yaml +++ b/.github/workflows/docs-rebuild.yaml @@ -1,4 +1,4 @@ -name: docs-rebuild-deploy +name: Documentation build & deploy trigger on: push: diff --git a/.github/workflows/images.yaml b/.github/workflows/images.yaml index 1f605d1c..a8a0c9bb 100644 --- a/.github/workflows/images.yaml +++ b/.github/workflows/images.yaml @@ -1,3 +1,5 @@ +name: Dependencies images + on: push: tags: @@ -10,7 +12,7 @@ on: jobs: generate-matrix: name: Generate build matrix - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} steps: @@ -22,7 +24,7 @@ jobs: build-and-push-arena-images: needs: [generate-matrix] - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 if: ${{ needs.generate-matrix.outputs.matrix != '[]' }} strategy: fail-fast: true @@ -31,7 +33,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Login to GHCR uses: docker/login-action@v2 @@ -76,7 +78,7 @@ jobs: build-and-push-agents-images: if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') needs: [build-and-push-arena-images] - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - name: Build and Push Agents Images run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d31a09c9..b69e3db7 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -1,3 +1,5 @@ +name: Python package Pypi release + on: push: tags: @@ -8,7 +10,7 @@ on: jobs: release: - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 diff --git a/.github/workflows/reusable_agents_unit_tests.yaml b/.github/workflows/reusable_agents_unit_tests.yaml new file mode 100644 index 00000000..999ea9e1 --- /dev/null +++ b/.github/workflows/reusable_agents_unit_tests.yaml @@ -0,0 +1,16 @@ +name: Reusable agents unit tests + +on: + workflow_call: + inputs: + arena_branch: + required: true + type: string + +jobs: + reusable_agents_unit_tests: + name: Reusable agents unit tests + uses: diambra/agents/.github/workflows/reusable-test.yaml@main + with: + arena_requirement_specifier: 'git+https://github.com/diambra/arena.git@${{ inputs.arena_branch }}#egg=' + agents_ref: 'main' diff --git a/.github/workflows/reusable_arena_installation_tests.yaml b/.github/workflows/reusable_arena_installation_tests.yaml new file mode 100644 index 00000000..14e58334 --- /dev/null +++ b/.github/workflows/reusable_arena_installation_tests.yaml @@ -0,0 +1,68 @@ +name: Reusable arena installation tests + +on: + workflow_call: + inputs: + arena_branch: + required: true + type: string + package: + required: false + type: string + +jobs: + reusable_arena_installation_tests: + name: Reusable arena installation tests + runs-on: ubuntu-22.04 + strategy: + matrix: + python-version: ['3.7', '3.8', '3.9', '3.10'] + installation-option: ['basic', 'stable-baselines', 'stable-baselines3', 'ray-rllib'] + python-packages-version: ['default', 'latest'] + + steps: + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Setup environment configuration (default or latest) + run: | + if [ "${{ matrix.python-packages-version }}" == 'latest' ]; then + python3 -m pip install -U pip + python3 -m pip install -U setuptools + fi + pip list + + - name: Pre-install packages needed because of various deprecations deprecation + run: | + python3 -m pip install -U wheel # Deprecated setup.py installation need to move to pyproject.toml + python3 -m pip install wheel==0.38.4 # Deprecated format of gym==0.21 setup.py + python3 -m pip install setuptools==66.0.0 # Deprecated format of gym==0.21 setup.py + pip list + + - name: Define package path + id: set_package_path + run: | + if [ "${{ inputs.package }}" == "yes" ]; then + echo "package_path=diambra-arena" >> "$GITHUB_ENV" + else + echo "package_path=." >> "$GITHUB_ENV" + fi + + - name: Checkout selected branch + if: ${{ inputs.package }} != "yes" + uses: actions/checkout@v3 + with: + ref: "${{ inputs.arena_branch }}" + + - name: Install Package via pip + if: ( ( ( matrix.installation-option == 'stable-baselines' || matrix.installation-option == 'basic' ) && matrix.python-version == '3.7' ) || + ( matrix.installation-option != 'stable-baselines' && matrix.python-version != '3.7' ) ) + run: | + if [ "${{ matrix.installation-option }}" == "basic" ]; then + pip install ${{ env.package_path }} + else + pip install ${{ env.package_path }}[${{ matrix.installation-option }}] + fi + pip list diff --git a/.github/workflows/reusable_arena_unit_tests.yaml b/.github/workflows/reusable_arena_unit_tests.yaml new file mode 100644 index 00000000..3c51bcae --- /dev/null +++ b/.github/workflows/reusable_arena_unit_tests.yaml @@ -0,0 +1,45 @@ +name: Reusable arena unit tests + +on: + workflow_call: + inputs: + arena_branch: + required: true + type: string + +jobs: + reusable_arena_unit_tests: + name: Reusable arena unit tests + runs-on: ubuntu-22.04 + strategy: + matrix: + python_version: ['3.7', '3.8', '3.9', '3.10'] + + steps: + - name: Set up Python ${{ matrix.python_version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python_version }} + + - name: Pre-install pinned packages for deprecations + run: | + python3 -m pip install wheel==0.38.4 setuptools==66.0.0 + pip list + + - name: Checkout target branch + uses: actions/checkout@v3 + with: + ref: "${{ inputs.arena_branch }}" + + - name: Install tests dependencies + run: | + python3 -m pip install .["tests"] + pip list + + - name: Run tests + run: | + pytest tests/test_gym_settings.py + pytest tests/test_wrappers_settings.py + pytest tests/test_recording_settings.py + pytest tests/test_random.py + pytest tests/test_speed.py diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml deleted file mode 100644 index a71e673f..00000000 --- a/.github/workflows/test.yaml +++ /dev/null @@ -1,18 +0,0 @@ -on: - pull_request: {} - -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: "3.x" - - run: python3 -m pip install wheel==0.38.4 - - run: python3 -m pip install .["tests"] - - run: pytest tests/test_gym_settings.py - - run: pytest tests/test_wrappers_settings.py - - run: pytest tests/test_recording_settings.py - - run: pytest tests/test_random.py - - run: pytest tests/test_speed.py diff --git a/.github/workflows/test_agents.yaml b/.github/workflows/test_agents.yaml deleted file mode 100644 index e3abcf93..00000000 --- a/.github/workflows/test_agents.yaml +++ /dev/null @@ -1,9 +0,0 @@ -on: - pull_request: {} - -jobs: - test: - uses: diambra/agents/.github/workflows/reusable-test.yaml@main - with: - arena_requirement_specifier: 'git+https://github.com/diambra/arena.git@${{ github.ref }}#egg=' - agents_ref: 'main' diff --git a/.github/workflows/test_main_branch.yaml b/.github/workflows/test_main_branch.yaml new file mode 100644 index 00000000..e51b0204 --- /dev/null +++ b/.github/workflows/test_main_branch.yaml @@ -0,0 +1,27 @@ +name: Main branch tests + +on: + #push: + # branches: + # - main + #schedule: + # - cron: '30 2 * * *' + workflow_dispatch: + pull_request: + +jobs: + arena-unit-tests: + name: Arena unit tests + uses: ./.github/workflows/reusable_arena_unit_tests.yaml + with: + arena_branch: 'main' + agents-unit-tests: + name: Agents unit tests + uses: ./.github/workflows/reusable_agents_unit_tests.yaml + with: + arena_branch: 'main' + arena-installation-tests: + name: Arena installation tests + uses: ./.github/workflows/reusable_arena_installation_tests.yaml + with: + arena_branch: 'main' \ No newline at end of file diff --git a/setup.py b/setup.py index e35f0fed..b0fa9761 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ install_requires=[ 'pip>=21', 'importlib-metadata<=4.12.0; python_version <= "3.7"', # problem with gym for importlib-metadata==5.0.0 and python <=3.7 - 'setuptools<=66.0.0', # Required until we can upgrade to gym >= 0.22.0 + 'setuptools', 'distro>=1', 'gym<=0.21.0', 'inputs',