Chi nhánh

Tổng quan

Chế độ xem nhánh cung cấp cho bạn cái nhìn tổng quan về các nhánh khác nhau có trong kho lưu trữ của bạn.

../../../_images/interface-branches.png

Giai đoạn

Odoo.sh cung cấp ba giai đoạn khác nhau cho nhánh của bạn: production, staging và phát triển.

Bạn có thể thay đổi giai đoạn của một nhánh bằng cách kéo và thả nó vào tiêu đề của phần giai đoạn.

../../../_images/interface-branches-stagechange.png

Sản xuất

Đây là nhánh chứa mã mà cơ sở dữ liệu production của bạn chạy. Chỉ có thể có một nhánh production.

Khi bạn triển khai một commit mới trong nhánh này, máy chủ production của bạn sẽ được cập nhật với mã của bản sửa đổi mới và sau đó được khởi động lại.

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 during which the instance will be held temporarily unavailable for maintenance reason.

This method is equivalent to perform an upgrade of the module through the Apps menu, or through the -u switch of the command line.

Trong trường hợp những thay đổi trong commit ngăn máy chủ khởi động lại hoặc nếu cập nhật phân hệ không thành công, máy chủ sẽ tự động được hoàn nguyên về bản sửa đổi mã thành công trước đó và cơ sở dữ liệu sẽ được khôi phục như trước khi cập nhật. Bạn vẫn có quyền truy cập vào nhật ký của bản cập nhật không thành công để có thể khắc phục sự cố.

Dữ liệu demo không được tải vì không được sử dụng trong cơ sở dữ liệu production. Các bản kiểm thử đơn vị không được thực hiện vì chúng sẽ làm tăng thời gian ngừng hoạt động của cơ sở dữ liệu production trong quá trình cập nhật.

Các đối tác sử dụng dự án thử nghiệm cần biết rằng nhánh production cũng như tất cả nhánh staging sẽ tự động được đưa trở lại giai đoạn phát triển sau 30 ngày.

Staging

Nhánh staging nhằm mục đích kiểm tra các tính năng mới của bạn bằng cách sử dụng dữ liệu production mà không ảnh hưởng đến cơ sở dữ liệu production chứa tập dữ liệu được kiểm thử. Chúng sẽ tạo ra các bản sao bị vô hiệu hoá một phần của cơ sở dữ liệu production.

Việc vô hiệu hoá bao gồm:

  • Vô hiệu hóa các tác vụ đã lên lịch. Nếu muốn kiểm thử chúng, bạn có thể kích hoạt tác vụ theo cách thủ công hoặc bật lại. Xin lưu ý rằng nền tảng sẽ giảm tần suất kích hoạt các tác vụ này nếu không có ai sử dụng cơ sở dữ liệu để tiết kiệm tài nguyên.

  • Disabling outgoing emails by intercepting them with a mailcatcher. An interface to view the emails sent by your database is provided. That way, you do not have to worry about sending test emails to your contacts.

  • Đặt nhà cung cấp dịch vụ thanh toán và nhà cung cấp dịch vụ vận chuyển ở chế độ kiểm thử.

  • Vô hiệu hóa dịch vụ IAP

Cơ sở dữ liệu mới nhất sẽ được duy trì vô thời hạn, những cơ sở dữ liệu cũ hơn từ cùng nhánh có thể được đưa vào thùng rác để nhường chỗ cho cơ sở dữ liệu mới. Nó sẽ có hiệu lực trong 3 tháng, sau đó bạn sẽ phải tạo lại nhánh. Nếu bạn thực hiện các thay đổi về cấu hình hoặc chế độ xem trong các cơ sở dữ liệu này, hãy đảm bảo ghi lại chúng hoặc ghi chúng trực tiếp vào các phân hệ của nhánh, sử dụng các tệp dữ liệu XML ghi đè cấu hình hoặc chế độ xem mặc định.

Các bản kiểm thử đơn vị không được thực hiện vì hiện tại trong Odoo, chúng dựa vào dữ liệu demo, mà dữ liệu này không được tải trong cơ sở dữ liệu production. Trong tương lai, nếu Odoo hỗ trợ chạy các bản kiểm thử đơn vị mà không cần dữ liệu demo thì Odoo.sh sẽ xem xét chạy kiểm thử trên cơ sở dữ liệu staging.

Phát triển

Development branches create new databases using the demo data to run the unit tests. The installed modules are the ones included in your branches. You can change this list of modules to install in your project 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 by default. This verifies your changes do not break any of the features tested by them. If you wish, you can disable the tests or allow specific tests to be run with custom tags in the branch's settings.

Tương tự như các nhánh staging, email không được gửi mà bị chặn bởi một công cụ nhận thư và các tác vụ đã lên lịch sẽ không được kích hoạt nếu cơ sở dữ liệu không được sử dụng.

Cơ sở dữ liệu được tạo cho các nhánh phát triển sẽ tồn tại trong khoảng ba ngày. Sau đó, chúng có thể được tự động đưa vào thùng rác để nhường chỗ cho cơ sở dữ liệu mới mà không cần thông báo trước.

Hợp nhất nhánh

Bạn có thể hợp nhất các nhánh một cách dễ dàng bằng cách kéo và thả chúng vào nhau.

../../../_images/interface-branches-merge.png

Khi bạn muốn kiểm thử những thay đổi của các nhánh phát triển bằng dữ liệu production, bạn có thể:

  • hợp nhất nhánh phát triển vào nhánh staging, bằng cách kéo và thả nó vào nhánh staging mong muốn,

  • kéo và thả nhánh phát triển trên tiêu đề của phần staging để biến nó thành một nhánh staging.

Khi những thay đổi mới nhất của bạn đã sẵn sàng để sử dụng trong production, bạn có thể kéo và thả nhánh staging vào nhánh production để hợp nhất và triển khai các tính năng mới nhất của mình trong production.

Nếu đủ tự tin, bạn cũng có thể hợp nhất các nhánh phát triển vào nhánh production của mình. Điều đó có nghĩa là bỏ qua việc xác nhận các thay đổi về dữ liệu production trên nhánh staging.

Bạn có thể hợp nhất các nhánh phát triển với nhau và các nhánh staging với nhau.

Of course, you can also use git merge directly on your workstation to merge your branches. Odoo.sh will be notified when new revisions have been pushed in your branches.

Việc hợp nhất một nhánh staging trong nhánh production chỉ hợp nhất mã nguồn: Mọi thay đổi cấu hình bạn đã thực hiện trong cơ sở dữ liệu staging sẽ không được chuyển đến cơ sở dữ liệu production.

Nếu bạn kiểm thử các thay đổi cấu hình trong nhánh staging và muốn chúng được áp dụng trong production, bạn phải:

  • 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 versioning features for all your configuration changes, and therefore have a traceability for your changes.

  • chuyển chúng theo cách thủ công từ nhánh staging đến cơ sở dữ liệu production của bạn bằng cách sao chép/dán chúng.

Tab

Lịch sử

Tổng quan về lịch sử nhánh:

  • Nội dung commit và người viết chúng,

  • Các sự kiện khác nhau được liên kết với nền tảng, chẳng hạn như thay đổi giai đoạn, nhập cơ sở dữ liệu, khôi phục bản sao lưu.

../../../_images/interface-branches-history.png

Đối với mỗi sự kiện, trạng thái được hiển thị ở góc trên cùng bên phải. Nó có thể cung cấp thông tin về hoạt động đang diễn ra trên cơ sở dữ liệu (cài đặt, cập nhật, nhập bản sao lưu, …) hoặc kết quả của hoạt động đó (kiểm tra phản hồi, nhập bản sao lưu thành công,…). Khi thao tác thành công, bạn có thể truy cập cơ sở dữ liệu nhờ nút kết nối.

Mails

Tab này chứa công cụ nhận thư. Thông tin tổng quan về các email mà cơ sở dữ liệu của bạn gửi đi được hiển thị tại đây. Công cụ nhận thư có sẵn trên các nhánh phát triển và staging vì các email trong cơ sở dữ liệu production của bạn thực sự được gửi thay vì bị chặn.

../../../_images/interface-branches-mails.png

Shell

A shell access to your container. You can perform basic linux commands (ls, top) and open a shell on your database by typing psql.

../../../_images/interface-branches-shell.png

Bạn có thể mở nhiều tab, kéo và thả chúng để sắp xếp bố cục theo ý muốn, chẳng hạn như cạnh nhau.

Ghi chú

Shell chạy dài không được đảm bảo. Các shell không sử dụng có thể bị ngắt kết nối bất cứ lúc nào để giải phóng tài nguyên.

Biên tập

Môi trường phát triển tích hợp trực (IDE) online để chỉnh sửa mã nguồn. Bạn cũng có thể mở terminal, bảng điều khiển Python và thậm chí cả bảng điều khiển Odoo Shell.

../../../_images/interface-branches-editor.png

Bạn có thể mở nhiều tab, kéo và thả chúng để sắp xếp bố cục theo ý muốn, chẳng hạn như cạnh nhau.

Theo dõi

Liên kết này chứa các số liệu theo dõi khác nhau của bản dựng hiện tại.

../../../_images/interface-branches-monitoring.png

Bạn có thể thu phóng, thay đổi phạm vi thời gian hoặc chọn số liệu cụ thể trên mỗi biểu đồ. Trên biểu đồ, các chú thích giúp bạn liên hệ với các thay đổi trên bản dựng (nhập cơ sở dữ liệu, git push,…).

Nhật ký

Một chế độ xem để xem nhật ký máy chủ của bạn.

../../../_images/interface-branches-logs.png

Có sẵn các nhật ký khác nhau:

  • install.log: Nhật ký cài đặt cơ sở dữ liệu. Trong nhánh phát triển có nhật ký của các bản kiểm thử.

  • pip.log: Nhật ký cài đặt phần phụ thuộc Python.

  • odoo.log: Nhật ký của máy chủ đang chạy.

  • update.log: Nhật ký cập nhật cơ sở dữ liệu.

  • pg_long_queries.log: Nhật ký của các truy vấn psql sử dụng một lượng thời gian bất thường.

Nếu các dòng mới được thêm vào nhật ký, chúng sẽ tự động được hiển thị. Nếu bạn cuộn xuống phía dưới, trình duyệt sẽ tự động cuộn mỗi khi thêm một dòng mới.

Bạn có thể tạm dừng tìm nạp nhật ký bằng cách nhấp vào nút tương ứng ở góc trên bên phải của chế độ xem. Quá trình tìm nạp sẽ tự động dừng sau 5 phút. Bạn có thể khởi động lại quá trình này bằng nút phát.

Bản sao lưu

Danh sách các bản sao lưu có sẵn để tải xuống và khôi phục, khả năng thực hiện sao lưu thủ công và nhập cơ sở dữ liệu.

../../../_images/interface-branches-backups.png

Odoo.sh sao lưu cơ sở dữ liệu production hàng ngày. Nó lưu giữ 7 bản sao lưu hàng ngày, 4 bản sao lưu hàng tuần và 3 bản sao lưu hàng tháng. Mỗi bản sao lưu bao gồm kết xuất cơ sở dữ liệu, filestore (tệp đính kèm, trường nhị phân), nhật ký và phiên.

Cơ sở dữ liệu staging và phát triển không được sao lưu. Tuy nhiên, bạn vẫn có khả năng khôi phục bản sao lưu của cơ sở dữ liệu production trong các nhánh staging để kiểm thử hoặc khôi phục thủ công dữ liệu đã vô tình bị xóa khỏi cơ sở dữ liệu production.

Danh sách này chứa các bản sao lưu được lưu trên máy chủ mà cơ sở dữ liệu production của bạn được lưu trữ. Máy chủ này chỉ lưu giữ các bản sao lưu trong vòng một tháng: 7 bản sao lưu hàng ngày và 4 bản sao lưu hàng tuần.

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.

If you merge a commit updating the version of one or several modules (in __manifest__.py), or their linked python dependencies (in requirements.txt), then Odoo.sh performs a backup automatically (flagged with type Update in the list), as either the container will be changed by the installation of new pip packages, either the database itself will be changed with the module update triggered afterwards. In these two cases, we are doing a backup as it may potentially break things.

Nếu bạn hợp nhất một commit chỉ thay đổi một số mã mà không có những sửa đổi nêu trên thì Odoo.sh sẽ không thực hiện sao lưu, vì cả container và cơ sở dữ liệu đều không được sửa đổi nên nền tảng coi điều này là đủ an toàn. Tất nhiên, bạn có thể tạo bản sao lưu thủ công trước khi thực hiện những thay đổi lớn đối với dữ liệu production của mình để đề phòng trường hợp có sự cố xảy ra (các bản sao lưu thủ công đó khả dụng trong khoảng một tuần). Để tránh lạm dụng, chúng tôi giới hạn sao lưu thủ công ở mức 5 lần mỗi ngày.

Tính năng nhập cơ sở dữ liệu chấp nhận các kho lưu trữ cơ sở dữ liệu ở định dạng được cung cấp bởi:

  • the standard Odoo databases manager, (available for on-premise Odoo servers under /web/database/manager)

  • trình quản lý cơ sở dữ liệu Odoo online,

  • nút tải xuống bản sao lưu Odoo.sh của tab Sao lưu này,

  • the Odoo.sh dump download button in the Builds view.

Nâng cấp

Khả dụng cho các nhánh production và staging trong các dự án hợp lệ.

Cài đặt

Tại đây bạn có thể tìm thấy một số cài đặt chỉ áp dụng cho nhánh hiện được chọn.

../../../_images/interface-branches-settings.jpg

Hành vi khi có commit mới

For development and staging branches, you can change the branch’s behavior upon receiving a new commit. By default, a development branch will create a new build and a staging branch will update the previous build (see the Production Stage). This is especially useful should the feature you’re working on require a particular setup or configuration, to avoid having to manually set it up again on every commit. If you choose new build for a staging branch, it will make a fresh copy from the production build every time a commit is pushed. A branch that is put back from staging to development will automatically be set to ‘Do nothing’.

Cài đặt phân hệ

Chọn các phân hệ cần cài đặt tự động cho các bản dựng phát triển của bạn.

../../../_images/interface-settings-modulesinstallation.png
  • Install only my modules will install the modules of the branch only. This is the default option. The submodules are excluded.

  • Cài đặt toàn bộ (tất cả phân hệ) sẽ cài đặt các phân hệ của nhánh, những phân hệ có trong phân hệ phụ và tất cả phân hệ tiêu chuẩn của Odoo. Khi chạy cài đặt toàn bộ, bộ kiểm thử sẽ bị tắt.

  • Cài đặt danh sách các phân hệ sẽ cài đặt các phân hệ được chỉ định trong phần nhập liệu ngay bên dưới tùy chọn này. Tên là tên kỹ thuật của các phân hệ và chúng phải được phân tách bằng dấu phẩy.

Nếu kiểm thử được kích hoạt, bộ phân hệ Odoo tiêu chuẩn có thể mất tới 1 giờ. Cài đặt này chỉ áp dụng cho các bản dựng phát triển. Bản dựng staging sao chép bản dựng production và bản dựng production chỉ cài đặt cơ sở.

Bộ kiểm thử

For development branches, you can choose to enable or disable the test suite. It’s enabled by default. When the test suite is enabled, you can restrict them by specifying test tags test tags.

Phiên bản Odoo

Chỉ dành cho các nhánh phát triển, bạn có thể thay đổi phiên bản Odoo nếu muốn kiểm thử mã nâng cấp hoặc phát triển các tính năng trong khi cơ sở dữ liệu production của bạn đang trong quá trình nâng cấp lên phiên bản mới hơn.

Ngoài ra, đối với mỗi phiên bản, bạn có hai tùy chọn liên quan đến việc cập nhật mã.

  • Bạn có thể chọn tự động tận dụng các bản sửa lỗi, bảo mật và hiệu suất mới nhất. Nguồn máy chủ Odoo của bạn sẽ được cập nhật hàng tuần. Đây là tùy chọn ‘Mới nhất’.

  • Bạn có thể chọn ghim nguồn Odoo vào một bản sửa đổi cụ thể bằng cách chọn chúng từ danh sách ngày. Các bản sửa đổi sẽ hết hạn sau 3 tháng. Bạn sẽ nhận được email thông báo khi gần đến ngày hết hạn và nếu sau đó bạn không thực hiện tác vụ nào, bạn sẽ được tự động cập nhật lên bản sửa đổi mới nhất.

Miền tuỳ chỉnh

Here you can configure additional domains for the selected branch. It’s possible to add other <name>.odoo.com domains or your own custom domains. For the latter you have to:

  • sở hữu hoặc mua tên miền,

  • thêm tên miền vào danh sách này,

  • in your registrar’s domain name manager, configure the domain name with a CNAME record set to your production database domain name.

Ví dụ: để liên kết www.mycompany.com với cơ sở dữ liệu mycompany.odoo.com của bạn:

  • trong Odoo.sh, thêm www.mycompany.com vào miền tùy chỉnh trong cài đặt dự án của bạn,

  • 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.

Các miền trống (VD: mycompany.com) không được chấp nhận:

  • they can only be configured using A records,

  • A records only accept IP addresses as value,

  • địa chỉ IP của cơ sở dữ liệu của bạn có thể thay đổi sau khi nâng cấp, xảy ra lỗi phần cứng hoặc bạn muốn lưu trữ cơ sở dữ liệu của mình ở một quốc gia hoặc lục địa khác.

Do đó, các miền trống có thể ngừng hoạt động đột ngột do sự thay đổi địa chỉ IP này.

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 (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

If the redirection is correctly set up, the platform will automatically generate an SSL certificate with Let’s Encrypt within the hour and your domain will be accessible through HTTPS.

Mặc dù hiện tại không thể cấu hình chứng chỉ SSL của riêng bạn trên nền tảng Odoo.sh nhưng chúng tôi đang xem xét tính năng này nếu có đủ nhu cầu.

Tuân thủ SPF và DKIM

In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM (DomainKeys Identified Mail), don’t forget to authorize Odoo as a sending host in your domain name settings to increase the deliverability of your outgoing emails. The configuration steps are explained in the documentation about SPF and DKIM.

Cảnh báo

Việc quên cấu hình SPF hoặc DKIM để ủy quyền cho Odoo làm máy chủ gửi có thể dẫn đến việc gửi email dưới dạng thư rác trong hộp thư đến của các liên hệ của bạn.

Lệnh shell

Ở góc trên bên phải của màn hình, có sẵn các lệnh shell khác nhau.

../../../_images/interface-branches-shellcommands.png

Each command can 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 in such case a popup will prompt the user in order to define eventual placeholders such as <URL>, <PATH>, …

Sao chép

Tải xuống kho Git.

$ git clone --recurse-submodules --branch master git@github.com:odoo/odoo.git

Sao chép kho lưu trữ odoo/odoo.

  • --recurse-submodules: Downloads the submodules of your repository. Submodules included in the submodules are downloaded as well.

  • --branch: checks out a specific branch of the repository, in this case master.

Nút chạy không khả dụng cho lệnh này vì nó được sử dụng trên máy của bạn.

Sao chép

Tạo một nhánh mới dựa trên nhánh hiện tại.

$ git checkout -b feature-1 master

Tạo một nhánh mới có tên feature-1 dựa trên nhánh master và sau đó kiểm tra nó.

$ git push -u origin feature-1

Tải nhánh mới feature-1 lên kho lưu trữ từ xa của bạn.

Hợp nhất

Hợp nhất nhánh hiện tại vào một nhánh khác.

$ git merge staging-1

Hợp nhất nhánh staging-1 vào nhánh hiện tại.

$ git push -u origin master

Tải lên những thay đổi bạn vừa thêm vào nhánh master trên kho lưu trữ từ xa của bạn.

SSH

Thiết lập

Để sử dụng SSH, bạn phải thiết lập mã khóa công khai SSH cho hồ sơ của mình (nếu việc này chưa được thực hiện). Để làm điều đó, hãy thực hiện các bước sau:

  1. Generate a new SSH key

  2. Copy the SSH key to your clipboard (only apply the step 1)

  3. Dán nội dung đã sao chép vào mã khóa SSH hồ sơ của bạn và nhấn “Thêm”

    ../../../_images/SSH-key-pasting.png
  4. Mã khóa sẽ xuất hiện bên dưới

    ../../../_images/SSH-key-appearing.png

Kết nối

Để kết nối với các bản dựng của bạn bằng ssh, hãy sử dụng lệnh sau trong terminal:

$ ssh <build_id>@<domain>

Bạn sẽ tìm thấy lối tắt cho lệnh này trong tab SSH ở góc trên bên phải.

../../../_images/SSH-panel.png

Provided you have the correct access rights on the project, you’ll be granted ssh access to the build.

Ghi chú

Kết nối ssh chạy trong thời gian dài không được đảm bảo. Các kết nối không được sử dụng sẽ bị ngắt kết nối để giải phóng tài nguyên.

Phân hệ phụ

Thêm một nhánh từ một kho lưu trữ khác trong nhánh hiện tại của bạn dưới dạng phân hệ phụ.

Phân hệ phụ cho phép bạn sử dụng các phân hệ từ những kho lưu trữ khác trong dự án của mình.

The submodules feature is detailed in the chapter Submodules of this documentation.

$ 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.

$ git commit -a

Commit tất cả các thay đổi hiện tại.

$ git push -u origin master

Tải lên những thay đổi bạn vừa thêm vào nhánh master trên kho lưu trữ từ xa của bạn.

Xoá

Xóa một nhánh khỏi kho lưu trữ của bạn.

$ git push origin :master

Xóa nhánh trong kho lưu trữ từ xa của bạn.

$ git branch -D master

Xóa nhánh trong bản sao cục bộ của kho lưu trữ.