diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 119a350c0..910b291ed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,9 +14,29 @@ on: - 'translations**' jobs: + pre-commit: + name: Linting Checks + runs-on: ubuntu-latest + steps: + - + name: Checkout repository + uses: actions/checkout@v3 + + - + name: Install tools + uses: actions/setup-python@v4 + with: + python-version: "3.9" + + - + name: Check files + uses: pre-commit/action@v3.0.0 + documentation: name: "Build Documentation" runs-on: ubuntu-20.04 + needs: + - pre-commit steps: - name: Checkout @@ -47,11 +67,86 @@ jobs: name: documentation path: docs/_build/html/ - ci-backend: - uses: ./.github/workflows/reusable-ci-backend.yml + tests-backend: + name: "Tests (${{ matrix.python-version }})" + runs-on: ubuntu-20.04 + needs: + - pre-commit + strategy: + matrix: + python-version: ['3.8', '3.9', '3.10'] + fail-fast: false + steps: + - + name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 2 + - + name: Install pipenv + run: pipx install pipenv + - + name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "${{ matrix.python-version }}" + cache: "pipenv" + cache-dependency-path: 'Pipfile.lock' + - + name: Install system dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -qq --no-install-recommends unpaper tesseract-ocr imagemagick ghostscript libzbar0 poppler-utils + - + name: Install Python dependencies + run: | + pipenv sync --dev + - + name: Tests + run: | + cd src/ + pipenv run pytest + - + name: Get changed files + id: changed-files-specific + uses: tj-actions/changed-files@v24 + with: + files: | + src/** + - + name: List all changed files + run: | + for file in ${{ steps.changed-files-specific.outputs.all_changed_files }}; do + echo "${file} was changed" + done + - + name: Publish coverage results + if: matrix.python-version == '3.9' && steps.changed-files-specific.outputs.any_changed == 'true' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # https://github.com/coveralls-clients/coveralls-python/issues/251 + run: | + cd src/ + pipenv run coveralls --service=github - ci-frontend: - uses: ./.github/workflows/reusable-ci-frontend.yml + tests-frontend: + name: "Tests Frontend" + runs-on: ubuntu-20.04 + needs: + - pre-commit + strategy: + matrix: + node-version: [16.x] + steps: + - uses: actions/checkout@v3 + - + name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + - run: cd src-ui && npm ci + - run: cd src-ui && npm run test + - run: cd src-ui && npm run e2e:ci prepare-docker-build: name: Prepare Docker Pipeline Data @@ -65,8 +160,8 @@ jobs: cancel-in-progress: false needs: - documentation - - ci-backend - - ci-frontend + - tests-backend + - tests-frontend steps: - name: Set ghcr repository name diff --git a/.github/workflows/reusable-ci-backend.yml b/.github/workflows/reusable-ci-backend.yml deleted file mode 100644 index 27a6beeed..000000000 --- a/.github/workflows/reusable-ci-backend.yml +++ /dev/null @@ -1,129 +0,0 @@ -name: Backend CI Jobs - -on: - workflow_call: - -jobs: - - code-checks-backend: - name: "Code Style Checks" - runs-on: ubuntu-20.04 - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Install checkers - run: | - pipx install reorder-python-imports - pipx install yesqa - pipx install add-trailing-comma - pipx install flake8 - - - name: Run reorder-python-imports - run: | - find src/ -type f -name '*.py' ! -path "*/migrations/*" | xargs reorder-python-imports - - - name: Run yesqa - run: | - find src/ -type f -name '*.py' ! -path "*/migrations/*" | xargs yesqa - - - name: Run add-trailing-comma - run: | - find src/ -type f -name '*.py' ! -path "*/migrations/*" | xargs add-trailing-comma - # black is placed after add-trailing-comma because it may format differently - # if a trailing comma is added - - - name: Run black - uses: psf/black@stable - with: - options: "--check --diff" - version: "22.3.0" - - - name: Run flake8 checks - run: | - cd src/ - flake8 --max-line-length=88 --ignore=E203,W503 - - tests-backend: - name: "Tests (${{ matrix.python-version }})" - runs-on: ubuntu-20.04 - needs: - - code-checks-backend - strategy: - matrix: - python-version: ['3.8', '3.9', '3.10'] - fail-fast: false - steps: - - - name: Checkout - uses: actions/checkout@v3 - with: - fetch-depth: 2 - - - name: Install pipenv - run: pipx install pipenv - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: "${{ matrix.python-version }}" - cache: "pipenv" - cache-dependency-path: 'Pipfile.lock' - - - name: Install system dependencies - run: | - sudo apt-get update -qq - sudo apt-get install -qq --no-install-recommends unpaper tesseract-ocr imagemagick ghostscript libzbar0 poppler-utils - - - name: Install Python dependencies - run: | - pipenv sync --dev - - - name: Tests - run: | - cd src/ - pipenv run pytest - - - name: Get changed files - id: changed-files-specific - uses: tj-actions/changed-files@v24 - with: - files: | - src/** - - - name: List all changed files - run: | - for file in ${{ steps.changed-files-specific.outputs.all_changed_files }}; do - echo "${file} was changed" - done - - - name: Publish coverage results - if: matrix.python-version == '3.9' && steps.changed-files-specific.outputs.any_changed == 'true' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # https://github.com/coveralls-clients/coveralls-python/issues/251 - run: | - cd src/ - pipenv run coveralls --service=github - - dockerfile-lint: - name: "Lint ${{ matrix.dockerfile }}" - runs-on: ubuntu-20.04 - strategy: - matrix: - dockerfile: - - Dockerfile - - docker-builders/Dockerfile.qpdf - - docker-builders/Dockerfile.jbig2enc - - docker-builders/Dockerfile.psycopg2 - - docker-builders/Dockerfile.pikepdf - fail-fast: false - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - uses: hadolint/hadolint-action@v2.1.0 - with: - dockerfile: ${{ matrix.dockerfile }} diff --git a/.github/workflows/reusable-ci-frontend.yml b/.github/workflows/reusable-ci-frontend.yml deleted file mode 100644 index cc565775a..000000000 --- a/.github/workflows/reusable-ci-frontend.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Frontend CI Jobs - -on: - workflow_call: - -jobs: - - code-checks-frontend: - name: "Code Style Checks" - runs-on: ubuntu-20.04 - steps: - - - name: Checkout - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: '16' - - - name: Install prettier - run: | - npm install prettier - - - name: Run prettier - run: - npx prettier --check --ignore-path Pipfile.lock **/*.js **/*.ts *.md **/*.md - tests-frontend: - name: "Tests" - runs-on: ubuntu-20.04 - needs: - - code-checks-frontend - strategy: - matrix: - node-version: [16.x] - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - - run: cd src-ui && npm ci - - run: cd src-ui && npm run test - - run: cd src-ui && npm run e2e:ci diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh index 921808f31..7a6fa01cb 100755 --- a/docker/docker-entrypoint.sh +++ b/docker/docker-entrypoint.sh @@ -95,7 +95,7 @@ initialize() { done set -e - ${gosu_cmd[@]} /sbin/docker-prepare.sh + "${gosu_cmd[@]}" /sbin/docker-prepare.sh } install_languages() { @@ -138,7 +138,7 @@ install_languages() { echo "Paperless-ngx docker container starting..." gosu_cmd=(gosu paperless) -if [ $(id -u) == $(id -u paperless) ]; then +if [ "$(id -u)" == "$(id -u paperless)" ]; then gosu_cmd=() fi @@ -151,7 +151,7 @@ initialize if [[ "$1" != "/"* ]]; then echo Executing management command "$@" - exec ${gosu_cmd[@]} python3 manage.py "$@" + exec "${gosu_cmd[@]}" python3 manage.py "$@" else echo Executing "$@" exec "$@" diff --git a/docker/paperless_cmd.sh b/docker/paperless_cmd.sh index 2c8c1364a..cdeaf68c4 100755 --- a/docker/paperless_cmd.sh +++ b/docker/paperless_cmd.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash rootless_args=() -if [ $(id -u) == $(id -u paperless) ]; then +if [ "$(id -u)" == "$(id -u paperless)" ]; then rootless_args=( --user paperless @@ -12,4 +12,4 @@ if [ $(id -u) == $(id -u paperless) ]; then ) fi -/usr/local/bin/supervisord -c /etc/supervisord.conf ${rootless_args[@]} +/usr/local/bin/supervisord -c /etc/supervisord.conf "${rootless_args[@]}" diff --git a/src-ui/src/manifest.webmanifest b/src-ui/src/manifest.webmanifest index aff3085fb..700365e28 100644 --- a/src-ui/src/manifest.webmanifest +++ b/src-ui/src/manifest.webmanifest @@ -15,4 +15,4 @@ "name": "Paperless-ngx", "short_name": "Paperless-ngx", "start_url": "/" -} \ No newline at end of file +}