From e706dbf73f17d7126530b7d4936f2dc76e516305 Mon Sep 17 00:00:00 2001 From: Heinz-Alexander Fuetterer Date: Tue, 5 Dec 2023 11:58:38 +0100 Subject: [PATCH] ci --- .github/workflows/ci.yml | 308 ++++++++++++++++++++------------------- 1 file changed, 157 insertions(+), 151 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 078cd3ee9e..35f6b7792a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,126 +27,132 @@ env: jobs: - lint: - name: Lint - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 - with: - python-version: "3.12" - cache: pip - - run: python -m pip install --upgrade pip setuptools wheel - - run: python -m pip install -e .[dev] - - name: Set up pre-commit cache - uses: actions/cache@v3 - with: - path: ~/.cache/pre-commit - key: lint-${{ hashFiles('.pre-commit-config.yaml') }} - - name: Run linters via pre-commit (ruff, eslint) - run: pre-commit run --all-files --color=always + # lint: + # name: Lint + # runs-on: ubuntu-22.04 + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-python@v4 + # with: + # python-version: "3.12" + # cache: pip + # - run: python -m pip install --upgrade pip setuptools wheel + # - run: python -m pip install -e .[dev] + # - name: Set up pre-commit cache + # uses: actions/cache@v3 + # with: + # path: ~/.cache/pre-commit + # key: lint-${{ hashFiles('.pre-commit-config.yaml') }} + # - name: Run linters via pre-commit (ruff, eslint) + # run: pre-commit run --all-files --color=always - test: - runs-on: ubuntu-22.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@v4 - 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 setuptools wheel - pandoc --version - - name: Install rdmo[mysql] and start mysql - run: | - python -m pip install -e .[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] - 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 Tests - run: | - pytest -p randomly -p no:cacheprovider --cov --reuse-db --numprocesses=auto --dist=loadscope - coveralls --service=github - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - 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' + # test: + # runs-on: ubuntu-22.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@v4 + # 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 setuptools wheel + # pandoc --version + # - name: Install rdmo[mysql] and start mysql + # run: | + # python -m pip install -e .[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] + # 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 Tests + # run: | + # pytest -p randomly -p no:cacheprovider --cov --reuse-db --numprocesses=auto --dist=loadscope + # coveralls --service=github + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # 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 - needs: test - runs-on: ubuntu-latest - container: python:3-slim - steps: - - name: Run Coveralls finish - run: | - python -m pip install coveralls - coveralls --service=github --finish - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # coveralls: + # name: Indicate completion to coveralls + # needs: test + # runs-on: ubuntu-latest + # container: python:3-slim + # steps: + # - name: Run Coveralls finish + # run: | + # python -m pip install coveralls + # coveralls --service=github --finish + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} build-wheel: name: Build python wheel - needs: test + # 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_SHA)" >> $GITHUB_OUTPUT + + 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: Add SHA as suffix to version + - 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: | - NEW_VERSION="${{ steps.current-version.outputs.current_version }}+${{ steps.short-sha.outputs.sha }}" - sed -i "s/__version__ = .*/__version__ = \"$NEW_VERSION\"/" rdmo/__init__.py + sed -i "s/__version__ = .*/__version__ = \"${{ steps.new-version.outputs.new_version }}\"/" rdmo/__init__.py + - uses: actions/setup-node@v4 with: node-version: 18 @@ -178,51 +184,51 @@ jobs: 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@v4 - with: - python-version: "3.12" - cache: pip - - run: python -Im pip install -e .[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@v4 + # with: + # python-version: "3.12" + # cache: pip + # - run: python -Im pip install -e .[dev] + # - run: python -Ic 'import rdmo; print(rdmo.__version__)' - optional-dependencies: - name: Test installation of optional-dependencies - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 - 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 setuptools - - run: python -m pip install .[allauth,shibboleth,ci,dev,gunicorn,ldap,mysql,postgres,pytest] - - run: python -m pip freeze - - run: python -m pip list --outdated + # optional-dependencies: + # name: Test installation of optional-dependencies + # runs-on: ubuntu-22.04 + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-python@v4 + # 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 setuptools + # - run: python -m pip install .[allauth,shibboleth,ci,dev,gunicorn,ldap,mysql,postgres,pytest] + # - run: python -m pip freeze + # - run: python -m pip list --outdated - required-checks-pass: - if: always() - needs: - - lint - - test - - coveralls - - build-wheel - - dev-setup - - optional-dependencies - runs-on: ubuntu-22.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 + # - optional-dependencies + # runs-on: ubuntu-22.04 + # steps: + # - uses: re-actors/alls-green@release/v1 + # with: + # jobs: ${{ toJSON(needs) }}