From ed6097b3fe2139644706e3aab12c2ee6bcb182fc Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Sat, 31 May 2025 11:58:22 +0200 Subject: [PATCH 1/9] feat: move action to own branch --- .forgejo/workflows/check-version-exists.yaml | 34 ------------------ .forgejo/workflows/check_version_exists.py | 37 -------------------- .forgejo/workflows/pycairo.yaml | 16 ++++++--- 3 files changed, 11 insertions(+), 76 deletions(-) delete mode 100644 .forgejo/workflows/check-version-exists.yaml delete mode 100644 .forgejo/workflows/check_version_exists.py diff --git a/.forgejo/workflows/check-version-exists.yaml b/.forgejo/workflows/check-version-exists.yaml deleted file mode 100644 index e2baaa4..0000000 --- a/.forgejo/workflows/check-version-exists.yaml +++ /dev/null @@ -1,34 +0,0 @@ -on: - workflow_call: - inputs: - github-repository: - required: true - type: string - pypi-package: - required: true - type: string - pypi-base-url: - required: true - type: string - outputs: - version: ${{ jobs.check-version-exists.outputs.version }} - -jobs: - check-version-exists: - runs-on: ubuntu-latest - - outputs: - version: ${{ steps.check.outputs.version }} - - steps: - - uses: actions/checkout@v4 - - - id: check - run: | - pip3 install requests - exec python3 .forgejo/workflows/check_version_exists.py >> $GITHUB_OUTPUT - env: - REPOSITORY: ${{ inputs.github-repository }} - PACKAGE: ${{ inputs.pypi-package}} - BASE_URL: ${{ inputs.pypi-base-url}} - diff --git a/.forgejo/workflows/check_version_exists.py b/.forgejo/workflows/check_version_exists.py deleted file mode 100644 index d6efa40..0000000 --- a/.forgejo/workflows/check_version_exists.py +++ /dev/null @@ -1,37 +0,0 @@ -#/usr/bin/env python3 - -import os -import re -import sys -import requests - - -def get_github_version(repository: str) -> str: - res = requests.get(f"https://api.github.com/repos/{repository}/releases/latest").json() - return res["tag_name"].removeprefix("v") - - -def does_pypi_version_exist(base_url: str, package: str, version: str) -> bool: - base_url = base_url.removesuffix("/") - version = version.replace(".", "\\.") - - body = requests.get(f"{base_url}/simple/{package}").text - return len(re.findall(rf"{package}-{version}-.+", body, re.MULTILINE)) > 0 - - -def main(): - repository = os.environ["REPOSITORY"] - package = os.environ["PACKAGE"] - base_url = os.environ["FORGEJO_URL"] - - version = get_github_version(repository) - - if does_pypi_version_exist(base_url, package, version): - sys.exit(0) - - print(f"version=v{version}") - - -if __name__ == "__main__": - main() - diff --git a/.forgejo/workflows/pycairo.yaml b/.forgejo/workflows/pycairo.yaml index 6e7631c..1dd38c8 100644 --- a/.forgejo/workflows/pycairo.yaml +++ b/.forgejo/workflows/pycairo.yaml @@ -11,11 +11,17 @@ env: jobs: check-version-exists: runs-on: ubuntu-latest - uses: ./.forgejo/workflows/check-version-exists.yaml - with: - pypi-base-url: ${{ env.REPOSITORY_URL }} - pypi-package: pycairo - github-repository: "pygobject/pycairo" + + outputs: + version: ${{ steps.check.outputs.version }} + + steps: + - id: check + uses: https://git.weddingfactory.eu/wheels@check-action + with: + pypi-base-url: ${{ env.REPOSITORY_URL }} + pypi-package: pycairo + github-repository: "pygobject/pycairo" build: name: Build wheels on ${{ matrix.os }} From 81a5062ad2e325b64f874cd5b52ca0617871d522 Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Sat, 31 May 2025 11:59:03 +0200 Subject: [PATCH 2/9] fix: typo --- .forgejo/workflows/pycairo.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/pycairo.yaml b/.forgejo/workflows/pycairo.yaml index 1dd38c8..369d394 100644 --- a/.forgejo/workflows/pycairo.yaml +++ b/.forgejo/workflows/pycairo.yaml @@ -17,7 +17,7 @@ jobs: steps: - id: check - uses: https://git.weddingfactory.eu/wheels@check-action + uses: https://git.weddingfactory.eu/cmwedding/wheels@check-action with: pypi-base-url: ${{ env.REPOSITORY_URL }} pypi-package: pycairo From 7156948c0dcf8664dda8a016f7da3e08e130cf78 Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Sat, 31 May 2025 12:09:03 +0200 Subject: [PATCH 3/9] fix: typo --- .forgejo/workflows/pycairo.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/pycairo.yaml b/.forgejo/workflows/pycairo.yaml index 369d394..72239f3 100644 --- a/.forgejo/workflows/pycairo.yaml +++ b/.forgejo/workflows/pycairo.yaml @@ -27,7 +27,7 @@ jobs: name: Build wheels on ${{ matrix.os }} needs: check-version-exists - if: needs.check-version-exists.outputs.version != "" + if: needs.check-version-exists.outputs.version != '' runs-on: ${{ matrix.os }} strategy: From 67480bf24d1b3d2e61b2349b2d0d226c712e2bed Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Sat, 7 Jun 2025 15:44:24 +0200 Subject: [PATCH 4/9] feat: add psycopg2 --- .forgejo/workflows/psycopg2.yaml | 55 ++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .forgejo/workflows/psycopg2.yaml diff --git a/.forgejo/workflows/psycopg2.yaml b/.forgejo/workflows/psycopg2.yaml new file mode 100644 index 0000000..78ae267 --- /dev/null +++ b/.forgejo/workflows/psycopg2.yaml @@ -0,0 +1,55 @@ +name: Build psycopg2 + +on: + workflow_dispatch: + schedule: + - cron: "0 10 * * 0" + +env: + REPOSITORY_URL: https://cmwedding-bot:${{ secrets.FORGEJO_TOKEN }}@git.weddingfactory.eu/api/packages/cmwedding/pypi + +jobs: + check-version-exists: + runs-on: ubuntu-latest + + outputs: + version: ${{ steps.check.outputs.version }} + + steps: + - id: check + uses: https://git.weddingfactory.eu/cmwedding/wheels@check-action + with: + pypi-base-url: ${{ env.REPOSITORY_URL }} + pypi-package: psycopg2 + github-repository: "psycopg/psycopg2" + + build: + name: Build wheels on ${{ matrix.os }} + + needs: check-version-exists + if: needs.check-version-exists.outputs.version != '' + + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + + steps: + - run: git clone --depth=1 https://github.com/psycopg/psycopg2 --branch ${{ needs.check-version-exists.outputs.version }} . + + - name: Build wheels + uses: https://github.com/pypa/cibuildwheel@v2.23.3 + env: + CIBW_BEFORE_ALL_LINUX: "dnf install -y postgresql-devel" + CIBW_BUILD: "cp31{0..3}-manylinux_{x86_64,aarch64}" + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 + + - name: Publish package distributions to Forgejo + run: | + pip3 install twine + python3 -m twine upload ./wheelhouse/* + env: + TWINE_REPOSITORY_URL: ${{ env.REPOSITORY_URL }} + TWINE_NON_INTERACTIVE: 1 + From 5a3f60250575aa0708f0b486bcb261eaed24d82e Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Thu, 12 Jun 2025 18:43:16 +0200 Subject: [PATCH 5/9] feat: pin check action --- .forgejo/workflows/psycopg2.yaml | 3 ++- .forgejo/workflows/pycairo.yaml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.forgejo/workflows/psycopg2.yaml b/.forgejo/workflows/psycopg2.yaml index 78ae267..248e1b5 100644 --- a/.forgejo/workflows/psycopg2.yaml +++ b/.forgejo/workflows/psycopg2.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch: schedule: - cron: "0 10 * * 0" + push: env: REPOSITORY_URL: https://cmwedding-bot:${{ secrets.FORGEJO_TOKEN }}@git.weddingfactory.eu/api/packages/cmwedding/pypi @@ -17,7 +18,7 @@ jobs: steps: - id: check - uses: https://git.weddingfactory.eu/cmwedding/wheels@check-action + uses: https://git.weddingfactory.eu/cmwedding/wheels@f3ba8cbc3c3e080b14c8f244e531eaf36102959a with: pypi-base-url: ${{ env.REPOSITORY_URL }} pypi-package: psycopg2 diff --git a/.forgejo/workflows/pycairo.yaml b/.forgejo/workflows/pycairo.yaml index 72239f3..197ad48 100644 --- a/.forgejo/workflows/pycairo.yaml +++ b/.forgejo/workflows/pycairo.yaml @@ -4,6 +4,7 @@ on: workflow_dispatch: schedule: - cron: "0 10 * * 0" + push: env: REPOSITORY_URL: https://cmwedding-bot:${{ secrets.FORGEJO_TOKEN }}@git.weddingfactory.eu/api/packages/cmwedding/pypi @@ -17,7 +18,7 @@ jobs: steps: - id: check - uses: https://git.weddingfactory.eu/cmwedding/wheels@check-action + uses: https://git.weddingfactory.eu/cmwedding/wheels@f3ba8cbc3c3e080b14c8f244e531eaf36102959a with: pypi-base-url: ${{ env.REPOSITORY_URL }} pypi-package: pycairo From 70847fa3e0482139b40e38dcf32b0f8ef3070b08 Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Thu, 12 Jun 2025 18:58:12 +0200 Subject: [PATCH 6/9] fix: only run on push if workflow has changed skip ci: --- .forgejo/workflows/psycopg2.yaml | 2 ++ .forgejo/workflows/pycairo.yaml | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/psycopg2.yaml b/.forgejo/workflows/psycopg2.yaml index 248e1b5..c3ecab5 100644 --- a/.forgejo/workflows/psycopg2.yaml +++ b/.forgejo/workflows/psycopg2.yaml @@ -5,6 +5,8 @@ on: schedule: - cron: "0 10 * * 0" push: + branches: ["main"] + paths: [".forgejo/workflows/psycopg2.yaml"] env: REPOSITORY_URL: https://cmwedding-bot:${{ secrets.FORGEJO_TOKEN }}@git.weddingfactory.eu/api/packages/cmwedding/pypi diff --git a/.forgejo/workflows/pycairo.yaml b/.forgejo/workflows/pycairo.yaml index 197ad48..8e00402 100644 --- a/.forgejo/workflows/pycairo.yaml +++ b/.forgejo/workflows/pycairo.yaml @@ -5,6 +5,8 @@ on: schedule: - cron: "0 10 * * 0" push: + branches: ["main"] + paths: [".forgejo/workflows/pycairo.yaml"] env: REPOSITORY_URL: https://cmwedding-bot:${{ secrets.FORGEJO_TOKEN }}@git.weddingfactory.eu/api/packages/cmwedding/pypi @@ -36,7 +38,7 @@ jobs: os: [ubuntu-latest] steps: - - run: git clone --depth=1 https://github.com/pygobject/pycairo --branch ${{ needs.check-version-exists.outputs.version }} . + - run: git clone --depth=1 https://github.com/pygobject/pycairo --branch v${{ needs.check-version-exists.outputs.version }} . - name: Build wheels uses: https://github.com/pypa/cibuildwheel@v2.23.3 From 2180e35cce0284da84d9a5683007b02ee0e086c4 Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Tue, 22 Jul 2025 13:47:31 +0200 Subject: [PATCH 7/9] feat: add OCB --- .forgejo/workflows/ocb.yaml | 66 +++++++++++++++++++++++++++++++++++++ OCB/pyproject.toml | 19 +++++++++++ 2 files changed, 85 insertions(+) create mode 100644 .forgejo/workflows/ocb.yaml create mode 100644 OCB/pyproject.toml diff --git a/.forgejo/workflows/ocb.yaml b/.forgejo/workflows/ocb.yaml new file mode 100644 index 0000000..5915a77 --- /dev/null +++ b/.forgejo/workflows/ocb.yaml @@ -0,0 +1,66 @@ +name: Build OCB + +on: + workflow_dispatch: + schedule: + - cron: "0 10 * * 0" + push: + branches: ["main"] + paths: [".forgejo/workflows/ocb.yaml", "OCB/**/*"] + +env: + REPOSITORY_URL: https://cmwedding-bot:${{ secrets.FORGEJO_TOKEN }}@git.weddingfactory.eu/api/packages/cmwedding/pypi + ODOO_VERSION: "17.0" + +jobs: + check-version-exists: + runs-on: ubuntu-latest + + outputs: + version: ${{ steps.check.outputs.version }} + + steps: + - id: check + uses: https://git.weddingfactory.eu/cmwedding/wheels@e8bb95db412835102b1ff58a955d29f00fd2f87f + with: + pypi-base-url: ${{ env.REPOSITORY_URL }} + pypi-package: odoo + github-repository: "OCA/OCB" + unstable-branch: ${{ env.ODOO_VERSION }} + + build: + name: Build wheels on ${{ matrix.os }} + + needs: check-version-exists + if: needs.check-version-exists.outputs.version != '' + + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + + steps: + - run: git clone --depth=1 https://github.com/OCA/OCB --branch ${{ env.ODOO_VERSION }} . + + - name: Patch source + run: | + rm pyproject.toml + wget "https://git.weddingfactory.eu/cmwedding/wheels/raw/branch/main/OCB/pyproject.toml" + sed -i 's/%s/${{ env.ODOO_VERSION }}/' pyproject.toml + + - name: Build wheels + uses: https://github.com/pypa/cibuildwheel@v2.23.3 + env: + CIBW_BEFORE_BUILD_LINUX: "pip install --index-url https://git.weddingfactory.eu/api/packages/cmwedding/pypi/simple/ psycopg2 pycairo" + CIBW_BUILD: "cp31{0..1}-manylinux_{x86_64,aarch64}" + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 + + - name: Publish package distributions to Forgejo + run: | + pip3 install twine + python3 -m twine upload ./wheelhouse/* + env: + TWINE_REPOSITORY_URL: ${{ env.REPOSITORY_URL }} + TWINE_NON_INTERACTIVE: 1 + diff --git a/OCB/pyproject.toml b/OCB/pyproject.toml new file mode 100644 index 0000000..e352e4a --- /dev/null +++ b/OCB/pyproject.toml @@ -0,0 +1,19 @@ +[project] +name = "odoo" +version = "%s" +dynamic = [ + "optional-dependencies", + "dependencies", + "classifiers", + "authors", + "license", + "requires-python", + "readme", + "description" +] + +[build-system] +requires = ["setuptools>=41"] +build-backend = "pep517_odoo" +backend-path = ["setup"] + From fd300caacc8b6eb5876d4ecb2ea1baaac3cc1020 Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Sat, 11 Oct 2025 12:52:48 +0200 Subject: [PATCH 8/9] feat(ocb): upgrade to odoo 18 and drop cibuildwheel --- .forgejo/workflows/ocb.yaml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.forgejo/workflows/ocb.yaml b/.forgejo/workflows/ocb.yaml index 5915a77..d960e62 100644 --- a/.forgejo/workflows/ocb.yaml +++ b/.forgejo/workflows/ocb.yaml @@ -10,7 +10,7 @@ on: env: REPOSITORY_URL: https://cmwedding-bot:${{ secrets.FORGEJO_TOKEN }}@git.weddingfactory.eu/api/packages/cmwedding/pypi - ODOO_VERSION: "17.0" + ODOO_VERSION: "18.0" jobs: check-version-exists: @@ -29,16 +29,12 @@ jobs: unstable-branch: ${{ env.ODOO_VERSION }} build: - name: Build wheels on ${{ matrix.os }} + name: Build wheels + runs-on: self-hosted needs: check-version-exists if: needs.check-version-exists.outputs.version != '' - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest] - steps: - run: git clone --depth=1 https://github.com/OCA/OCB --branch ${{ env.ODOO_VERSION }} . @@ -48,19 +44,23 @@ jobs: wget "https://git.weddingfactory.eu/cmwedding/wheels/raw/branch/main/OCB/pyproject.toml" sed -i 's/%s/${{ env.ODOO_VERSION }}/' pyproject.toml - - name: Build wheels - uses: https://github.com/pypa/cibuildwheel@v2.23.3 - env: - CIBW_BEFORE_BUILD_LINUX: "pip install --index-url https://git.weddingfactory.eu/api/packages/cmwedding/pypi/simple/ psycopg2 pycairo" - CIBW_BUILD: "cp31{0..1}-manylinux_{x86_64,aarch64}" - CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 - CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 - + - name: Setup dependencies + run: | + python3 -m venv .venv + source .venv/bin/activate + + pip3 install build wheel setuptools twine + pip3 install --index-url https://git.weddingfactory.eu/api/packages/cmwedding/pypi/simple/ psycopg2 pycairo + + - name: Build pure Python wheel + run: | + source .venv/bin/activate + python3 -m build --wheel + - name: Publish package distributions to Forgejo run: | - pip3 install twine - python3 -m twine upload ./wheelhouse/* + source .venv/bin/activate + python3 -m twine upload ./dist/* env: TWINE_REPOSITORY_URL: ${{ env.REPOSITORY_URL }} TWINE_NON_INTERACTIVE: 1 - From 23fd14db8960d8435eb2464904253a685ad9fcbf Mon Sep 17 00:00:00 2001 From: Oskar Manhart <52569953+oskardotglobal@users.noreply.github.com> Date: Sat, 11 Oct 2025 13:44:09 +0200 Subject: [PATCH 9/9] fix(ocb): actually use generated version --- .forgejo/workflows/ocb.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/ocb.yaml b/.forgejo/workflows/ocb.yaml index d960e62..ba91c0b 100644 --- a/.forgejo/workflows/ocb.yaml +++ b/.forgejo/workflows/ocb.yaml @@ -42,7 +42,7 @@ jobs: run: | rm pyproject.toml wget "https://git.weddingfactory.eu/cmwedding/wheels/raw/branch/main/OCB/pyproject.toml" - sed -i 's/%s/${{ env.ODOO_VERSION }}/' pyproject.toml + sed -i 's/%s/${{ needs.check-version-exists.outputs.version }}/' pyproject.toml - name: Setup dependencies run: |