name: tests on: pull_request: branches: - "18.0*" workflow_dispatch: jobs: test: runs-on: odoo-ci container: image: docker.0k.io/mirror/odoo:rc_18.0-ELABORE-LIGHT services: postgres: image: docker.0k.io/postgres:17.2.0-myc env: POSTGRES_USER: odoo POSTGRES_PASSWORD: odoopassword POSTGRES_DB: postgres steps: # The doodba image ships no Node.js, so actions/checkout@v4 cannot # run here. The repository is private, so the job token is required. - name: Checkout env: SECRET_GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | set -eu token="${GITEA_TOKEN:-${GITHUB_TOKEN:-${SECRET_GITEA_TOKEN:-${SECRET_GITHUB_TOKEN:-}}}}" if [ -z "$token" ]; then echo "::error::No job token available to clone the repository" exit 1 fi server="${GITHUB_SERVER_URL:-https://git.elabore.coop}" repo="${GITHUB_REPOSITORY:?GITHUB_REPOSITORY is not set}" ref="${GITHUB_REF:-${GITHUB_SHA:?neither GITHUB_REF nor GITHUB_SHA is set}}" auth_url="$(printf '%s' "${server%/}/${repo}.git" | sed -E "s#^https://#https://${token}@#")" git init -q . git config --global --add safe.directory "$PWD" git remote add origin "$auth_url" git fetch -q --depth=1 origin "$ref" git checkout -q FETCH_HEAD - name: Detect changed modules id: changed run: | set -eu if [ -n "${GITHUB_BASE_REF:-}" ]; then git fetch -q --depth=1 origin "refs/heads/$GITHUB_BASE_REF" base_rev="FETCH_HEAD" scope="diff against $GITHUB_BASE_REF" else base_rev="" scope="all installable modules (manual run)" fi if [ -n "$base_rev" ]; then modules="$( git diff --name-only "$base_rev" HEAD | awk -F/ '{print $1}' | sort -u | while read -r dir; do [ -f "$dir/__manifest__.py" ] && echo "$dir" done | paste -sd, - )" else modules="$( for dir in */; do dir="${dir%/}" [ -f "$dir/__manifest__.py" ] && echo "$dir" done | paste -sd, - )" fi echo "modules=$modules" >> "$GITHUB_OUTPUT" echo "Modules to test ($scope): ${modules:-}" - name: Run Odoo tests if: steps.changed.outputs.modules != '' run: bash .gitea/scripts/odoo-tests.sh "${{ steps.changed.outputs.modules }}"