Skip to content

Commit

Permalink
Merge pull request rdmorganiser#833 from rdmorganiser/dev-2.1.0
Browse files Browse the repository at this point in the history
RDMO 2.1.0
  • Loading branch information
jochenklar authored Dec 8, 2023
2 parents a54867e + da51fd1 commit d4cd672
Show file tree
Hide file tree
Showing 227 changed files with 9,191 additions and 6,371 deletions.
3 changes: 2 additions & 1 deletion .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
module.exports = {
'root': true,
'globals': {
'gettext': true,
'ngettext': true,
Expand Down Expand Up @@ -44,5 +45,5 @@ module.exports = {
'react': {
'version': 'detect'
}
}
},
}
110 changes: 80 additions & 30 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,82 @@
version: 2
updates:
- package-ecosystem: pip
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 10
target-branch: dependency-updates
labels:
- dependencies
- python
- type:maintenance
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 10
target-branch: dependency-updates
labels:
- dependencies
- github_actions
- type:maintenance
- package-ecosystem: npm
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 10
target-branch: dependency-updates
labels:
- dependencies
- javascript
- type:maintenance
- package-ecosystem: pip
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 10
target-branch: dependency-updates
labels:
- dependencies
- python
- type:maintenance
ignore:
- dependency-name: django-mptt # pinned, 0.15 requires Python >= 3.9
groups:
# create a single pull request containing all updates for the optional dependencies
optional:
patterns:
- coveralls
- django-allauth
- django-auth-ldap
- gunicorn
- mysqlclient
- pre-commit
- psycopg*
- pytest*
# create a single pull request containing all updates for django related dependencies
django:
patterns:
- django*
- drf*
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 10
target-branch: dependency-updates
labels:
- dependencies
- github_actions
- type:maintenance
groups:
# create a single pull request containing all updates for GitHub Actions
github-actions:
patterns:
- '*'
- package-ecosystem: npm
directory: /
schedule:
interval: monthly
open-pull-requests-limit: 10
target-branch: dependency-updates
labels:
- dependencies
- javascript
- type:maintenance
ignore:
- dependency-name: react-bootstrap # rdmo still uses bootstrap 3, which is not supported by react-bootstrap > 0.33.1
- dependency-name: "*"
update-types: ["version-update:semver-patch"] # ignore patch versions for all JavaScript dependencies
groups:
react:
patterns:
- react*
redux:
patterns:
- redux*
babel:
patterns:
- '@babel*'
- babel*
webpack:
patterns:
- webpack*
- copy-webpack-plugin
eslint:
patterns:
- eslint*
prod-dependencies:
dependency-type: production
dev-dependencies:
dependency-type: development
141 changes: 116 additions & 25 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ jobs:
with:
python-version: "3.12"
cache: pip
- run: python -m pip install --upgrade pip setuptools wheel
- run: python -m pip install -e .[dev]
- run: python -m pip install --upgrade pip
- run: python -m pip install --editable .[dev]
- name: Set up pre-commit cache
uses: actions/cache@v3
with:
Expand All @@ -64,17 +64,17 @@ jobs:
- name: Install Dependencies
run: |
sudo apt update
sudo apt install --yes pandoc texlive-xetex
python -m pip install --upgrade pip setuptools wheel
sudo apt install --yes pandoc texlive-xetex librsvg2-bin
python -m pip install --upgrade pip
pandoc --version
- name: Install rdmo[mysql] and start mysql
run: |
python -m pip install -e .[ci,mysql]
python -m pip install --editable .[ci,mysql]
sudo systemctl start mysql.service
if: matrix.db-backend == 'mysql'
- name: Install rdmo[postgres] and start postgresql
run: |
python -m pip install -e .[ci,postgres]
python -m pip install --editable .[ci,postgres]
sudo systemctl start postgresql.service
pg_isready
sudo -u postgres psql --command="CREATE USER postgres_user PASSWORD 'postgres_password' CREATEDB"
Expand All @@ -92,6 +92,30 @@ jobs:
GITHUB_DB_BACKEND: ${{ matrix.db-backend }}
COVERALLS_FLAG_NAME: '${{ matrix.db-backend }}: ${{ matrix.python-version }}'
COVERALLS_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@v3
with:
name: screenshots
path: screenshots/*.png
if: matrix.python-version == '3.12' && matrix.db-backend == 'postgres'

coveralls:
name: Indicate completion to coveralls
Expand All @@ -106,6 +130,59 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

build-wheel:
name: Build python wheel
needs: test
runs-on: ubuntu-22.04
if: github.event_name == 'pull_request'
steps:
- uses: actions/checkout@v4
- name: Get short commit SHA
id: short-sha
run: echo "sha=$(git rev-parse --short ${{ github.event.pull_request.head.sha }})" >> $GITHUB_OUTPUT
- 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 }}+${{ steps.short-sha.outputs.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
- uses: actions/setup-node@v4
with:
node-version: 18
cache: npm
- run: npm install
- run: npm run build:prod
- uses: actions/setup-python@v4
with:
python-version: '3.12'
cache: pip
- run: |
python -m pip install --upgrade pip
python -m pip install .[dev]
- name: Build the wheel
run: python -m build --wheel
- name: Check metadata
run: python -m twine check --strict dist/*
- name: Install package from built wheel
run: python -m pip install --force-reinstall dist/rdmo*.whl
- name: Write info to step summary
run: |
echo -e "# ✓ Wheel successfully built (v${{ steps.new-version.outputs.new_version }})\n\n" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`console" >> $GITHUB_STEP_SUMMARY
echo "$ python -m pip show rdmo" >> $GITHUB_STEP_SUMMARY
python -m pip show rdmo >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
- name: Upload wheel as artifact
uses: actions/upload-artifact@v3
with:
name: wheel
path: dist/rdmo*.whl
if-no-files-found: error
retention-days: 30

dev-setup:
# Ref: structlog (MIT licensed) <https://github.com/hynek/structlog/blob/main/.github/workflows/ci.yml>
name: "Test dev setup on ${{ matrix.os }}"
Expand All @@ -119,11 +196,11 @@ jobs:
with:
python-version: "3.12"
cache: pip
- run: python -Im pip install -e .[dev]
- run: python -Im pip install --editable .[dev]
- run: python -Ic 'import rdmo; print(rdmo.__version__)'

optional-dependencies:
name: Test installation of optional-dependencies
dependencies:
name: Test installation of all dependencies
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
Expand All @@ -135,34 +212,48 @@ jobs:
run: |
sudo apt update
sudo apt install --yes libldap2-dev libsasl2-dev
- run: python -m pip install --upgrade pip setuptools
- run: python -m pip install .[allauth,ci,dev,gunicorn,ldap,mysql,postgres,pytest]
- run: python -m pip freeze
- run: python -m pip list --outdated

webpack-build:
name: Test webpack-build
needs: lint
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v3
- run: python -m pip install --upgrade pip
- run: python -m pip install .[allauth,shibboleth,ci,dev,gunicorn,ldap,mysql,postgres,pytest]
- uses: actions/setup-node@v4
with:
node-version: 18
cache: npm
- run: npm install --dev
- run: npm run build
- run: npm run build:prod
- name: Write info to step summary
run: |
{
echo -e "# ✓ All dependency groups successfully installed in combination\n\n"
echo '<details><summary>Installed Python packages (dependency tree)</summary>'
echo -e "\n\`\`\`console"
echo "$ python -m pipdeptree --local-only --exclude=pip,pipdeptree"
python -m pipdeptree --local-only --exclude=pip,pipdeptree
echo -e "\`\`\`\n</details>"
echo '<details><summary>Outdated Python dependencies</summary>'
echo -e "\n\`\`\`console"
echo "$ python -m pip list --outdated"
python -m pip list --outdated
echo -e "\`\`\`\n</details>"
echo '<details><summary>Installed JavaScript packages (dependency tree)</summary>'
echo -e "\n\`\`\`console"
echo "$ npm list --all"
npm list --all
echo -e "\`\`\`\n</details>"
echo '<details><summary>Outdated JavaScript dependencies</summary>'
echo -e "\n\`\`\`console"
echo "$ npm outdated --long"
npm outdated --long || true
echo -e "\`\`\`\n</details>"
} >> $GITHUB_STEP_SUMMARY
required-checks-pass:
if: always()
needs:
- lint
- test
- coveralls
- build-wheel
- dev-setup
- optional-dependencies
- webpack-build
- dependencies
runs-on: ubuntu-22.04
steps:
- uses: re-actors/alls-green@release/v1
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,5 @@ dist
.on-save.json

rdmo/management/static

screenshots
12 changes: 6 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ repos:
hooks:
- id: check-hooks-apply
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
rev: v4.5.0
hooks:
- id: check-ast
- id: check-json
Expand All @@ -21,17 +21,17 @@ repos:
- id: trailing-whitespace
exclude: \.dot$
- id: debug-statements
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.0.291
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.6
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.50.0
rev: v8.54.0
hooks:
- id: eslint
args: [--fix, --color]
additional_dependencies:
- eslint@8.41.0
- eslint-plugin-react@7.32.2
- eslint@8.54.0
- eslint-plugin-react@7.33.2
- [email protected]
Loading

0 comments on commit d4cd672

Please sign in to comment.