Fix import element sorting when saving (for related items) #971
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
# run CI only if files in these whitelisted paths are changed | |
paths: | |
- '.github/workflows/**' | |
- 'rdmo/**' | |
- 'testing/**' | |
- 'webpack/**' | |
- .eslintrc.js | |
- .nvmrc | |
- .pre-commit-config.yaml | |
- conftest.py | |
- package.json | |
- pyproject.toml | |
types: | |
- opened | |
- synchronize | |
- reopened | |
- ready_for_review # this is needed to trigger checks, when an auto-generated "draft" PR is set for "ready for review". | |
# Ref: https://docs.github.com/en/actions/using-jobs/using-concurrency | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
PYTHONDONTWRITEBYTECODE: 1 | |
FORCE_COLOR: 1 # colored output by pytest etc. | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
cache: pip | |
- name: Run linters via pre-commit (ruff, eslint) | |
uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1 | |
with: | |
extra_args: --all-files --color=always | |
test: | |
runs-on: ubuntu-24.04 | |
strategy: | |
matrix: | |
python-version: ['3.8', '3.12'] | |
db-backend: [mysql, postgres] | |
name: "Test (Python: ${{ matrix.python-version }}, DB: ${{ matrix.db-backend }})" | |
needs: lint | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: pip | |
- name: Install Dependencies | |
run: | | |
sudo apt update | |
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 --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 --editable .[ci,postgres] | |
sudo systemctl start postgresql.service | |
pg_isready | |
sudo -u postgres psql --command="CREATE USER postgres_user PASSWORD 'postgres_password' CREATEDB" | |
if: matrix.db-backend == 'postgres' | |
- name: Prepare Env | |
run: | | |
cp -r testing/media testing/media_root | |
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 | |
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 | |
build-wheel: | |
name: Build python wheel | |
needs: test | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- 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 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
cache: npm | |
- run: npm install | |
- run: npm run build:prod | |
- uses: actions/setup-python@v5 | |
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@v4 | |
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 }}" | |
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 '<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 | |
- dependencies | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} |