From 32187efeebce6c531bde1220aa0af7fa96a08343 Mon Sep 17 00:00:00 2001 From: AaronHForgeFlow Date: Wed, 3 Nov 2021 15:19:05 +0100 Subject: [PATCH] [13.0][UPD] migrate CI to github actions --- .copier-answers.yml | 5 +- .eslintrc.yml | 9 +++- .flake8 | 4 +- .github/workflows/pre-commit.yml | 4 ++ .github/workflows/stale.yml | 69 +++++++++++++++++++++++++++ .github/workflows/test.yml | 48 +++++++++++++++++++ .isort.cfg | 1 + .pre-commit-config.yaml | 81 +++++++++++++++++++++----------- .travis.yml => .t2d.yml | 5 +- README.md | 2 +- rma_purchase/__manifest__.py | 2 +- rma_repair/__manifest__.py | 2 +- rma_sale/__manifest__.py | 2 +- 13 files changed, 195 insertions(+), 39 deletions(-) create mode 100644 .github/workflows/stale.yml create mode 100644 .github/workflows/test.yml rename .travis.yml => .t2d.yml (84%) diff --git a/.copier-answers.yml b/.copier-answers.yml index 4ff5fecc..2b17fb68 100644 --- a/.copier-answers.yml +++ b/.copier-answers.yml @@ -1,12 +1,13 @@ # Do NOT update manually; changes here will be overwritten by Copier -_commit: v1.1.1 +_commit: v1.3.5 _src_path: https://github.com/OCA/oca-addons-repo-template.git +ci: GitHub dependency_installation_mode: OCA generate_requirements_txt: false include_wkhtmltopdf: true odoo_version: 13.0 rebel_module_groups: [] -repo_description: null +repo_description: Manage returns authorizations repo_name: stock-rma repo_slug: https://github.com/ForgeFlow/stock-rma travis_apt_packages: [] diff --git a/.eslintrc.yml b/.eslintrc.yml index 88f2881b..d4cc423c 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,10 +1,17 @@ env: browser: true + es6: true # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449 parserOptions: ecmaVersion: 2017 +overrides: + - files: + - "**/*.esm.js" + parserOptions: + sourceType: module + # Globals available in Odoo that shouldn't produce errorings globals: _: readonly @@ -14,7 +21,7 @@ globals: moment: readonly odoo: readonly openerp: readonly - Promise: readonly + owl: readonly # Styling is handled by Prettier, so we only need to enable AST rules; # see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890 diff --git a/.flake8 b/.flake8 index 44ed868f..e397e8ed 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,5 @@ [flake8] -max-line-length = 80 +max-line-length = 88 max-complexity = 16 # B = bugbear # B9 = bugbear opinionated (incl line length) @@ -8,3 +8,5 @@ select = C,E,F,W,B,B9 # E501: flake8 line length (covered by bugbear B950) # W503: line break before binary operator (black behaviour) ignore = E203,E501,W503 +per-file-ignores= + __init__.py:F401 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 335381cb..282a1fa7 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -10,4 +10,8 @@ jobs: steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 + with: + # The pylint-odoo version we use here does not support python 3.10 + # https://github.com/OCA/oca-addons-repo-template/issues/80 + python-version: "3.9" - uses: pre-commit/action@v2.0.0 diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000..1693a125 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,69 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: "0 12 * * 0" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - name: Stale PRs and issues policy + uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + # General settings. + ascending: true + remove-stale-when-updated: true + # Pull Requests settings. + # 120+30 day stale policy for PRs + # * Except PRs marked as "no stale" + days-before-pr-stale: 120 + days-before-pr-close: 30 + exempt-pr-labels: "no stale" + stale-pr-label: "stale" + stale-pr-message: > + There hasn't been any activity on this pull request in the past 4 months, so + it has been marked as stale and it will be closed automatically if no + further activity occurs in the next 30 days. + + If you want this PR to never become stale, please ask a PSC member to apply + the "no stale" label. + # Issues settings. + # 180+30 day stale policy for open issues + # * Except Issues marked as "no stale" + days-before-issue-stale: 180 + days-before-issue-close: 30 + exempt-issue-labels: "no stale,needs more information" + stale-issue-label: "stale" + stale-issue-message: > + There hasn't been any activity on this issue in the past 6 months, so it has + been marked as stale and it will be closed automatically if no further + activity occurs in the next 30 days. + + If you want this issue to never become stale, please ask a PSC member to + apply the "no stale" label. + + # 15+30 day stale policy for issues pending more information + # * Issues that are pending more information + # * Except Issues marked as "no stale" + - name: Needs more information stale issues policy + uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + ascending: true + only-labels: "needs more information" + exempt-issue-labels: "no stale" + days-before-stale: 15 + days-before-close: 30 + days-before-pr-stale: -1 + days-before-pr-close: -1 + remove-stale-when-updated: true + stale-issue-label: "stale" + stale-issue-message: > + This issue needs more information and there hasn't been any activity + recently, so it has been marked as stale and it will be closed automatically + if no further activity occurs in the next 30 days. + + If you think this is a mistake, please ask a PSC member to remove the "needs + more information" label. diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..21faf624 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,48 @@ +name: test Odoo addons + +on: + pull_request: + branches: + - "13.0" + push: + branches: + - "13.0" + +jobs: + test: + runs-on: ubuntu-latest + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + include: + - container: ghcr.io/oca/oca-ci/py3.6-odoo13.0:latest + makepot: "true" + - container: ghcr.io/oca/oca-ci/py3.6-ocb13.0:latest + services: + postgres: + image: postgres:9.6 + env: + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_DB: odoo + ports: + - 5432:5432 + steps: + - uses: actions/checkout@v2 + with: + persist-credentials: false + - name: Install addons and dependencies + run: oca_install_addons + - name: Initialize test db + run: oca_init_test_database + - name: Run tests + run: oca_run_tests + - uses: codecov/codecov-action@v1 + - name: Update .pot files + run: + oca_export_and_push_pot https://x-access-token:${{ secrets.GIT_PUSH_TOKEN + }}@github.com/${{ github.repository }} + if: + ${{ matrix.makepot == 'true' && github.event_name == 'push' && + github.repository_owner == 'OCA' }} diff --git a/.isort.cfg b/.isort.cfg index 7683badf..0ec187ef 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -10,3 +10,4 @@ known_odoo=odoo known_odoo_addons=odoo.addons sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER default_section=THIRDPARTY +ensure_newline_before_comments = True diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 52ea7ae5..0cb9d348 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,11 @@ exclude: | (?x) + # NOT INSTALLABLE ADDONS + # END NOT INSTALLABLE ADDONS # Files and folders generated by bots, to avoid loops ^setup/|/static/description/index\.html$| + # We don't want to mess with tool-generated files + .svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$| # Maybe reactivate this when all README files include prettier ignore tags? ^README\.md$| # Library files can have extraneous formatting (even minimized) @@ -14,11 +18,33 @@ default_language_version: python: python3 node: "14.13.0" repos: + - repo: local + hooks: + # These files are most likely copier diff rejection junks; if found, + # review them manually, fix the problem (if needed) and remove them + - id: forbidden-files + name: forbidden files + entry: found forbidden files; remove them + language: fail + files: "\\.rej$" + - repo: https://github.com/oca/maintainer-tools + rev: ab1d7f6 + hooks: + # update the NOT INSTALLABLE ADDONS section above + - id: oca-update-pre-commit-excluded-addons + - id: oca-fix-manifest-website + args: ["https://github.com/ForgeFlow/stock-rma"] - repo: https://github.com/myint/autoflake rev: v1.4 hooks: - id: autoflake - args: ["-i", "--ignore-init-module-imports"] + args: + - --expand-star-imports + - --ignore-init-module-imports + - --in-place + - --remove-all-unused-imports + - --remove-duplicate-keys + - --remove-unused-variables - repo: https://github.com/psf/black rev: 19.10b0 hooks: @@ -27,12 +53,12 @@ repos: rev: v1.19.1 hooks: - id: prettier - - id: prettier - name: prettier xml plugin + name: prettier (with plugin-xml) + entry: prettier --write --list-different additional_dependencies: - "prettier@1.19.1" - "@prettier/plugin-xml@0.7.2" - files: \.xml$ + files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$ - repo: https://github.com/pre-commit/mirrors-eslint rev: v6.8.0 hooks: @@ -63,34 +89,11 @@ repos: - id: check-xml - id: mixed-line-ending args: ["--fix=lf"] - - repo: https://gitlab.com/pycqa/flake8 - rev: 3.7.9 - hooks: - - id: flake8 - name: flake8 except __init__.py - exclude: /__init__\.py$ - additional_dependencies: ["flake8-bugbear==19.8.0"] - - id: flake8 - name: flake8 only __init__.py - args: ["--extend-ignore=F401"] # ignore unused imports in __init__.py - files: /__init__\.py$ - additional_dependencies: ["flake8-bugbear==19.8.0"] - - repo: https://github.com/pre-commit/mirrors-pylint - rev: v2.5.3 - hooks: - - id: pylint - name: pylint with optional checks - args: ["--rcfile=.pylintrc", "--exit-zero"] - verbose: true - additional_dependencies: ["pylint-odoo==3.5.0"] - - id: pylint - name: pylint with mandatory checks - args: ["--rcfile=.pylintrc-mandatory"] - additional_dependencies: ["pylint-odoo==3.5.0"] - repo: https://github.com/asottile/pyupgrade rev: v1.26.2 hooks: - id: pyupgrade + args: ["--keep-percent-format"] - repo: https://github.com/pre-commit/mirrors-isort rev: v4.3.21 hooks: @@ -101,3 +104,25 @@ repos: rev: 2.5.2 hooks: - id: setuptools-odoo-make-default + - repo: https://gitlab.com/pycqa/flake8 + rev: 3.7.9 + hooks: + - id: flake8 + name: flake8 + additional_dependencies: ["flake8-bugbear==19.8.0"] + - repo: https://github.com/pre-commit/mirrors-pylint + rev: v2.5.3 + hooks: + - id: pylint + name: pylint with optional checks + args: + - --rcfile=.pylintrc + - --exit-zero + verbose: true + additional_dependencies: &pylint_deps + - pylint-odoo==3.5.0 + - id: pylint + name: pylint with mandatory checks + args: + - --rcfile=.pylintrc-mandatory + additional_dependencies: *pylint_deps diff --git a/.travis.yml b/.t2d.yml similarity index 84% rename from .travis.yml rename to .t2d.yml index 040335b1..18deefe9 100644 --- a/.travis.yml +++ b/.t2d.yml @@ -30,9 +30,8 @@ env: - WKHTMLTOPDF_VERSION="0.12.5" install: - - git clone -b master-eficent - https://github.com/ForgeFlow/maintainer-quality-tools.git - $HOME/maintainer-quality-tools + - git clone --depth=1 https://github.com/OCA/maintainer-quality-tools.git + ${HOME}/maintainer-quality-tools - export PATH=${HOME}/maintainer-quality-tools/travis:${PATH} - travis_install_nightly diff --git a/README.md b/README.md index df43890a..2e65058b 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ # stock-rma -None +Manage returns authorizations diff --git a/rma_purchase/__manifest__.py b/rma_purchase/__manifest__.py index 0216b0c7..eb7dd259 100644 --- a/rma_purchase/__manifest__.py +++ b/rma_purchase/__manifest__.py @@ -8,7 +8,7 @@ "summary": "RMA from PO", "license": "LGPL-3", "author": "Eficent, Odoo Community Association (OCA)", - "website": "https://github.com/Eficent/stock-rma", + "website": "https://github.com/ForgeFlow/stock-rma", "depends": ["rma_account", "purchase"], "data": [ "wizards/rma_order_line_make_purchase_order_view.xml", diff --git a/rma_repair/__manifest__.py b/rma_repair/__manifest__.py index 73341db5..5202be73 100644 --- a/rma_repair/__manifest__.py +++ b/rma_repair/__manifest__.py @@ -7,7 +7,7 @@ "category": "RMA", "summary": "Links RMA with Repairs.", "author": "ForgeFlow S.L., Odoo Community Association (OCA)", - "website": "https://github.com/Eficent/stock-rma", + "website": "https://github.com/ForgeFlow/stock-rma", "depends": ["rma_account", "repair_refurbish"], "data": [ "views/rma_order_view.xml", diff --git a/rma_sale/__manifest__.py b/rma_sale/__manifest__.py index 565a729f..0502fe1a 100644 --- a/rma_sale/__manifest__.py +++ b/rma_sale/__manifest__.py @@ -8,7 +8,7 @@ "category": "RMA", "summary": "Links RMA with Sales Orders", "author": "ForgeFlow, Odoo Community Association (OCA)", - "website": "https://github.com/Eficent/stock-rma", + "website": "https://github.com/ForgeFlow/stock-rma", "depends": ["rma_account", "sale_stock"], "data": [ "data/rma_operation.xml",