[ADD] odoo_sh: documentation
BIN
_static/banners/odoo-sh.jpg
Normal file
After Width: | Height: | Size: 256 KiB |
11
odoo_sh/advanced.rst
Normal file
@ -0,0 +1,11 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
=================
|
||||
Advanced
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
advanced/containers
|
||||
advanced/submodules
|
191
odoo_sh/advanced/containers.rst
Normal file
@ -0,0 +1,191 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
==================================
|
||||
Containers
|
||||
==================================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
Each build is isolated within its own container (Linux namespaced container).
|
||||
|
||||
The base is an Ubuntu 16.04 system, where all of Odoo's required dependencies,
|
||||
as well as common useful packages, are installed.
|
||||
|
||||
The Odoo.sh team is open to install any system packages
|
||||
as long as they are distributed in the official Ubuntu repositories.
|
||||
`Leave us a feedback <https://www.odoo.sh/feedback>`_ if you would like a package not yet installed.
|
||||
|
||||
If your project requires additional Python dependencies, or more recent releases,
|
||||
you can define a :file:`requirements.txt` file in the root of your branches listing them.
|
||||
The platform will take care to install these dependencies in your containers.
|
||||
`The pip requirements specifiers <https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers>`_
|
||||
documentation can help you write a :file:`requirements.txt` file.
|
||||
To have a concrete example,
|
||||
check out the `requirements.txt file of Odoo <https://github.com/odoo/odoo/blob/11.0/requirements.txt>`_.
|
||||
|
||||
The :file:`requirements.txt` files of submodules are taken into account as well. The platform
|
||||
looks for :file:`requirements.txt` files in each folder containing Odoo modules: Not in the module folder itself,
|
||||
but in their parent folder.
|
||||
|
||||
Directory structure
|
||||
===================
|
||||
|
||||
As the containers are Ubuntu based, their directory structure follows the linux Filesystem Hierarchy Standard.
|
||||
`Ubuntu's filesystem tree overview <https://help.ubuntu.com/community/LinuxFilesystemTreeOverview#Main_directories>`_
|
||||
explains the main directories.
|
||||
|
||||
Here are the Odoo.sh pertinent directories:
|
||||
|
||||
::
|
||||
|
||||
.
|
||||
├── home
|
||||
│ └── odoo
|
||||
│ ├── src
|
||||
│ │ ├── odoo Odoo Community source code
|
||||
│ │ │ └── odoo-bin Odoo server executable
|
||||
│ │ ├── enterprise Odoo Enterprise source code
|
||||
│ │ ├── themes Odoo Themes source code
|
||||
│ │ └── user Your repository branch source code
|
||||
│ ├── data
|
||||
│ │ ├── filestore database attachments, as well as the files of binary fields
|
||||
│ │ └── sessions visitors and users sessions
|
||||
│ └── logs
|
||||
│ ├── install.log Database installation logs
|
||||
│ ├── odoo.log Running server logs
|
||||
│ ├── update.log Database updates logs
|
||||
│ └── pip.log Python packages installation logs
|
||||
└── usr
|
||||
├── lib
|
||||
│ ├── python2.7
|
||||
│ └── dist-packages Python 2.7 standard libraries
|
||||
│ ├── python3
|
||||
│ └── dist-packages Python 3 standard libraries
|
||||
│ └── python3.5
|
||||
│ └── dist-packages Python 3.5 standard libraries
|
||||
├── local
|
||||
│ └── lib
|
||||
│ ├── python2.7
|
||||
│ │ └── dist-packages Python 2.7 third-party libraries
|
||||
│ └── python3.5
|
||||
│ └── dist-packages Python 3.5 third-party libraries
|
||||
└── usr
|
||||
└── bin
|
||||
├── python2.7 Python 2.7 executable
|
||||
└── python3.5 Python 3.5 executable
|
||||
|
||||
Both Python 2.7 and 3.5 are installed in the containers. However:
|
||||
|
||||
* If your project is configured to use Odoo 10.0, the Odoo server runs with Python 2.7.
|
||||
* If your project is configured to use Odoo 11.0, the Odoo server runs with Python 3.5.
|
||||
|
||||
Database shell
|
||||
==============
|
||||
|
||||
While accessing a container with the shell, you can access the database using *psql*.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
odoo@odoo-addons-master-1.odoo.sh:~$ psql
|
||||
psql (9.5.2, server 9.5.11)
|
||||
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
|
||||
Type "help" for help.
|
||||
|
||||
odoo-addons-master-1=>
|
||||
|
||||
**Be careful !**
|
||||
`Use transactions <https://www.postgresql.org/docs/current/static/sql-begin.html>`_ (*BEGIN...COMMIT/ROLLBACK*)
|
||||
for every *sql* statements leading to changes
|
||||
(*UPDATE*, *DELETE*, *ALTER*, ...), especially for your production database.
|
||||
|
||||
The transaction mechanism is your safety net in case of mistake.
|
||||
You simply have to rollback your changes to revert your database to its previous state.
|
||||
|
||||
For example, it may happen that you forget to set your *WHERE* condition.
|
||||
|
||||
.. code-block:: sql
|
||||
|
||||
odoo-addons-master-1=> BEGIN;
|
||||
BEGIN
|
||||
odoo-addons-master-1=> UPDATE res_users SET password = '***';
|
||||
UPDATE 457
|
||||
odoo-addons-master-1=> ROLLBACK;
|
||||
ROLLBACK
|
||||
|
||||
In such a case, you can rollback to revert the unwanted changes that you just mistakenly did, and rewrite the statement:
|
||||
|
||||
.. code-block:: sql
|
||||
|
||||
odoo-addons-master-1=> BEGIN;
|
||||
BEGIN
|
||||
odoo-addons-master-1=> UPDATE res_users SET password = '***' WHERE id = 1;
|
||||
UPDATE 1
|
||||
odoo-addons-master-1=> COMMIT;
|
||||
COMMIT
|
||||
|
||||
However, do not forget to either commit or rollback your transaction after having done it.
|
||||
Open transactions may lock records in your tables
|
||||
and your running database may wait for them to be released. It can cause a server to hang indefinitely.
|
||||
|
||||
In addition, when possible, use your staging databases to test your statements first. It gives you an extra safety net.
|
||||
|
||||
Run an Odoo server
|
||||
==================
|
||||
|
||||
You can start an Odoo server instance from a container shell. You won't be able to access it from the outside world
|
||||
with a browser, but you can for instance:
|
||||
|
||||
* use the Odoo shell,
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ ~/src/odoo/odoo-bin shell -d odoo-addons-master-1 --addons-path=~/src/user,~/src/enterprise,~/src/themes,~/src/odoo/addons,~/src/odoo/odoo/addons --workers=0 --max-cron-threads=0
|
||||
>>> partner = env['res.partner'].search([('email', '=', 'asusteK@yourcompany.example.com')], limit=1)
|
||||
>>> partner.name
|
||||
'ASUSTeK'
|
||||
>>> partner.name = 'Odoo'
|
||||
>>> env['res.partner'].search([('email', '=', 'asusteK@yourcompany.example.com')], limit=1).name
|
||||
'Odoo'
|
||||
|
||||
* install a module,
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ ~/src/odoo/odoo-bin -d odoo-addons-master-1 --addons-path=~/src/user,~/src/enterprise,~/src/themes,~/src/odoo/addons,~/src/odoo/odoo/addons -i sale --workers=0 --max-cron-threads=0 --stop-after-init
|
||||
|
||||
* update a module,
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ ~/src/odoo/odoo-bin -d odoo-addons-master-1 --addons-path=~/src/user,~/src/enterprise,~/src/themes,~/src/odoo/addons,~/src/odoo/odoo/addons -u sale --workers=0 --max-cron-threads=0 --stop-after-init
|
||||
|
||||
* run the tests for a module,
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ ~/src/odoo/odoo-bin -d odoo-addons-master-1 --addons-path=~/src/user,~/src/enterprise,~/src/themes,~/src/odoo/addons,~/src/odoo/odoo/addons -i sale --test-enable --log-level=test --workers=0 --max-cron-threads=0 --stop-after-init
|
||||
|
||||
In the above commands, the argument:
|
||||
|
||||
* *--addons-path* is to specify the directories containing the modules,
|
||||
the part *~/src/user* can vary, according to your branch code structure,
|
||||
* *--workers=0* is to run your server using multi-threading instead of multiple workers,
|
||||
* *--max-cron-threads=0* is to prevent the scheduled tasks to run,
|
||||
* *--stop-after-init* is to immediately shutdown the server instance after it completed the operations you asked.
|
||||
|
||||
More options are available and detailed in the
|
||||
`CLI documentation <https://www.odoo.com/documentation/11.0/reference/cmdline.html>`_.
|
||||
|
||||
You can find in the logs (*~/logs/odoo.log*) the addons path used by Odoo.sh to run your server.
|
||||
Look for "*odoo: addons paths*":
|
||||
|
||||
::
|
||||
|
||||
2018-02-19 10:51:39,267 4 INFO ? odoo: Odoo version 11.0
|
||||
2018-02-19 10:51:39,268 4 INFO ? odoo: Using configuration file at /home/odoo/.config/odoo/odoo.conf
|
||||
2018-02-19 10:51:39,268 4 INFO ? odoo: addons paths: ['/home/odoo/data/addons/11.0', '/home/odoo/src/user', '/home/odoo/src/enterprise', '/home/odoo/src/themes', '/home/odoo/src/odoo/addons', '/home/odoo/src/odoo/odoo/addons']
|
||||
|
||||
**Be careful**, especially with your production database.
|
||||
Operations that you perform running this Odoo server instance are not isolated:
|
||||
Changes will be effective in the database. Always, make your tests in your staging databases.
|
BIN
odoo_sh/advanced/media/advanced-submodules-button.png
Normal file
After Width: | Height: | Size: 6.1 KiB |
BIN
odoo_sh/advanced/media/advanced-submodules-dialog.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
odoo_sh/advanced/media/advanced-submodules-github-sshurl.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
104
odoo_sh/advanced/submodules.rst
Normal file
@ -0,0 +1,104 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
.. _odoosh-advanced-submodules:
|
||||
|
||||
==================================
|
||||
Submodules
|
||||
==================================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
A `Git submodule <https://git-scm.com/book/en/v2/Git-Tools-Submodules>`_ allows you to integrate other Git projects
|
||||
into your code, without the need to copy-paste all their code.
|
||||
|
||||
Indeed, your custom modules can depend on modules from other repositories.
|
||||
Regarding Odoo, this feature allows you to add modules from other Git repositories into the branches of your repository.
|
||||
Adding these dependencies in your branch through submodules makes the deployment of your code and servers easier,
|
||||
as you can clone the repositories added as submodules at the same time you clone your own repository.
|
||||
|
||||
Besides, you can choose the branch of the repository added as submodule
|
||||
and you have the control of the revision you want.
|
||||
It's up to you to decide wether you want to pin the submodule to a specific revision and when you want to update
|
||||
to a newer revision.
|
||||
|
||||
In Odoo.sh, the submodules gives you the possibility to use and depends on modules available in other repositories.
|
||||
The platform will detect that you added modules through submodules in your branches
|
||||
and add them to your addons path automatically so you can install them in your databases.
|
||||
|
||||
If you add private repositories as submodules in your branches,
|
||||
you need to configure a deploy key in your Odoo.sh project settings and in your repository settings.
|
||||
Otherwise Odoo.sh won't be allowed to download them.
|
||||
The procedure is detailed in the chapter :ref:`Settings > Submodules <odoosh-gettingstarted-settings-submodules>`.
|
||||
|
||||
Adding a submodule
|
||||
==================
|
||||
|
||||
With Odoo.sh (simple)
|
||||
---------------------
|
||||
|
||||
On Odoo.sh, in the branches view of your project, choose the branch in which you want to add a submodule.
|
||||
|
||||
In the upper right corner, click on the *Submodule* button, and then on *Run*.
|
||||
|
||||
.. image:: ./media/advanced-submodules-button.png
|
||||
:align: center
|
||||
|
||||
A dialog with a form is shown. Fill the inputs as follows:
|
||||
|
||||
* Repository URL: The SSH URL of the repository.
|
||||
* Branch: The branch you want to use.
|
||||
* Path: The folder in which you want to add this submodule in your branch.
|
||||
|
||||
.. image:: ./media/advanced-submodules-dialog.png
|
||||
:align: center
|
||||
|
||||
On Github, you can get the repository URL with the *Clone or download* button of the repository. Make sure to *use SSH*.
|
||||
|
||||
.. image:: ./media/advanced-submodules-github-sshurl.png
|
||||
:align: center
|
||||
|
||||
For now it is not possible to add **private** repositories with this method.
|
||||
You can nevertheless do so :ref:`with Git <odoosh-advanced-submodules-withgit>`.
|
||||
|
||||
.. _odoosh-advanced-submodules-withgit:
|
||||
|
||||
With Git (advanced)
|
||||
---------------------
|
||||
|
||||
In a terminal, in the folder where your Git repository is cloned,
|
||||
checkout the branch in which you want to add a submodule:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git checkout <branch>
|
||||
|
||||
Then, add the submodule using the command below:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git submodule add -b <branch> <git@yourprovider.com>:<username/repository.git> <path>
|
||||
|
||||
Replace
|
||||
|
||||
* *<git@yourprovider.com>:<username/repository.git>* by the SSH URL of the repository you want to add as submodule,
|
||||
* *<branch>* by the branch you want to use in the above repository,
|
||||
* *<path>* by the folder in which you want to add this submodule.
|
||||
|
||||
Commit and push your changes:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git commit -a && git push -u <remote> <branch>
|
||||
|
||||
Replace
|
||||
|
||||
* <remote> by the repository on which you want to push your changes. For a standard Git setup, this is *origin*.
|
||||
* <branch> by the branch on which you want to push your changes.
|
||||
Most likely the branch you used :code:`git checkout` on in the first step.
|
||||
|
||||
You can read the `git-scm.com documentation <https://git-scm.com/book/en/v2/Git-Tools-Submodules>`_
|
||||
for more details about the Git submodules.
|
||||
For instance, if you would like to update your submodules to have their latest revision,
|
||||
you can follow the chapter
|
||||
`Pulling in Upstream changes <https://git-scm.com/book/en/v2/Git-Tools-Submodules#_pulling_in_upstream_changes>`_.
|
12
odoo_sh/documentation.rst
Normal file
@ -0,0 +1,12 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
==========================
|
||||
Odoo.sh
|
||||
==========================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
overview
|
||||
getting_started
|
||||
advanced
|
15
odoo_sh/getting_started.rst
Normal file
@ -0,0 +1,15 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
=================
|
||||
Get started
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
getting_started/create
|
||||
getting_started/branches
|
||||
getting_started/builds
|
||||
getting_started/status
|
||||
getting_started/settings
|
||||
getting_started/first_module
|
325
odoo_sh/getting_started/branches.rst
Normal file
@ -0,0 +1,325 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
==================================
|
||||
Branches
|
||||
==================================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
The branches view gives you an overview of the different branches your repository has.
|
||||
|
||||
.. image:: ./media/interface-branches.png
|
||||
:align: center
|
||||
|
||||
.. _odoosh-gettingstarted-branches-stages:
|
||||
|
||||
Stages
|
||||
===============
|
||||
|
||||
Odoo.sh offers three different stages for your branches: production, staging and development.
|
||||
|
||||
You can change the stage of a branch by drag and dropping it on the stage section title.
|
||||
|
||||
.. image:: ./media/interface-branches-stagechange.png
|
||||
:align: center
|
||||
|
||||
Production
|
||||
----------
|
||||
This is the branch holding the code on which your production database run.
|
||||
There can be only one production branch.
|
||||
|
||||
When you push a new commit in this branch,
|
||||
your production server is updated with the code of the new revision and is then restarted.
|
||||
|
||||
If your changes require the update of a module, such as a change in a form view,
|
||||
and you want it to be performed automatically,
|
||||
increase the version number of the module in its manifest (*__manifest__.py*).
|
||||
The platform will then take care to perform the update.
|
||||
|
||||
This method is equivalent to perform an upgrade of the module through the Apps menu,
|
||||
or through the :code:`-u` switch of
|
||||
`the command line <https://www.odoo.com/documentation/11.0/reference/cmdline.html>`_.
|
||||
|
||||
In the case the changes in the commit prevent the server to restart,
|
||||
or if the modules update fails,
|
||||
the server is automatically reverted to the previous successful code revision and
|
||||
the database is roll-backed as it was before the update.
|
||||
You still have access to the log of the failed update, so you can troubleshoot it.
|
||||
|
||||
The demo data is not loaded, as it is not meant to be used in a production database.
|
||||
The unit tests are not performed, as it would increase the unavailabity time of the production database during the updates.
|
||||
|
||||
Staging
|
||||
-------
|
||||
Staging branches are meant to test your new features using the production data.
|
||||
|
||||
When you push a new commit in one of these branches,
|
||||
a new server is started, using a duplicate of the production database and the new revision of the branch.
|
||||
|
||||
You can therefore test your latest features using the production data without compromising the actual
|
||||
production database with test records.
|
||||
|
||||
The outgoing emails are not sent: They are intercepted by the mailcatcher,
|
||||
which provides an interface to preview the emails sent by your database.
|
||||
That way, you do not have to worry about sending test emails to your contacts.
|
||||
|
||||
Scheduled actions are disabled. If you want to test them, you have to enable them or trigger their action manually.
|
||||
Be careful though: If these actions perform changes on third-party services (FTP servers, email servers, ...)
|
||||
used by your production database as well,
|
||||
you might cause unwanted changes in your production.
|
||||
|
||||
The databases created for staging branches are meant to live at least two weeks.
|
||||
After that, they can be garbage collected automatically.
|
||||
If you make configuration changes or view changes in these branches, make sure to document them or write them directly
|
||||
in the modules of the branch, using XML data files overriding the default configuration or views.
|
||||
|
||||
The unit tests are not performed as, in Odoo, they currently relies on the demo data, which are not loaded in the
|
||||
production database. In the future, if Odoo supports to run the unit tests without the demo data,
|
||||
Odoo.sh will then consider running the tests on staging databases.
|
||||
|
||||
|
||||
Development
|
||||
-----------
|
||||
Development branches creates new databases using the demo data and running the unit tests.
|
||||
The modules installed and tested by default are the ones included in your branches.
|
||||
You can change this list of modules to install in your projects settings.
|
||||
|
||||
When you push a new commit in one of these branches,
|
||||
a new server is started, with a database created from scratch and the new revision of the branch.
|
||||
The demo data is loaded, and the unit tests are performed.
|
||||
This verifies your changes do not break any of the features tested by them.
|
||||
|
||||
Similar to staging branches, the emails are not sent: They are intercepted by the mailcatcher.
|
||||
|
||||
The databases created for development branches are meant to live at least three days.
|
||||
After that, they can be garbage collected automatically.
|
||||
|
||||
.. _odoosh-gettingstarted-branches-mergingbranches:
|
||||
|
||||
Merging your branches
|
||||
---------------------
|
||||
You can merge your branches easily by drag and dropping them on each other.
|
||||
|
||||
.. image:: ./media/interface-branches-merge.png
|
||||
:align: center
|
||||
|
||||
When you want to test the changes of your development branches with the production data,
|
||||
you can either:
|
||||
|
||||
* merge the development branch into your staging branch, by drag and dropping it onto the desired staging branch,
|
||||
* drag and dropping the development branch on the staging section title, to make it become a staging branch.
|
||||
|
||||
When your latest changes are ready for production,
|
||||
you can drag and drop your staging branch onto your production branch
|
||||
to merge and deploy in production your newest features.
|
||||
|
||||
If you are bold enough,
|
||||
you can merge your development branches into your production branch as well.
|
||||
It just means you skip the validation of your changes with the production data through a staging branch.
|
||||
|
||||
You can merge your development branches into each other, and your staging branches into each other.
|
||||
|
||||
Of course, you can also use :code:`git merge` directly to merge your branches.
|
||||
Odoo.sh will be notified new revisions have been pushed in your branches.
|
||||
|
||||
Merging a staging branch in the production branch only merges the source code: Any configuration changes you made in the
|
||||
staging databases are not passed to the production database.
|
||||
|
||||
If you test configuration changes in staging branches, and want them to be applied in the production, you have to either:
|
||||
|
||||
* write the configuration changes in XML data files
|
||||
overriding the default configuration or views in your branches,
|
||||
and then increase the version of your module in its manifest (*__manifest__.py*) to trigger the update of the module
|
||||
when you merge your staging branch in your production branch.
|
||||
This is the best practice for a better scalability of your developments as you will use the Git versionning features
|
||||
for all your configuration changes, and therefore have a traceability for your changes.
|
||||
* pass them manually from your staging to your production database, by copy/pasting them.
|
||||
|
||||
.. _odoosh-gettingstarted-branches-tabs:
|
||||
|
||||
Tabs
|
||||
=============
|
||||
|
||||
History
|
||||
-------
|
||||
An overview of your branch history:
|
||||
|
||||
* The messages of the commits and their authors,
|
||||
* The various events linked to the platform, such as stage changes, database imports, backup restores.
|
||||
|
||||
.. image:: ./media/interface-branches-history.png
|
||||
:align: center
|
||||
|
||||
For each event, a status is displayed in the top right-hand corner.
|
||||
It can provide information about the ongoing operation on the database (installation, update, backup import, ...),
|
||||
or its result (tests feedback, successful backup import, ...).
|
||||
When an operation is successful, you can access the database thanks to the *connect* button.
|
||||
|
||||
Mails
|
||||
-----
|
||||
This tab contains the mail catcher. It displays an overview of the emails sent by your database.
|
||||
The mail catcher is available for your development and
|
||||
staging branches as the emails of your production database are really sent instead of being intercepted.
|
||||
|
||||
.. image:: ./media/interface-branches-mails.png
|
||||
:align: center
|
||||
:scale: 50%
|
||||
|
||||
Shell
|
||||
-----
|
||||
A shell access to your container. You can perform basic linux command (:code:`ls`, :code:`top`)
|
||||
and open a shell on your database by typing :code:`psql`.
|
||||
|
||||
.. image:: ./media/interface-branches-shell.png
|
||||
:align: center
|
||||
|
||||
Logs
|
||||
----
|
||||
A viewer to have a look to your server logs.
|
||||
|
||||
.. image:: ./media/interface-branches-logs.png
|
||||
:align: center
|
||||
|
||||
Different logs are available:
|
||||
|
||||
* install.log: The logs of the database installation. In a development branch, the logs of the tests are included.
|
||||
* pip.log: The logs of the Python dependencies installation.
|
||||
* odoo.log: The logs of the running server.
|
||||
* update.log: The logs of the database updates. This is available only for the production database.
|
||||
|
||||
If new lines are added in the logs, they will be displayed automatically.
|
||||
If you scroll to the bottom, the browser will scroll automatically each time a new line is added.
|
||||
|
||||
You can pause the logs fetching by clicking on the according button in the upper right corner of the view.
|
||||
The fetching is automatically stopped after 5 minutes. You can restart it using the play button.
|
||||
|
||||
Backups
|
||||
-------
|
||||
A list of the backups available for download and restore, as well as the ability to import a database.
|
||||
|
||||
.. image:: ./media/interface-branches-backups.png
|
||||
:align: center
|
||||
|
||||
Odoo.sh keeps backups for production databases: 7 daily, 4 weekly and 3 monthly.
|
||||
Each backup includes the database dump, the filestore (attachments, binary fields), logs and sessions.
|
||||
|
||||
Staging databases and development databases are not backed up..
|
||||
You nevertheless have the possibility to restore a backup of the production database on your staging databases, for
|
||||
testing purposes, or to manually recover data that has been deleted unexpectedly from the production database.
|
||||
|
||||
The list contains the backups kept on the server your production database is hosted on.
|
||||
This server only keeps one month of backups: 7 daily and 4 weekly backups.
|
||||
|
||||
Dedicated backup servers keep the same backups, as well as 3 additional monthly backups.
|
||||
To restore or download one of these monthly backups, please `contact us <https://www.odoo.com/help>`_.
|
||||
|
||||
The *import database* feature accepts database archives in the format provided by:
|
||||
|
||||
* the standard Odoo databases manager,
|
||||
(available for on-premise Odoo servers under :code:`/web/database/manager`)
|
||||
* the Odoo online databases manager,
|
||||
* the Odoo.sh backup download button of this *Backups* tab,
|
||||
* the Odoo.sh dump download button in the :ref:`Builds view <odoosh-gettingstarted-builds>`.
|
||||
|
||||
Git commands
|
||||
============
|
||||
In the top right-hand corner of the view, different Git commands are available.
|
||||
|
||||
.. image:: ./media/interface-branches-gitcommands.png
|
||||
:align: center
|
||||
|
||||
Each command be copied in the clipboard to be used in a terminal,
|
||||
and some of them can be used directly from Odoo.sh by clicking the *run* button.
|
||||
|
||||
Clone
|
||||
-----
|
||||
Download the Git repository.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git clone --recurse-submodules --branch master git@github.com:odoo/odoo.git
|
||||
|
||||
Clones the repository *odoo/odoo*.
|
||||
|
||||
* :code:`--recurse-submodules`: Downloads the submodules of your repository. Submodules included in the submodules are downloaded as well.
|
||||
* :code:`--branch`: checks out a specific branch of the repository, in this case *master*.
|
||||
|
||||
The *run* button is not available for this command, as it is meant to be used on your machines.
|
||||
|
||||
Fork
|
||||
----
|
||||
Create a new branch based on the current branch.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git checkout -b feature-1 master
|
||||
|
||||
Creates a new branch called *feature-1* based on the branch *master*, and then checkouts it.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git push -u origin feature-1
|
||||
|
||||
Uploads the new branch *feature-1* on your remote repository.
|
||||
|
||||
Merge
|
||||
-----
|
||||
Merge the current branch in another branch.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git merge staging-1
|
||||
|
||||
Merges the branch *staging-1* in the current branch.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git push -u origin master
|
||||
|
||||
Uploads the changes you just added in the *master* branch on your remote repository.
|
||||
|
||||
Submodule
|
||||
---------
|
||||
|
||||
Add a branch from another repository in your current branch as a *submodule*.
|
||||
|
||||
*Submodules* allows you to use modules from other repositories in your project.
|
||||
|
||||
The submodules feature is detailed in the chapter
|
||||
:ref:`Submodules <odoosh-advanced-submodules>` of this documentation.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git submodule add -b master <URL> <PATH>
|
||||
|
||||
Adds the branch *master* of the repository *<URL>* as a submodule under the path *<PATH>* in your current branch.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git commit -a
|
||||
|
||||
Commits all your current changes.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git push -u origin master
|
||||
|
||||
Uploads the changes you just added in the *master* branch on your remote repository.
|
||||
|
||||
Delete
|
||||
------
|
||||
|
||||
Delete a branch from your repository.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git push origin :master
|
||||
|
||||
Deletes the branch in your remote repository.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git branch -D master
|
||||
|
||||
Deletes the branch in your local copy of the repository.
|
120
odoo_sh/getting_started/builds.rst
Normal file
@ -0,0 +1,120 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
.. _odoosh-gettingstarted-builds:
|
||||
|
||||
==================================
|
||||
Builds
|
||||
==================================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
In Odoo.sh, a build is considered as a database loaded by an Odoo server
|
||||
(`odoo/odoo <https://github.com/odoo/odoo>`_ & `odoo/enterprise <https://github.com/odoo/enterprise>`_)
|
||||
running on a specific revision of your project repository.
|
||||
Its purpose is to test the well-behavior of the server, the database and the features with this revision.
|
||||
|
||||
.. image:: ./media/interface-builds.png
|
||||
:align: center
|
||||
|
||||
In this view, a row represents a branch, and a cell of a row represents a build of this branch.
|
||||
|
||||
Most of the time, builds are created following pushes on your Github repository branches.
|
||||
They can be created as well when you do other operations,
|
||||
such as importing a database on Odoo.sh or asking a rebuild for a branch in your project.
|
||||
|
||||
A build is considered successful if no errors or warnings come up during its creation.
|
||||
A successful build is highlighted in green.
|
||||
|
||||
A build is considered failed if errors come up during its creation.
|
||||
A failed build is highlighted in red.
|
||||
|
||||
If warnings come up during the creation, but there are no errors, the build is considered almost successful.
|
||||
It is highlighted in yellow to notify the developer warnings were raised.
|
||||
|
||||
Builds do not always create a database from scratch.
|
||||
For instance, when pushing a change on the production branch, the build created just starts the server
|
||||
with your new revision and tries to load the current production database on it.
|
||||
If no errors come up, the build is considered successful, and otherwise failed.
|
||||
|
||||
Stages
|
||||
======
|
||||
|
||||
Production
|
||||
----------
|
||||
|
||||
The first build of a production branch creates a database from scratch.
|
||||
If this build is successful, this database is considered as the production database of your project.
|
||||
|
||||
From then, pushes on the production branch will create new builds that attempt to load the database
|
||||
using a server running with the new revision.
|
||||
|
||||
If the build is successful, or has warnings but no errors, the production database will now run with this build, along
|
||||
with the revision associated to this build.
|
||||
|
||||
If the build fails to load or update the database, then the previous successful build is re-used to load the database,
|
||||
and therefore the database will run using a server running with the previous successful revision.
|
||||
|
||||
The build used to run the production database is always the first of the builds list. If a build fails, it is
|
||||
put after the build currently running the production database.
|
||||
|
||||
Staging
|
||||
-------
|
||||
|
||||
Staging builds duplicate the production database,
|
||||
and try to load this duplicate with the revisions of the staging branches.
|
||||
|
||||
Each time you push a new revision on a staging branch, the build created uses a new copy of the production database.
|
||||
The databases are not re-used between builds of the same branch. This ensures:
|
||||
|
||||
* staging builds use databases that are close to what the production looks like,
|
||||
so you do not make your tests with outdated data,
|
||||
|
||||
* you can play around as much as you want in the same staging database,
|
||||
and you can then ask for a rebuild when you want to restart with a new copy of the production.
|
||||
|
||||
Nevertheless, this means that if you make configuration changes in staging databases
|
||||
and do not apply them in the production,
|
||||
they will not be passed on the next build of the same staging branch.
|
||||
|
||||
Development
|
||||
-----------
|
||||
|
||||
Development builds create new databases, load the demo data and run the unit tests.
|
||||
|
||||
A build will be considered failed and highlighted in red if tests fail during the installation,
|
||||
as they are meant to raise errors if something wrong occurs.
|
||||
|
||||
If all tests pass, and there is no error, the build will be considered successful.
|
||||
|
||||
According to the list of modules to install and test, a development build can take up to 1 hour to be ready.
|
||||
This is due to the large number of tests set in the default Odoo modules suite.
|
||||
|
||||
Features
|
||||
========
|
||||
|
||||
The production branch will always appear first,
|
||||
and then the other branches are ordered by last build created. You can filter out the branches.
|
||||
|
||||
.. image:: ./media/interface-builds-branches.png
|
||||
:align: center
|
||||
|
||||
For each branch, you can access the last build's database using the *Connect* link and jump to the branch code using
|
||||
the *Github* link. For other branches than the production, you can create a new build which will use the latest revision
|
||||
of the branch using the link *rebuild*. This last link is not available when there is already a build in progress for
|
||||
the branch.
|
||||
|
||||
.. image:: ./media/interface-builds-build.png
|
||||
:align: center
|
||||
|
||||
For each build, you can access the revision changes using the button with the Github icon.
|
||||
You can access the build's database as the administrator using the *Connect* button.
|
||||
Also, you can access the database with another user using the *Connect as* button,
|
||||
in the dropdown menu of the *Connect* button.
|
||||
|
||||
.. image:: ./media/interface-builds-build-dropdown.png
|
||||
:align: center
|
||||
|
||||
In the dropdown menu of the build, you can access the same features than in :ref:`the branches view <odoosh-gettingstarted-branches-tabs>`:
|
||||
*Logs*, *Web Shell*, *Outgoing e-mails*.
|
||||
You also have the possibility to *Download a dump* of the build's database.
|
185
odoo_sh/getting_started/create.rst
Normal file
@ -0,0 +1,185 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
.. _odoosh-gettingstarted-create:
|
||||
|
||||
==================================
|
||||
Create your project
|
||||
==================================
|
||||
|
||||
Deploy your platform
|
||||
====================
|
||||
|
||||
Go to `Odoo.sh <https://www.odoo.sh/>`_ and hit the *Deploy your platform* button.
|
||||
|
||||
.. image:: ./media/deploy.png
|
||||
:align: center
|
||||
|
||||
Sign in with Github
|
||||
===================
|
||||
|
||||
Sign in with your Github account. If you do not have an account yet, hit the *Create an account* link.
|
||||
|
||||
.. image:: ./media/github-signin.png
|
||||
:align: center
|
||||
|
||||
Authorize Odoo.sh
|
||||
=================
|
||||
|
||||
Grant Odoo.sh the required accesses to your account by clicking the *Authorize* button.
|
||||
|
||||
.. image:: ./media/github-authorize.png
|
||||
:align: center
|
||||
|
||||
Odoo.sh basically needs:
|
||||
|
||||
* to know your Github login and email,
|
||||
* to create a new repository in case you decide to start from scratch,
|
||||
* to read your existing repositories, including the ones of your organizations, in case you want to start from an existing repository,
|
||||
* to create a webhook to be notified each time you push changes,
|
||||
* to commit changes to make your deployment easier, merging branches or adding new `submodules <https://git-scm.com/book/en/v2/Git-Tools-Submodules>`_ for example.
|
||||
|
||||
Submit your project
|
||||
===================
|
||||
|
||||
Choose if you want to start from scratch by creating a new repository, or if you want to use an existing repository.
|
||||
|
||||
Then, choose a name or select the repository you want to use.
|
||||
|
||||
Choose the Odoo version you want to use. If you plan to import an existing database or an existing set of applications, you might need to choose the according version. If you start from scratch, use the latest version.
|
||||
|
||||
Enter your *subscription code*. This is also called *subscription referral* or *contract number*.
|
||||
|
||||
For partners, Odoo.sh is free. If the free offer changes in the future, we guarantee that any project created under this offer will remain free for the same set of features.
|
||||
|
||||
For customers, your Enterprise subscription needs to include Odoo.sh.
|
||||
Contact your sales representative or account manager in order to get it.
|
||||
|
||||
When submitting the form, if you are notified your subscription is not valid, it either means:
|
||||
|
||||
* it is not an existing subscription,
|
||||
* it is not a partnership subscription,
|
||||
* it is an enterprise subscription, but which does not include Odoo.sh,
|
||||
* it is neither a partnership subscription or an enterprise subscription (e.g. an online subscription).
|
||||
|
||||
In case of doubt with your subscription, please contact the `Odoo support <https://www.odoo.com/help>`_.
|
||||
|
||||
.. image:: ./media/deploy-form.png
|
||||
:align: center
|
||||
|
||||
You're done !
|
||||
=============
|
||||
|
||||
You can begin to use Odoo.sh. Your first build is about to be created. You will soon be able to connect to your first database.
|
||||
|
||||
.. image:: ./media/deploy-done.png
|
||||
:align: center
|
||||
|
||||
Import your database
|
||||
====================
|
||||
|
||||
You can import your database in your Odoo.sh project as long as this is an Odoo 10.0 or 11.0 database.
|
||||
|
||||
Push your modules in production
|
||||
-------------------------------
|
||||
|
||||
If you use community or custom modules, add them in a branch in your Github repository.
|
||||
Databases hosted on the Odoo.com online platform do not have any custom modules.
|
||||
Users of these databases can therefore skip this step.
|
||||
|
||||
You can structure your modules as you wish, Odoo.sh will automatically detect the folders containing Odoo addons.
|
||||
For instance, you can put all your modules folder in the root directory of your repository,
|
||||
or group the modules in folders by categories that you define (accounting, project, ...).
|
||||
|
||||
For community modules available in public Git repositories,
|
||||
you can also consider to add them using :ref:`Submodules <odoosh-advanced-submodules>`.
|
||||
|
||||
Then, either :ref:`make this branch the production branch <odoosh-gettingstarted-branches-stages>`,
|
||||
or :ref:`merge it into your production branch <odoosh-gettingstarted-branches-mergingbranches>`.
|
||||
|
||||
Download a backup
|
||||
-----------------
|
||||
|
||||
On-premise databases
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Access the URL :file:`/web/database/manager` of your on-premise database and download a backup.
|
||||
|
||||
.. Warning::
|
||||
|
||||
If you cannot access the database manager, it may have been disabled by your system administrator.
|
||||
See the `database manager security documentation
|
||||
<https://www.odoo.com/documentation/11.0/setup/deploy.html#database-manager-security>`_.
|
||||
|
||||
You will need the master password of your database server. If you do not have it, contact your system administrator.
|
||||
|
||||
.. image:: ./media/create-import-onpremise-backup.png
|
||||
:align: center
|
||||
|
||||
Choose a zip including the filestore as the backup format.
|
||||
|
||||
.. image:: ./media/create-import-onpremise-backup-dialog.png
|
||||
:align: center
|
||||
|
||||
Odoo Online databases
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
`Access your databases manager <https://accounts.odoo.com/my/databases/manage>`_ and download a backup of your database.
|
||||
|
||||
.. image:: ./media/create-import-online-backup.png
|
||||
:align: center
|
||||
|
||||
.. Warning::
|
||||
|
||||
Saas releases (e.g. *saas-**) are not supported on Odoo.sh.
|
||||
|
||||
Upload the backup
|
||||
-----------------
|
||||
|
||||
Then, in your Odoo.sh project, in the backups tab of your production branch, import the backup you just downloaded.
|
||||
|
||||
.. image:: ./media/create-import-production.png
|
||||
:align: center
|
||||
|
||||
Once the backup imported, you can access the database using the *Connect* button in the history of the branch.
|
||||
|
||||
.. image:: ./media/create-import-production-done.png
|
||||
:align: center
|
||||
|
||||
Check your outgoing email servers
|
||||
---------------------------------
|
||||
|
||||
There is a default mail server provided with Odoo.sh.
|
||||
To use it, there must be no enabled outgoing mail server configured in your database in
|
||||
:menuselection:`Settings --> Technical --> Outgoing Mail Servers` (Developer mode must be activated).
|
||||
|
||||
After the import of your database,
|
||||
all outgoing email servers are disabled so you use the Odoo.sh email server provided by default.
|
||||
|
||||
.. Warning::
|
||||
|
||||
Ports 25, 465 and 587 are blocked. If you want to use your own email servers, they must be configured on other ports.
|
||||
|
||||
Check your scheduled actions
|
||||
----------------------------
|
||||
|
||||
All scheduled actions are disabled after the import.
|
||||
|
||||
This is to prevent your newly imported database to perform actions that could impact your running production,
|
||||
such as sending the mails remaining in the queue, processing mass mailings, or third-party services synchronization
|
||||
(Calendars, files hosting, ...).
|
||||
|
||||
If you plan to make the imported database your production, enable the scheduled actions you need.
|
||||
You can check what is enabled in the database of origin and enable the same actions in the imported database.
|
||||
Scheduled actions are located under :menuselection:`Settings --> Technical --> Automation --> Scheduled Actions`.
|
||||
|
||||
Register your subscription
|
||||
--------------------------
|
||||
|
||||
Your subscription is unlinked after the import.
|
||||
|
||||
The imported database is considered a duplicate by default and the enterprise subscription is therefore removed,
|
||||
as you can only have one database linked per subscription.
|
||||
|
||||
If you plan to make it your production,
|
||||
unlink your former database from the subscription, and register the newly imported database.
|
||||
Read the :ref:`database registration documentation <db_premise>` for instructions.
|
454
odoo_sh/getting_started/first_module.rst
Normal file
@ -0,0 +1,454 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
==================================
|
||||
Your first module
|
||||
==================================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
This chapter helps you to create your first Odoo module and deploy it in your Odoo.sh project.
|
||||
|
||||
This tutorial requires :ref:`you created a project on Odoo.sh <odoosh-gettingstarted-create>`, and to know your Github repository URL.
|
||||
|
||||
Basic use of Git and Github is explained.
|
||||
|
||||
The below assumptions are made:
|
||||
|
||||
* *~/src* is the directory where are located the Git repositories related to your Odoo projects,
|
||||
* *odoo* is the Github user,
|
||||
* *odoo-addons* is the Github repository,
|
||||
* *feature-1* is the name of a development branch,
|
||||
* *master* is the name of the production branch,
|
||||
* *my_module* is the name of the module.
|
||||
|
||||
Replace these by the values of your choice.
|
||||
|
||||
Create the development branch
|
||||
=============================
|
||||
|
||||
Clone your Github repository on your machine:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ mkdir ~/src
|
||||
$ cd ~/src
|
||||
$ git clone https://github.com/odoo/odoo-addons.git
|
||||
$ cd ~/src/odoo-addons
|
||||
|
||||
Create a new branch:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git checkout -b feature-1 master
|
||||
|
||||
|
||||
Create the module structure
|
||||
===========================
|
||||
|
||||
Scaffolding the module
|
||||
----------------------
|
||||
|
||||
While not necessary, scaffolding avoids the tedium of setting the basic Odoo module structure.
|
||||
It nevertheless requires *odoo-bin*, and therefore the
|
||||
`installation of Odoo <https://www.odoo.com/documentation/11.0/setup/install.html#source-install>`_ on your machine.
|
||||
|
||||
If you do not want to bother installing Odoo on your machine,
|
||||
you can also :download:`download this module structure template <media/my_module.zip>` in which you replace every occurences of
|
||||
*my_module* to the name of your choice.
|
||||
|
||||
Use *odoo-bin scaffold* to generate the module structure in your repository:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ ./odoo-bin scaffold my_module ~/src/odoo-addons/
|
||||
|
||||
This will generate the below structure:
|
||||
|
||||
::
|
||||
|
||||
my_module
|
||||
├── __init__.py
|
||||
├── __manifest__.py
|
||||
├── controllers
|
||||
│ ├── __init__.py
|
||||
│ └── controllers.py
|
||||
├── demo
|
||||
│ └── demo.xml
|
||||
├── models
|
||||
│ ├── __init__.py
|
||||
│ └── models.py
|
||||
├── security
|
||||
│ └── ir.model.access.csv
|
||||
└── views
|
||||
├── templates.xml
|
||||
└── views.xml
|
||||
|
||||
.. Warning::
|
||||
|
||||
Do not use special characters other than the underscore ( _ ) for your module name, not even an hyphen ( - ).
|
||||
This name is used for the Python classes of your module,
|
||||
and having classes name with special characters other than the underscore is not valid in Python.
|
||||
|
||||
Uncomment the content of the files:
|
||||
|
||||
* *models/models.py*,
|
||||
an example of model with its fields,
|
||||
* *views/views.xml*,
|
||||
a tree and a form view, with the menus opening them,
|
||||
* *demo/demo.xml*,
|
||||
demo records for the above example model,
|
||||
* *controllers/controllers.py*,
|
||||
an example of controller implementing some routes,
|
||||
* *views/templates.xml*,
|
||||
two example qweb views used by the above controller routes,
|
||||
* *__manifest__.py*,
|
||||
the manifest of your module, including for instance its title, description and data files to load.
|
||||
You just need to uncomment the access control list data file:
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
# 'security/ir.model.access.csv',
|
||||
|
||||
Manually
|
||||
--------
|
||||
|
||||
If you want to create your module structure manually,
|
||||
you can follow `Build an Odoo module <https://www.odoo.com/documentation/11.0/howtos/backend.html>`_ to understand
|
||||
the structure of a module and the content of each file.
|
||||
|
||||
Push the development branch
|
||||
===========================
|
||||
|
||||
Stage the changes to be commited
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git add my_module
|
||||
|
||||
Commit your changes
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git commit -m "My first module"
|
||||
|
||||
Push your changes to your remote repository
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git push -u origin feature-1
|
||||
|
||||
You need to specify *-u origin feature-1* for the first push only.
|
||||
From that point, to push your future changes, you can simply use
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git push
|
||||
|
||||
Test your module
|
||||
================
|
||||
|
||||
Your branch should appear in your development branches in your project.
|
||||
|
||||
.. image:: ./media/firstmodule-test-branch.png
|
||||
:align: center
|
||||
|
||||
In the branches view of your project,
|
||||
you can click on your branch name in the left navigation panel to access its history.
|
||||
|
||||
.. image:: ./media/firstmodule-test-branch-history.png
|
||||
:align: center
|
||||
|
||||
You can see here the changes you just pushed, including the comment you set.
|
||||
Once the database ready, you can access it by clicking the *Connect* button.
|
||||
|
||||
.. image:: ./media/firstmodule-test-database.png
|
||||
:align: center
|
||||
|
||||
If your Odoo.sh project is configured to install your module automatically,
|
||||
you will directly see it amongst the database apps. Otherwise, it will be available in the apps to install.
|
||||
|
||||
You can then play around with your module, create new records and test your features and buttons.
|
||||
|
||||
|
||||
Test with the production data
|
||||
=============================
|
||||
|
||||
You need to have a production database for this step. You can create it if you do not have it yet.
|
||||
|
||||
Once you tested your module in a development build with the demo data and believe it is ready,
|
||||
you can test it with the production data using a staging branch.
|
||||
|
||||
You can either:
|
||||
|
||||
* Make your development branch a staging branch, by drag and dropping it onto the *staging* section title.
|
||||
|
||||
.. image:: ./media/firstmodule-test-devtostaging.png
|
||||
:align: center
|
||||
|
||||
* Merge it in an existing staging branch, by drag and dropping it onto the given staging branch.
|
||||
|
||||
.. image:: ./media/firstmodule-test-devinstaging.png
|
||||
:align: center
|
||||
|
||||
You can also use the :code:`git merge` command to merge your branches.
|
||||
|
||||
This will create a new staging build, which will duplicate the production database and make it run using a server
|
||||
updated with your latest changes of your branch.
|
||||
|
||||
.. image:: ./media/firstmodule-test-mergedinstaging.png
|
||||
:align: center
|
||||
|
||||
Once the database ready, you can access it using the *Connect* button.
|
||||
|
||||
.. _odoosh-gettingstarted-firstmodule-productiondata-install:
|
||||
|
||||
Install your module
|
||||
-------------------
|
||||
|
||||
Your module will not be installed automatically, you have to install it from the apps menu.
|
||||
Indeed, the purpose of the staging build is to test the behavior of your changes as it would be on your production,
|
||||
and on your production you would not like your module to be installed automatically, but on demand.
|
||||
|
||||
Your module may not appear directly in your apps to install either, you need to update your apps list first:
|
||||
|
||||
* activate the developer mode from the Settings,
|
||||
|
||||
.. image:: ./media/firstmodule-test-developermode.png
|
||||
:align: center
|
||||
|
||||
* in the apps menu, click the *Update Apps List* button,
|
||||
* in the dialog that appears, click the *Update* button.
|
||||
|
||||
.. image:: ./media/firstmodule-test-updateappslist.png
|
||||
:align: center
|
||||
|
||||
Your module will then appear in the list of available apps.
|
||||
|
||||
.. image:: ./media/firstmodule-test-mymoduleinapps.png
|
||||
:align: center
|
||||
|
||||
Deploy in production
|
||||
====================
|
||||
|
||||
Once you tested your module in a staging branch with your production data,
|
||||
and believe it is ready for production, you can merge your branch in the production branch.
|
||||
|
||||
Drag and drop your staging branch on the production branch.
|
||||
|
||||
.. image:: ./media/firstmodule-test-mergeinproduction.png
|
||||
:align: center
|
||||
|
||||
You can also use the :code:`git merge` command to merge your branches.
|
||||
|
||||
This will merge the latest changes of your staging branch in the production branch,
|
||||
and update your production server with these latest changes.
|
||||
|
||||
.. image:: ./media/firstmodule-test-mergedinproduction.png
|
||||
:align: center
|
||||
|
||||
Once the database ready, you can access it using the *Connect* button.
|
||||
|
||||
Install your module
|
||||
-------------------
|
||||
|
||||
Your module will not be installed automatically,
|
||||
you have to install it manually as explained in the
|
||||
:ref:`above section about installing your module in staging databases
|
||||
<odoosh-gettingstarted-firstmodule-productiondata-install>`.
|
||||
|
||||
Add a change
|
||||
============
|
||||
|
||||
This section explains how to add a change in your module by adding a new field in a model and deploy it.
|
||||
|
||||
In your module, edit the file *models/models.py*
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ nano ~/src/odoo-addons/my_module/models/models.py
|
||||
|
||||
We encourage you to use the editor of your choice, such as *Atom*, *Sublime Text*, *PyCharm*, instead of *nano*.
|
||||
|
||||
Then, after the description field
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
description = fields.Text()
|
||||
|
||||
Add a datetime field
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
|
||||
|
||||
Then, edit the file *views/views.xml*
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ nano ~/src/odoo-addons/my_module/views/views.xml
|
||||
|
||||
After
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<field name="value2"/>
|
||||
|
||||
Add
|
||||
|
||||
.. code-block:: xml
|
||||
|
||||
<field name="start_datetime"/>
|
||||
|
||||
Stage your changes to be commited
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ cd ~/src/odoo-addons/
|
||||
$ git add my_module
|
||||
|
||||
These changes alter the database structure by adding a column in a table,
|
||||
and modify a view stored in database.
|
||||
|
||||
In order to be applied in existing databases, such as your production database,
|
||||
these changes requires the module to be updated.
|
||||
|
||||
If you would like the update to be performed automatically by the Odoo.sh platform when you push your changes,
|
||||
increase your module version in its manifest.
|
||||
|
||||
Edit the module manifest
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ nano ~/src/odoo-addons/my_module/__manifest__.py
|
||||
|
||||
Replace
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
'version': '0.1',
|
||||
|
||||
with
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
'version': '0.2',
|
||||
|
||||
The platform will detect the change of version and trigger the update of the module upon the new revision deployment.
|
||||
|
||||
Commit your changes
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git commit -m "[ADD] my_module: add the start_datetime field to the model my_module.my_module"
|
||||
|
||||
Push your changes
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git push
|
||||
|
||||
The platform will then create a new build for the branch *feature-1*.
|
||||
|
||||
.. image:: ./media/firstmodule-test-addachange-build.png
|
||||
:align: center
|
||||
|
||||
Once you tested your changes, you can merge your changes in the production branch, for instance by drag-and-dropping the
|
||||
branch on the production branch in the Odoo.sh interface. As you increased the module version in the manifest,
|
||||
the platform will update the module automatically and your new field will be directly available.
|
||||
Otherwise you can manually update the module within the apps list.
|
||||
|
||||
Use an external Python library
|
||||
==============================
|
||||
|
||||
If you would like to use an external Python library which is not installed by default,
|
||||
you can define a *requirements.txt* file listing the external libraries your modules depends on.
|
||||
|
||||
The platform will use this file to automatically install the Python libraries your project needs.
|
||||
|
||||
The feature is explained in this section by using the `Unidecode library <https://pypi.python.org/pypi/Unidecode>`_ in
|
||||
your module.
|
||||
|
||||
Create a file *requirements.txt* in the root folder of your repository
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ nano ~/src/odoo-addons/requirements.txt
|
||||
|
||||
Add
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
$ unidecode
|
||||
|
||||
Then use the library in your module, for instance to remove any special charaters in the name field of your
|
||||
model.
|
||||
|
||||
Edit the file *models/models.py*
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ nano ~/src/odoo-addons/my_module/models/models.py
|
||||
|
||||
Before
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from odoo import models, fields, api
|
||||
|
||||
Add
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from unidecode import unidecode
|
||||
|
||||
After
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
|
||||
|
||||
Add
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
@api.model
|
||||
def create(self, values):
|
||||
if 'name' in values:
|
||||
values['name'] = unidecode(values['name'])
|
||||
return super(my_module, self).create(values)
|
||||
|
||||
@api.multi
|
||||
def write(self, values):
|
||||
if 'name' in values:
|
||||
values['name'] = unidecode(values['name'])
|
||||
return super(my_module, self).write(values)
|
||||
|
||||
Adding a Python dependency requires a module version increase for the platform to install it.
|
||||
|
||||
Edit the module manifest
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ nano ~/src/odoo-addons/my_module/__manifest__.py
|
||||
|
||||
Replace
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
'version': '0.2',
|
||||
|
||||
with
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
'version': '0.3',
|
||||
|
||||
Then stage, commit and push your changes
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ git add reqirements.txt
|
||||
$ git add my_module
|
||||
$ git commit -m "[IMP] my_module: automatically remove special chars in my_module.my_module name field"
|
||||
$ git push
|
BIN
odoo_sh/getting_started/media/create-import-online-backup.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 7.9 KiB |
BIN
odoo_sh/getting_started/media/create-import-onpremise-backup.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
odoo_sh/getting_started/media/create-import-production-done.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
odoo_sh/getting_started/media/create-import-production.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
odoo_sh/getting_started/media/deploy-done.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
odoo_sh/getting_started/media/deploy-form.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
odoo_sh/getting_started/media/deploy.png
Normal file
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 22 KiB |
BIN
odoo_sh/getting_started/media/firstmodule-test-branch.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
odoo_sh/getting_started/media/firstmodule-test-database.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
odoo_sh/getting_started/media/firstmodule-test-developermode.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
odoo_sh/getting_started/media/firstmodule-test-devinstaging.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
odoo_sh/getting_started/media/firstmodule-test-devtostaging.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 11 KiB |
BIN
odoo_sh/getting_started/media/github-authorize.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
odoo_sh/getting_started/media/github-signin.png
Normal file
After Width: | Height: | Size: 6.9 KiB |
BIN
odoo_sh/getting_started/media/interface-branches-backups.png
Normal file
After Width: | Height: | Size: 39 KiB |
BIN
odoo_sh/getting_started/media/interface-branches-gitcommands.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
odoo_sh/getting_started/media/interface-branches-history.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
odoo_sh/getting_started/media/interface-branches-logs.png
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
odoo_sh/getting_started/media/interface-branches-mails.png
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
odoo_sh/getting_started/media/interface-branches-merge.png
Normal file
After Width: | Height: | Size: 6.4 KiB |
BIN
odoo_sh/getting_started/media/interface-branches-shell.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
odoo_sh/getting_started/media/interface-branches-stagechange.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
odoo_sh/getting_started/media/interface-branches.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
odoo_sh/getting_started/media/interface-builds-branches.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
odoo_sh/getting_started/media/interface-builds-build-connect.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 4.1 KiB |
BIN
odoo_sh/getting_started/media/interface-builds-build.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
odoo_sh/getting_started/media/interface-builds.png
Normal file
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 5.1 KiB |
BIN
odoo_sh/getting_started/media/interface-settings-projectname.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
odoo_sh/getting_started/media/interface-settings-public.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
odoo_sh/getting_started/media/interface-settings-submodules.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
odoo_sh/getting_started/media/interface-settings.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
odoo_sh/getting_started/media/interface-status.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
odoo_sh/getting_started/media/my_module.zip
Normal file
194
odoo_sh/getting_started/settings.rst
Normal file
@ -0,0 +1,194 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
==================================
|
||||
Settings
|
||||
==================================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
The settings allow you to manage the configuration of your project.
|
||||
|
||||
.. image:: ./media/interface-settings.png
|
||||
:align: center
|
||||
|
||||
Project name
|
||||
============
|
||||
|
||||
The name of your project.
|
||||
|
||||
.. image:: ./media/interface-settings-projectname.png
|
||||
:align: center
|
||||
|
||||
This defines the address that will be used to access your production database.
|
||||
|
||||
Addresses of your staging and development builds are derived from this name and assigned automatically.
|
||||
However, when you change your project name, only future builds will use the new name.
|
||||
|
||||
Collaborators
|
||||
=============
|
||||
|
||||
Manage the Github users who can access your project.
|
||||
|
||||
.. image:: ./media/interface-settings-collaborators.png
|
||||
:align: center
|
||||
|
||||
There are two levels of users:
|
||||
|
||||
* Admin: has access to all features of Odoo.sh.
|
||||
* User: does not have access to the project settings nor to the production and staging databases.
|
||||
|
||||
The user group is meant for developers who can make modifications in your code but are not allowed to access the
|
||||
production data.
|
||||
Users of this group cannot connect to the production and staging databases using the *1-click connect* feature,
|
||||
but they can of course use their regular account on these databases if they have one, using their regular credentials.
|
||||
|
||||
In addition, they cannot use the webshell nor have access to the server logs.
|
||||
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | | User | Admin |
|
||||
+=====================+=================+===========+===========+
|
||||
|Development | History | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | 1-click connect | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Logs | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Shell | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Mails | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Production & Staging | History | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | 1-click connect | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Logs | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Shell | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
| | Mails | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Status | | X | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|Settings | | | X |
|
||||
+---------------------+-----------------+-----------+-----------+
|
||||
|
||||
Public Access
|
||||
=============
|
||||
|
||||
Allow public access to your development builds.
|
||||
|
||||
.. image:: ./media/interface-settings-public.png
|
||||
:align: center
|
||||
|
||||
Expose the Builds page publicly, allowing visitors to connect to your development builds.
|
||||
|
||||
In addition, visitors have access to the logs, shell and mails of your development builds.
|
||||
|
||||
Production and staging builds are excluded, visitors can only see their status.
|
||||
|
||||
Modules installation
|
||||
====================
|
||||
|
||||
Choose the modules to install automatically for your development builds.
|
||||
|
||||
.. image:: ./media/interface-settings-modulesinstallation.png
|
||||
:align: center
|
||||
|
||||
* *Install only my modules* will install the modules of the branch only.
|
||||
The :ref:`submodules <odoosh-advanced-submodules>` are excluded.
|
||||
* *Full installation (all modules)* will install the modules of the branch, the modules included in the submodules
|
||||
and all standard modules of Odoo.
|
||||
* *Install a list of modules* will install the modules specified in the input just below this option.
|
||||
The names are the technical name of the modules, and they must be comma-separated.
|
||||
|
||||
All installed modules will be tested.
|
||||
The tests in the standard Odoo modules suite can take up to 1 hour.
|
||||
This setting applies to development builds only.
|
||||
Staging builds duplicate the production build and the production build only installs base.
|
||||
|
||||
Custom domains
|
||||
==============
|
||||
|
||||
Configure your own domain name.
|
||||
|
||||
.. image:: ./media/interface-settings-customdomains.png
|
||||
:align: center
|
||||
|
||||
If you would like to access your production database using your own domain name, you have to:
|
||||
|
||||
* own or purchase the domain name,
|
||||
* add the domain name in this list,
|
||||
* in your domain name manager,
|
||||
configure the domain name with a CNAME record set to your production database domain name.
|
||||
|
||||
For instance, to associate *www.mycompany.com* to your database *mycompany.odoo.com*:
|
||||
|
||||
* in Odoo.sh, add *www.mycompany.com* in the custom domains of your project settings,
|
||||
* in your domain name manager (e.g. *godaddy.com*, *gandi.net*, *ovh.com*),
|
||||
configure *www.mycompany.com* with a CNAME record with as value *mycompany.odoo.com*.
|
||||
|
||||
Bare domains (e.g. *mycompany.com*) are not accepted:
|
||||
|
||||
* they can only be configured using A records,
|
||||
* A records only accept IP addresses as value,
|
||||
* the IP address of your database can change, following an upgrade, a hardware failure or
|
||||
your wish to host your database in another country or continent.
|
||||
|
||||
Therefore, bare domains could suddenly no longer work because of this change of IP address.
|
||||
|
||||
In addition, if you would like both *mycompany.com* and *www.mycompany.com* to work with your database,
|
||||
having the first redirecting to the second is amongst the
|
||||
`SEO best practices <https://support.google.com/webmasters/answer/7451184?hl=en>`_
|
||||
(See *Provide one version of a URL to reach a document*)
|
||||
in order to have one dominant URL. You can therefore just configure *mycompany.com* to redirect to *www.mycompany.com*.
|
||||
Most domain managers have the feature to configure this redirection. This is commonly called a web redirection.
|
||||
|
||||
HTTPS/SSL
|
||||
---------
|
||||
|
||||
You can use a third-party CDN such as *Cloudflare.com* to enable the *HTTPS* support for your custom domain:
|
||||
|
||||
* `Create a Cloudflare account <https://support.cloudflare.com/hc/en-us/articles/201720164-Step-2-Create-a-Cloudflare-account-and-add-a-website>`_
|
||||
* `Change your domain name servers to Cloudflare <https://support.cloudflare.com/hc/en-us/articles/205195708-Step-3-Change-your-domain-name-servers-to-Cloudflare>`_
|
||||
* `Choose an SSL mode <https://support.cloudflare.com/hc/en-us/articles/201897700-Step-4-Recommended-First-Steps-for-all-Cloudflare-users#sslmode>`_
|
||||
* `Redirect your visitors to HTTPS <https://support.cloudflare.com/hc/en-us/articles/200170536-How-do-I-redirect-all-visitors-to-HTTPS-SSL->`_
|
||||
|
||||
.. _odoosh-gettingstarted-settings-submodules:
|
||||
|
||||
Submodules
|
||||
==========
|
||||
|
||||
Configure the deploy keys for the private repositories you use
|
||||
as submodules in your branches to allow Odoo.sh to download them.
|
||||
|
||||
.. Warning::
|
||||
These settings are required for **private repositories** only.
|
||||
If you are looking on how to set up your submodules,
|
||||
instructions are available in the chapter :ref:`Submodules <odoosh-advanced-submodules>` of this documentation.
|
||||
|
||||
.. image:: ./media/interface-settings-submodules.png
|
||||
:align: center
|
||||
|
||||
When a repository is private, this is not possible to publicly download its branches and revisions.
|
||||
For that reason, you need to configure a deploy key for Odoo.sh,
|
||||
so the Git server allows our platform to download the revisions
|
||||
of this private repository.
|
||||
|
||||
To configure the deploy key for a private repository, proceed as follow:
|
||||
|
||||
* in the input, paste the SSH URL of your private sub-repository and click on *Add*,
|
||||
|
||||
* e.g. *git@github.com:USERNAME/REPOSITORY.git*
|
||||
* it can be another Git server than Github, such as Bitbucket, Gitlab or even your own self-hosted server
|
||||
|
||||
* copy the public key,
|
||||
|
||||
* it should look like *ssh-rsa some...random...characters...here...==*
|
||||
|
||||
* in the settings of the private sub-repository, add the public key amongst the deploy keys.
|
||||
|
||||
* Github.com: Settings > Deploy keys > Add deploy key
|
||||
* Bitbucket.com: Settings > Access keys > Add key
|
||||
* Gitlab.com: Settings > Repository > Deploy Keys
|
||||
* Self-hosted: append the key to the git user’s authorized_keys file in its .ssh directory
|
13
odoo_sh/getting_started/status.rst
Normal file
@ -0,0 +1,13 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
==================================
|
||||
Status
|
||||
==================================
|
||||
|
||||
Overview
|
||||
========
|
||||
|
||||
The status page shows statistics regarding the servers your project use. It includes the servers availability.
|
||||
|
||||
.. image:: ./media/interface-status.png
|
||||
:align: center
|
10
odoo_sh/overview.rst
Normal file
@ -0,0 +1,10 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
=================
|
||||
Overview
|
||||
=================
|
||||
|
||||
.. toctree::
|
||||
:titlesonly:
|
||||
|
||||
overview/introduction
|
15
odoo_sh/overview/introduction.rst
Normal file
@ -0,0 +1,15 @@
|
||||
:banner: banners/odoo-sh.jpg
|
||||
|
||||
==============================
|
||||
Introduction to Odoo.sh
|
||||
==============================
|
||||
|
||||
.. youtube:: QuNsa9n9PMg
|
||||
:align: right
|
||||
:width: 700
|
||||
:height: 394
|
||||
|
||||
The documentation will help you go live with your Odoo.sh project in no time.
|
||||
|
||||
You can suggest new documentation topics
|
||||
or report typos and inaccuracies by `contacting us <https://www.odoo.sh/feedback>`_.
|
@ -6,6 +6,7 @@ Practical Information
|
||||
:titlesonly:
|
||||
|
||||
getting_started/documentation
|
||||
odoo_sh/documentation
|
||||
db_management/documentation
|
||||
db_management/db_online
|
||||
db_management/db_premise
|
||||
|