Skip to content

Commit

Permalink
Release 0.2.0
Browse files Browse the repository at this point in the history
Added
-----

- New experimental command `odood deploy` that could be used to deploy production-ready Odoo instance.
- Added experimental support for Odoo 18
- Added new command `odood repo fix-series` that allows to set series for all modules in repo to project's serie.
- Added automatic builds of docker images with pre-installed Odoo.

Changed
-------

- Pre-commit related commands moved to `pre-commit` subcommand.
  Thus, following commands now available to work with pre-commit:
    - `odood pre-commit init`
    - `odood pre-commit set-up`
    - `odood pre-commit run`
- Change command `odood server run`. Command uses `execv` to run Odoo,
  thus, Odoo process will replace Odood process. Thus, option `--detach`
  is not available here. If you want to start Odoo in background, then
  `odood server start` command exists. Instead, this command (`odood server run`)
  is designed to run Odoo with provided args in same way as you run Odoo binary directly.
  For example, following command
  `odood server run -- -d my_database --install=crm --stop-after-init`,
  that will install `crm` module, will be translated to `odoo -d my_database --install=crm --stop-after-init`,
  that will be ran inside virtualenv of current Odood project.
    - Added new option `--ignore-running` that allows to ignore server running.
    - Removed option `--detach` as it does not have sense. Use `odood server start` instead.
- Changed generation of default test db name.
  Before it was: `odood<serie>-odood-test`
  Now it will be: `<db_user>-odood-test`
  • Loading branch information
katyukha committed Dec 12, 2024
2 parents a393101 + 5b9614f commit e1ddf8a
Show file tree
Hide file tree
Showing 60 changed files with 1,928 additions and 287 deletions.
135 changes: 135 additions & 0 deletions .github/workflows/publish-dockerimage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
name: Create and publish a Docker image

# Configures this workflow to run every time new release is published
on:
push:
tags:
- 'v*.*.*'
- 'v*.*.*-*'

# Defines two custom environment variables for the workflow.
# These are used for the Container registry domain,
# and a name for the Docker image that this workflow builds.
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
ODOOD_DLANG_COMPILER: ldc-1.39.0

# There is a single job in this workflow.
# It's configured to run on the latest available version of Ubuntu.
jobs:
build-ubuntu-20_04:
name: Build Ubuntu:20.04
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4

- name: Install D compiler
uses: dlang-community/setup-dlang@v1
with:
compiler: ${{ env.ODOOD_DLANG_COMPILER }}

- name: Install system dependencies
uses: lyricwulf/abc@v1
with:
linux: libzip-dev libpq-dev python3-dev

- name: Build Odood
run: |
dub build -b release --d-version OdoodInDocker
- name: Upload Odood compiled assets
uses: actions/upload-artifact@v3
with:
name: odood-amd64
path: |
build/odood
build-and-push-images:
runs-on: ubuntu-latest
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
permissions:
contents: read
packages: write
attestations: write
id-token: write
needs:
- build-ubuntu-20_04
strategy:
matrix:
# TODO: Build base image (without Odoo, only with odood itself) and then use it as base for odoo images
odoo_version:
- "15.0"
- "16.0"
- "17.0"
- "18.0"
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: 'Download artifacts for amd64'
uses: actions/download-artifact@v3
with:
name: odood-amd64
path: docker/bin/

- name: Make odood executable
run: |
chmod a+x docker/bin/odood
# Uses the `docker/login-action` action to log in to the Container registry
# using the account and password that will publish the packages.
# Once published, the packages are scoped to the account defined here.
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about)
# to extract tags and labels that will be applied to the specified image.
# The `id` "meta" allows the output of this step to be referenced in a subsequent step.
# The `images` value provides the base name for the tags and labels.
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/odoo/${{ matrix.odoo_version }}

- name: Prepare debian dependencies dependencies
id: prepare_deb_deps
run: |
echo "universal_deb_deps=$(cat .ci/deps/universal-deb.txt | tr '\n' ' ')" >> $GITHUB_OUTPUT
# This step uses the `docker/build-push-action` action to build the image,
# based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
# It uses the `context` parameter to define the build's context as the set of files located in the specified path.
# For more information, see "[Usage](https://github.com/docker/build-push-action#usage)"
# in the README of the `docker/build-push-action` repository.
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
- name: Build and push Docker image
id: push
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: ./docker
push: true
build-args: |
ODOO_VERSION=${{ matrix.odoo_version }}
ODOOD_DEPENDENCIES=${{ steps.prepare_deb_deps.outputs.universal_deb_deps }}
tags: ${{ steps.meta.outputs.tags }}
labels: |
${{ steps.meta.outputs.labels }}
odoo_version=${{ matrix.odoo_version }}
# This step generates an artifact attestation for the image,
# which is an unforgeable statement about where and how it was built.
# It increases supply chain security for people who consume the image.
# For more information, see "[AUTOTITLE](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds)."
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME}}/odoo/${{ matrix.odoo_version }}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true

6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
push:
tags:
- 'v*.*.*'
- 'v*.*.*-RC*'
- 'v*.*.*-*'

env:
ODOOD_DLANG_COMPILER: ldc-1.39.0
Expand Down Expand Up @@ -90,10 +90,10 @@ jobs:
- name: 'Show directory structure'
run: ls -R

- name: Check RC Release
- name: Check RC/alpha Release
id: check-rc-release
run: |
if [[ ${{ github.event.ref }} =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+-(rc|RC)[0-9]+$ ]]; then
if [[ ${{ github.event.ref }} =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+-(rc|RC|[0-9a-zA-Z\.\-]+)[0-9]+$ ]]; then
echo "is_rc_release=true" >> $GITHUB_OUTPUT
elif [[ ${{ github.event.ref }} =~ ^refs/tags/v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "is_rc_release=false" >> $GITHUB_OUTPUT
Expand Down
94 changes: 94 additions & 0 deletions .github/workflows/test-deployments.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@

# Workflow to test Odoo deployments on various OS
name: Tests OS deployments
on:
push:
branches:
- '*'
env:
ODOOD_DLANG_COMPILER: ldc-1.39.0

# In this test, we build Odood on Ubuntu 20.04 and then try to run
# produced binary on different distros and versions
jobs:
# Compile test builds on ubuntu 20.04
compile-ubuntu-20_04:
name: Build Ubuntu:20.04
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3

- name: Install D compiler
uses: dlang-community/setup-dlang@v1
with:
compiler: ${{ env.ODOOD_DLANG_COMPILER }}

- name: Install system dependencies
uses: lyricwulf/abc@v1
with:
linux: libzip-dev libpq-dev python3-dev

- name: Build Odood
run: |
dub build -b unittest-cov
- name: Upload Odood compiled assets
uses: actions/upload-artifact@v3
with:
name: odood-ubuntu-20.04
path: |
build/odood
# Run integration tests for different operation systems
run-deployment-tests:
name: Run deployment tests
strategy:
fail-fast: false
matrix:
image:
- "debian:bullseye"
- "ubuntu:20.04"
- "ubuntu:22.04"
- "ubuntu:24.04"
odoo_version:
- "18.0"
- "17.0"
- "16.0"
runs-on: ubuntu-22.04
needs:
- compile-ubuntu-20_04
container:
image: ${{ matrix.image }}
env:
DEBIAN_FRONTEND: 'noninteractive'
steps:
- uses: actions/checkout@v3

- name: 'Download artifacts for ubuntu 20.04'
uses: actions/download-artifact@v3
with:
name: odood-ubuntu-20.04
path: build

- name: Update apt registry
run: apt-get update

- name: Install system dependencies
run: apt-get install --no-install-recommends -yq sudo logrotate

- name: Install package dependencies
run: apt-get install --no-install-recommends -yq $(cat .ci/deps/universal-deb.txt)

- name: Make test build executable
run: chmod a+x ./build/odood

- name: Deploy with init-script
run: ./build/odood deploy -v ${{ matrix.odoo_version }} --supervisor=init-script

# TODO: Add test some operations with this instance

- name: Upload coverage to codecov
uses: codecov/codecov-action@v3
with:
flags: deployment-tests-${{ matrix.image }}-${{ matrix.odoo_version }}
name: odood-deployment-tests-${{ matrix.image }}-${{ matrix.odoo_version }}
1 change: 0 additions & 1 deletion .github/workflows/test-os-integrations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ jobs:
- "debian:bullseye"
- "ubuntu:20.04"
- "ubuntu:22.04"
- "ubuntu:23.04"
- "ubuntu:24.04"
runs-on: ubuntu-22.04
needs:
Expand Down
34 changes: 33 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,38 @@
# Changelog

## Release 0.2.0 (2024-12-12)

### Added

- New experimental command `odood deploy` that could be used to deploy production-ready Odoo instance.
- Added experimental support for Odoo 18
- Added new command `odood repo fix-series` that allows to set series for all modules in repo to project's serie.
- Added automatic builds of docker images with pre-installed Odoo.

### Changed

- Pre-commit related commands moved to `pre-commit` subcommand.
Thus, following commands now available to work with pre-commit:
- `odood pre-commit init`
- `odood pre-commit set-up`
- `odood pre-commit run`
- Change command `odood server run`. Command uses `execv` to run Odoo,
thus, Odoo process will replace Odood process. Thus, option `--detach`
is not available here. If you want to start Odoo in background, then
`odood server start` command exists. Instead, this command (`odood server run`)
is designed to run Odoo with provided args in same way as you run Odoo binary directly.
For example, following command
`odood server run -- -d my_database --install=crm --stop-after-init`,
that will install `crm` module, will be translated to `odoo -d my_database --install=crm --stop-after-init`,
that will be ran inside virtualenv of current Odood project.
- Added new option `--ignore-running` that allows to ignore server running.
- Removed option `--detach` as it does not have sense. Use `odood server start` instead.
- Changed generation of default test db name.
Before it was: `odood<serie>-odood-test`
Now it will be: `<db_user>-odood-test`

---

## Release 0.1.0 (2024-08-15)

### Added
Expand All @@ -13,7 +46,6 @@
- New command `odood venv run` that allows to run any command from current venv.
- New command `odood repo run-pre-commit` to run [pre-commit](https://pre-commit.com/) for the repo.


### Changed

- Database restoration reimplemented in D,
Expand Down
Loading

0 comments on commit e1ddf8a

Please sign in to comment.