diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 921c235d4c..bea0fc4163 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,16 +34,16 @@ env: jobs: - lint: - # Ref: https://github.com/rdmorganiser/.github/blob/main/.github/workflows/_lint.yml - uses: rdmorganiser/.github/.github/workflows/_lint.yml@main + # lint: + # # Ref: https://github.com/rdmorganiser/.github/blob/main/.github/workflows/_lint.yml + # uses: rdmorganiser/.github/.github/workflows/_lint.yml@main test: runs-on: ubuntu-24.04 strategy: matrix: - python-version: ['3.8', '3.12'] - db-backend: [mysql, postgres] + python-version: ['3.12'] + db-backend: [postgres] name: "Test (Python: ${{ matrix.python-version }}, DB: ${{ matrix.db-backend }})" needs: lint steps: @@ -67,6 +67,7 @@ jobs: - name: Install rdmo[postgres] and start postgresql run: | python -m pip install --editable .[ci,postgres] + python -m pip install pytest-repeat sudo systemctl start postgresql.service pg_isready sudo -u postgres psql --command="CREATE USER postgres_user PASSWORD 'postgres_password' CREATEDB" @@ -77,190 +78,189 @@ jobs: mkdir testing/log - name: Run package status tests first run: | - pytest rdmo/core/tests/test_package_status.py::test_package_json_and_pre_commit_versions_match \ - --nomigrations --verbose - if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' - - name: Run Tests - run: | - pytest -p randomly -p no:cacheprovider --cov --reuse-db --numprocesses=auto --dist=loadscope - env: - GITHUB_DB_BACKEND: ${{ matrix.db-backend }} - - name: Upload coverage data to coveralls.io - uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 - with: - flag-name: '${{ matrix.db-backend }}: ${{ matrix.python-version }}' - parallel: true - # end-to-end tests - - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: npm - if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' - - name: Install e2e tests dependencies - run: | - npm install - npm run build:prod - playwright install chromium - if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' - - run: mkdir screenshots - - name: Run end-to-end tests - run: pytest -p randomly -p no:cacheprovider --reuse-db --numprocesses=auto --dist=loadscope -m e2e --nomigrations - if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' - env: - DJANGO_DEBUG: True - GITHUB_DB_BACKEND: ${{ matrix.db-backend }} - - uses: actions/upload-artifact@v4 - with: - name: screenshots - path: screenshots/*.png + pytest --nomigrations --verbose --count=10 -x rdmo/core/tests/test_package_status.py if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' + # - name: Run Tests + # run: | + # pytest -p randomly -p no:cacheprovider --cov --reuse-db --numprocesses=auto --dist=loadscope + # env: + # GITHUB_DB_BACKEND: ${{ matrix.db-backend }} + # - name: Upload coverage data to coveralls.io + # uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 + # with: + # flag-name: '${{ matrix.db-backend }}: ${{ matrix.python-version }}' + # parallel: true + # # end-to-end tests + # - uses: actions/setup-node@v4 + # with: + # node-version: 18 + # cache: npm + # if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' + # - name: Install e2e tests dependencies + # run: | + # npm install + # npm run build:prod + # playwright install chromium + # if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' + # - run: mkdir screenshots + # - name: Run end-to-end tests + # run: pytest -p randomly -p no:cacheprovider --reuse-db --numprocesses=auto --dist=loadscope -m e2e --nomigrations + # if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' + # env: + # DJANGO_DEBUG: True + # GITHUB_DB_BACKEND: ${{ matrix.db-backend }} + # - uses: actions/upload-artifact@v4 + # with: + # name: screenshots + # path: screenshots/*.png + # if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres' - coveralls: - name: Indicate completion to coveralls - needs: test - if: ${{ always() }} - runs-on: ubuntu-24.04 - steps: - - name: Run Coveralls finish - uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 - with: - parallel-finished: true + # coveralls: + # name: Indicate completion to coveralls + # needs: test + # if: ${{ always() }} + # runs-on: ubuntu-24.04 + # steps: + # - name: Run Coveralls finish + # uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 + # with: + # parallel-finished: true - build-wheel: - name: Build python wheel - needs: test - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - # update the version - - name: Get short commit SHA - run: | - if [ "${{ github.event_name }}" = "pull_request" ]; then - SHA="${{ github.event.pull_request.head.sha }}" - else - SHA="${{ github.sha }}" - fi - echo "SHA=$(git rev-parse --short $SHA)" >> $GITHUB_ENV - - name: Get current version (MAJOR.MINOR.PATCH) - id: current-version - run: echo "current_version=$(grep -Po '(?<=__version__ = ")[\d\w.]+(?=")' rdmo/__init__.py)" >> $GITHUB_OUTPUT - - name: Generate new version (current version + SHA) - id: new-version - run: echo "new_version=${{ steps.current-version.outputs.current_version }}+$SHA" >> $GITHUB_OUTPUT - - name: Update version in rdmo/__init__.py - run: | - sed -i "s/__version__ = .*/__version__ = \"${{ steps.new-version.outputs.new_version }}\"/" rdmo/__init__.py - # build the webpack bundle - - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: npm - - run: npm install && npm run build:prod - # build the wheel - - uses: actions/setup-python@v5 - with: - python-version: '3.12' - cache: pip - - run: | - python -m pip install --upgrade pip build[uv] twine - pip --version - - name: Build the wheel - run: python -m build --installer=uv - - name: Check the metadata of wheel and sdist - run: python -m twine check --strict dist/* - - name: Install package from built wheel - run: python -m pip install --no-compile dist/rdmo*.whl # do not create __pycache__/*.pyc files - - name: Write info to step summary - run: | - { - echo -e "# ✓ Wheel successfully built (v${{ steps.new-version.outputs.new_version }})\n\n" - echo '
Information about installed wheel' - echo -e "\n\`\`\`console" - echo "$ python -m pip show --files --verbose rdmo" - python -m pip show --files --verbose rdmo - echo -e "\`\`\`\n
" - } >> $GITHUB_STEP_SUMMARY - - name: Upload wheel as artifact - uses: actions/upload-artifact@v4 - with: - name: wheel - path: dist/rdmo*.whl - if-no-files-found: error - retention-days: 30 + # build-wheel: + # name: Build python wheel + # needs: test + # runs-on: ubuntu-24.04 + # steps: + # - uses: actions/checkout@v4 + # # update the version + # - name: Get short commit SHA + # run: | + # if [ "${{ github.event_name }}" = "pull_request" ]; then + # SHA="${{ github.event.pull_request.head.sha }}" + # else + # SHA="${{ github.sha }}" + # fi + # echo "SHA=$(git rev-parse --short $SHA)" >> $GITHUB_ENV + # - name: Get current version (MAJOR.MINOR.PATCH) + # id: current-version + # run: echo "current_version=$(grep -Po '(?<=__version__ = ")[\d\w.]+(?=")' rdmo/__init__.py)" >> $GITHUB_OUTPUT + # - name: Generate new version (current version + SHA) + # id: new-version + # run: echo "new_version=${{ steps.current-version.outputs.current_version }}+$SHA" >> $GITHUB_OUTPUT + # - name: Update version in rdmo/__init__.py + # run: | + # sed -i "s/__version__ = .*/__version__ = \"${{ steps.new-version.outputs.new_version }}\"/" rdmo/__init__.py + # # build the webpack bundle + # - uses: actions/setup-node@v4 + # with: + # node-version: 18 + # cache: npm + # - run: npm install && npm run build:prod + # # build the wheel + # - uses: actions/setup-python@v5 + # with: + # python-version: '3.12' + # cache: pip + # - run: | + # python -m pip install --upgrade pip build[uv] twine + # pip --version + # - name: Build the wheel + # run: python -m build --installer=uv + # - name: Check the metadata of wheel and sdist + # run: python -m twine check --strict dist/* + # - name: Install package from built wheel + # run: python -m pip install --no-compile dist/rdmo*.whl # do not create __pycache__/*.pyc files + # - name: Write info to step summary + # run: | + # { + # echo -e "# ✓ Wheel successfully built (v${{ steps.new-version.outputs.new_version }})\n\n" + # echo '
Information about installed wheel' + # echo -e "\n\`\`\`console" + # echo "$ python -m pip show --files --verbose rdmo" + # python -m pip show --files --verbose rdmo + # echo -e "\`\`\`\n
" + # } >> $GITHUB_STEP_SUMMARY + # - name: Upload wheel as artifact + # uses: actions/upload-artifact@v4 + # with: + # name: wheel + # path: dist/rdmo*.whl + # if-no-files-found: error + # retention-days: 30 - dev-setup: - # Ref: structlog (MIT licensed) - name: "Test dev setup on ${{ matrix.os }}" - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macos-latest] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - cache: pip - - run: python -Im pip install --editable .[dev] - - run: python -Ic 'import rdmo; print(rdmo.__version__)' + # dev-setup: + # # Ref: structlog (MIT licensed) + # name: "Test dev setup on ${{ matrix.os }}" + # runs-on: ${{ matrix.os }} + # strategy: + # matrix: + # os: [ubuntu-latest, windows-latest, macos-latest] + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-python@v5 + # with: + # python-version: "3.12" + # cache: pip + # - run: python -Im pip install --editable .[dev] + # - run: python -Ic 'import rdmo; print(rdmo.__version__)' - dependencies: - name: Test installation of all dependencies - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: "3.12" - cache: pip - - name: Install os requirements for python-ldap - run: | - sudo apt update - sudo apt install --yes libldap2-dev libsasl2-dev - - run: python -m pip install --upgrade pip - - run: python -m pip install .[allauth,ci,dev,gunicorn,ldap,mysql,postgres,pytest] - - uses: actions/setup-node@v4 - with: - node-version: 18 - cache: npm - - run: npm install --include=dev - - name: Write info to step summary - run: | - { - echo -e "# ✓ All dependency groups successfully installed in combination\n\n" - echo '
Installed Python packages (dependency tree)' - echo -e "\n\`\`\`console" - echo "$ python -m pipdeptree --local-only --exclude=pip,pipdeptree" - python -m pipdeptree --local-only --exclude=pip,pipdeptree - echo -e "\`\`\`\n
" - echo '
Outdated Python dependencies' - echo -e "\n\`\`\`console" - echo "$ python -m pip list --outdated" - python -m pip list --outdated - echo -e "\`\`\`\n
" - echo '
Installed JavaScript packages (dependency tree)' - echo -e "\n\`\`\`console" - echo "$ npm list --all" - npm list --all - echo -e "\`\`\`\n
" - echo '
Outdated JavaScript dependencies' - echo -e "\n\`\`\`console" - echo "$ npm outdated --long" - npm outdated --long || true - echo -e "\`\`\`\n
" - } >> $GITHUB_STEP_SUMMARY + # dependencies: + # name: Test installation of all dependencies + # runs-on: ubuntu-24.04 + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-python@v5 + # with: + # python-version: "3.12" + # cache: pip + # - name: Install os requirements for python-ldap + # run: | + # sudo apt update + # sudo apt install --yes libldap2-dev libsasl2-dev + # - run: python -m pip install --upgrade pip + # - run: python -m pip install .[allauth,ci,dev,gunicorn,ldap,mysql,postgres,pytest] + # - uses: actions/setup-node@v4 + # with: + # node-version: 18 + # cache: npm + # - run: npm install --include=dev + # - name: Write info to step summary + # run: | + # { + # echo -e "# ✓ All dependency groups successfully installed in combination\n\n" + # echo '
Installed Python packages (dependency tree)' + # echo -e "\n\`\`\`console" + # echo "$ python -m pipdeptree --local-only --exclude=pip,pipdeptree" + # python -m pipdeptree --local-only --exclude=pip,pipdeptree + # echo -e "\`\`\`\n
" + # echo '
Outdated Python dependencies' + # echo -e "\n\`\`\`console" + # echo "$ python -m pip list --outdated" + # python -m pip list --outdated + # echo -e "\`\`\`\n
" + # echo '
Installed JavaScript packages (dependency tree)' + # echo -e "\n\`\`\`console" + # echo "$ npm list --all" + # npm list --all + # echo -e "\`\`\`\n
" + # echo '
Outdated JavaScript dependencies' + # echo -e "\n\`\`\`console" + # echo "$ npm outdated --long" + # npm outdated --long || true + # echo -e "\`\`\`\n
" + # } >> $GITHUB_STEP_SUMMARY - required-checks-pass: - if: always() - needs: - - lint - - test - - coveralls - - build-wheel - - dev-setup - - dependencies - runs-on: ubuntu-24.04 - steps: - - uses: re-actors/alls-green@release/v1 - with: - jobs: ${{ toJSON(needs) }} + # required-checks-pass: + # if: always() + # needs: + # - lint + # - test + # - coveralls + # - build-wheel + # - dev-setup + # - dependencies + # runs-on: ubuntu-24.04 + # steps: + # - uses: re-actors/alls-green@release/v1 + # with: + # jobs: ${{ toJSON(needs) }}