Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
08c7b52
[19.0][FIX] base: rename user.groups_id references in domain/code
dnplkndll May 13, 2026
4c00315
ci: mirror upstream + aggregate + build image to registry.ledoweb.com
dnplkndll May 13, 2026
1a593d9
ci(aggregate): set git identity globally before gitaggregate
dnplkndll May 13, 2026
7f84b5e
ci(build-image): switch from Zot to GAR with Workload Identity Federa…
dnplkndll May 13, 2026
43c57f9
ci(build-image): revert to Zot at registry.hz.ledoweb.com
dnplkndll May 13, 2026
e64e8cb
ci(chain): aggregate fires repository_dispatch to build-image
dnplkndll May 13, 2026
6be5b03
fix(image): apt-install git so openupgradelib install from git can run
dnplkndll May 14, 2026
9b91e01
fix(aggregate): move AGGREGATE_PUSH_TOKEN check from if: to runtime
dnplkndll May 14, 2026
b4cf0a5
ci(build-image): build multi-arch (linux/amd64 + linux/arm64)
dnplkndll May 14, 2026
0f2f195
ci(build-image): drop arm64, keep amd64 only
dnplkndll May 14, 2026
6eb92af
ci(aggregate): merge five new 19.0-fix-* branches into aggregated
dnplkndll May 15, 2026
4d2bdda
ci(aggregate): use single 19.0-fix-rollup branch instead of 5 individ…
dnplkndll May 15, 2026
5f5c272
ci(test-migration): extend triggers to 19.0-mig-* / 19.0-fix-* / aggr…
dnplkndll May 15, 2026
db830e1
ci(documentation-commit): restrict to OCA upstream pushes
dnplkndll May 15, 2026
9b4a9a6
Merge branch '19.0-fix-user-groups-id-rename' of https://github.com/l…
github-actions[bot] May 15, 2026
98b6ba7
Merge branch '19.0-fix-rollup' of https://github.com/ledoent/OpenUpgr…
github-actions[bot] May 15, 2026
e8e0dd4
[MIG] mail/sms/google/contacts/calendar_sms: 10 comms-cluster annotat…
dnplkndll May 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions .github/workflows/aggregate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Aggregate fork branches

on:
push:
branches:
- ledoent
- "19.0-fix-*"
workflow_dispatch:

permissions:
contents: write

jobs:
aggregate:
runs-on: ubuntu-latest
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"

- name: Install git-aggregator
run: pip install git-aggregator==4.1

- name: Configure git identity (gitaggregate needs this before merging)
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Checkout fork (no working tree needed; gitaggregate clones fresh)
uses: actions/checkout@v4
with:
ref: ledoent
path: fork-meta
fetch-depth: 1

- name: Write aggregate config
# gitaggregate clones into ./openupgrade so the lab's repos.yaml layout is reproduced.
# `target ledoent aggregated` is what gets pushed back.
run: |
cat > aggregate.yml <<'YAML'
./openupgrade:
defaults:
depth: 500
remotes:
origin: https://github.com/OCA/OpenUpgrade.git
ledoent: https://github.com/ledoent/OpenUpgrade.git
target: ledoent aggregated
merges:
- ledoent ledoent
- ledoent 19.0-fix-user-groups-id-rename
# 19.0-fix-rollup is a conflict-resolved combination of the five
# OCA/OpenUpgrade PRs #5628-5632 (cherry-picked onto origin/19.0
# in dependency order). Listing them individually here fails
# because #5628 and #5630 both touch hr/19.0.1.1/pre-migration.py
# with non-overlapping additions that gitaggregate's straight
# `git pull --no-rebase` can't auto-merge. When any OCA PR
# changes, rebase the rollup branch.
- ledoent 19.0-fix-rollup
YAML

- name: Run gitaggregate
run: gitaggregate -c aggregate.yml

- name: Force-push aggregated
id: push
working-directory: openupgrade
env:
PUSH_TOKEN: ${{ secrets.AGGREGATE_PUSH_TOKEN || secrets.GITHUB_TOKEN }}
run: |
git remote set-url ledoent "https://x-access-token:${PUSH_TOKEN}@github.com/ledoent/OpenUpgrade.git"
git push --force ledoent HEAD:refs/heads/aggregated
sha=$(git rev-parse HEAD)
echo "Aggregated head: $sha"
echo "sha=$sha" >> "$GITHUB_OUTPUT"

- name: Trigger build-image workflow
# GITHUB_TOKEN-driven branch pushes don't fire downstream workflows
# (loop protection). Use repository_dispatch with a PAT so build-image
# can react. Falls back to no-op if AGGREGATE_PUSH_TOKEN is unset.
env:
GH_TOKEN: ${{ secrets.AGGREGATE_PUSH_TOKEN }}
run: |
if [ -z "$GH_TOKEN" ]; then
echo "AGGREGATE_PUSH_TOKEN not set; skipping repository_dispatch."
echo "Run \`gh workflow run build-image.yml --ref aggregated\` manually."
exit 0
fi
gh api \
-X POST \
"/repos/${{ github.repository }}/dispatches" \
-f event_type=aggregated-updated \
-f "client_payload[sha]=${{ steps.push.outputs.sha }}"
echo "Fired repository_dispatch event_type=aggregated-updated"
58 changes: 58 additions & 0 deletions .github/workflows/build-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Build openupgrade image

# Builds an Odoo 19 image with the aggregated OpenUpgrade tree baked in
# and pushes to the ledoent Zot registry at registry.hz.ledoweb.com.
#
# Auth: basic-auth via the `robot-ci` Zot user.
# Secrets: ZOT_USERNAME (= robot-ci), ZOT_PASSWORD (set on this repo).
#
# Image: registry.hz.ledoweb.com/openupgrade/openupgrade
# Consumed by: openupgrade-lab/docker-compose.yml (odoo-19 service)

on:
push:
branches:
- aggregated
repository_dispatch:
types: [aggregated-updated]
workflow_dispatch:

concurrency:
group: build-image-${{ github.ref }}
cancel-in-progress: true

env:
ZOT_HOST: registry.hz.ledoweb.com
ZOT_IMAGE: registry.hz.ledoweb.com/openupgrade/openupgrade

jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
with:
ref: aggregated
fetch-depth: 1

- uses: docker/login-action@v3
with:
registry: ${{ env.ZOT_HOST }}
username: ${{ secrets.ZOT_USERNAME }}
password: ${{ secrets.ZOT_PASSWORD }}

- uses: docker/setup-buildx-action@v3

- name: Build and push (amd64 only — cluster is amd64; M-series uses Rosetta)
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.openupgrade
push: true
platforms: linux/amd64
tags: |
${{ env.ZOT_IMAGE }}:latest
${{ env.ZOT_IMAGE }}:${{ github.sha }}
cache-from: type=registry,ref=${{ env.ZOT_IMAGE }}:buildcache
cache-to: type=registry,ref=${{ env.ZOT_IMAGE }}:buildcache,mode=max
5 changes: 5 additions & 0 deletions .github/workflows/documentation-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,15 @@ name: Build and commit documentation

on:
push:
branches: ["19.0"]
paths: ["docsource/modules180-190.rst"]

jobs:
documentation-commit:
# Docs publishing only makes sense on OCA upstream (default branch
# publishes to https://oca.github.io/OpenUpgrade/). Forks don't have
# a `documentation` branch — checkout would fail. Restrict to OCA.
if: ${{ github.repository_owner == 'OCA' }}
runs-on: ubuntu-latest
steps:
- name: Check out OpenUpgrade Documentation
Expand Down
62 changes: 62 additions & 0 deletions .github/workflows/mirror-upstream.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Mirror upstream OCA/OpenUpgrade

on:
schedule:
- cron: "0 6 * * *" # daily 06:00 UTC
workflow_dispatch:

permissions:
contents: write

jobs:
mirror:
runs-on: ubuntu-latest
steps:
- name: Checkout fork
uses: actions/checkout@v4
with:
ref: ledoent
fetch-depth: 0
token: ${{ secrets.GIT_PUSH_TOKEN || secrets.GITHUB_TOKEN }}

- name: Fetch upstream
run: |
git remote add upstream https://github.com/OCA/OpenUpgrade.git
git fetch upstream 19.0

- name: Force-push upstream/19.0 to fork's 19.0
run: |
git push origin "upstream/19.0:refs/heads/19.0" --force-with-lease || \
git push origin "upstream/19.0:refs/heads/19.0" --force

- name: Check whether ledoent has drifted from upstream/19.0
id: drift
run: |
# ledoent should be upstream/19.0 + custom-CI commits. If a merge-base
# comparison shows ledoent missing upstream commits, we need a rebase.
if git merge-base --is-ancestor upstream/19.0 ledoent; then
echo "drift=no" >> "$GITHUB_OUTPUT"
echo "ledoent is up to date with upstream/19.0"
else
echo "drift=yes" >> "$GITHUB_OUTPUT"
behind=$(git rev-list --count ledoent..upstream/19.0)
echo "ledoent is behind upstream/19.0 by $behind commits — rebase needed"
fi

- name: Open issue if drift detected
if: steps.drift.outputs.drift == 'yes'
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = context.repo;
const title = 'ledoent branch needs rebase onto upstream/19.0';
const existing = await github.rest.issues.listForRepo({
owner, repo, labels: 'mirror-drift', state: 'open'
});
if (existing.data.length === 0) {
await github.rest.issues.create({
owner, repo, title,
labels: ['mirror-drift'],
body: 'upstream OCA/OpenUpgrade `19.0` has advanced. Rebase `ledoent` onto it and force-push.\n\n```bash\ngit fetch origin\ngit checkout ledoent\ngit rebase origin/19.0\ngit push -f origin ledoent\n```'
});
}
8 changes: 7 additions & 1 deletion .github/workflows/test-migration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ on:
branches:
- "19.0"
- "19.0-ocabot-*"
- "19.0-mig-*"
- "19.0-fix-*"
- "aggregated"
- "ledoent"

jobs:
test:
Expand All @@ -23,7 +27,9 @@ jobs:
DB_PASSWORD: "odoo"
DB_PORT: 5432
DB_USERNAME: "odoo"
DOWNLOADS: https://github.com/${{github.repository}}/releases/download/databases
# Test databases live only on OCA upstream; forks reuse them so we
# don't have to mirror multi-GB psql dumps.
DOWNLOADS: https://github.com/OCA/OpenUpgrade/releases/download/databases
ODOO: "./odoo/odoo-bin"
PGHOST: "localhost"
PGPASSWORD: "odoo"
Expand Down
34 changes: 34 additions & 0 deletions Dockerfile.openupgrade
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## Image: registry.ledoweb.com/openupgrade
##
## Built by .github/workflows/build-image.yml on every push to `aggregated`.
## Contains:
## - Odoo 19.0 base
## - Python deps the openupgrade-lab uses (s3fs, redis, sentry-sdk, etc.)
## - The full `aggregated` checkout of this repo as /opt/openupgrade
## The lab's docker-compose mounts the openupgradelib source over the
## pip-installed lib so it can hot-swap during development.

FROM odoo:19.0

USER root

# git needed for the openupgradelib install (no pinned PyPI release yet for 19.0).
RUN apt-get update && \
apt-get install -y --no-install-recommends git && \
rm -rf /var/lib/apt/lists/*

RUN pip install --no-cache-dir --break-system-packages \
fsspec>=2025.3.0 \
s3fs \
packaging \
python-json-logger \
redis \
sentry-sdk \
python-slugify \
plaid-python \
cssselect \
"git+https://github.com/OCA/openupgradelib@master"

COPY --chown=odoo:odoo . /opt/openupgrade

USER odoo
20 changes: 10 additions & 10 deletions docsource/modules180-190.rst
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ Module coverage 18.0 -> 19.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| calendar |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| calendar_sms | | |
| calendar_sms |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| certificate | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand All @@ -110,7 +110,7 @@ Module coverage 18.0 -> 19.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| cloud_storage_google | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| contacts | | |
| contacts |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| crm | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down Expand Up @@ -158,11 +158,11 @@ Module coverage 18.0 -> 19.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| google_account | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| |new| google_address_autocomplete | | |
| |new| google_address_autocomplete |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| google_calendar | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| google_gmail | | |
| google_gmail |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| google_recaptcha |Nothing to do | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down Expand Up @@ -704,11 +704,11 @@ Module coverage 18.0 -> 19.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail_bot | | |
| mail_bot |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail_bot_hr | | |
| mail_bot_hr |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail_group | | |
| mail_group |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mail_plugin | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down Expand Up @@ -746,7 +746,7 @@ Module coverage 18.0 -> 19.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| microsoft_calendar | |No DB layout changes. |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| microsoft_outlook | | |
| microsoft_outlook |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| mrp |Done | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down Expand Up @@ -1046,9 +1046,9 @@ Module coverage 18.0 -> 19.0
+---------------------------------------------------+----------------------+-------------------------------------------------+
| sales_team |Nothing to do | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| sms | | |
| sms |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| sms_twilio | | |
| sms_twilio |Done |Nothing to do |
+---------------------------------------------------+----------------------+-------------------------------------------------+
| snailmail | | |
+---------------------------------------------------+----------------------+-------------------------------------------------+
Expand Down
Loading
Loading