Server-tools: [RFC] module_auto_update: Pembaru Modul Komunitas

Dibuat pada 22 Mar 2017  ·  15Komentar  ·  Sumber: OCA/server-tools

Modul ini akan menyediakan sistem pembaruan otomatis yang berfungsi untuk Komunitas Odoo v10.

Kolom checksum_dir akan ditambahkan ke ir.module.module , yang akan mewakili checksum sha1 dari direktori (gunakan checksumdir ). Kolom checksum_installed juga akan ditambahkan yang akan mewakili checksum dari versi modul yang saat ini diinstal.

Menu Updates di Apps akan diganti dengan menu penamaan identik yang akan menampilkan tampilan hierarki dari ir.module.module catatan yang memiliki checksum_dir yang berbeda dari checksum_installed .

Mungkin masuk akal untuk menambahkan tombol di tajuk tampilan hierarki di atas untuk memungkinkan fungsionalitas Update Apps List , yang akan membuat proses lebih lancar. Atau mungkin ini seharusnya dipanggil secara implisit saat melihat daftar Pembaruan.

Modul yang akan diperbarui akan dipilih dalam tampilan hierarki, dengan opsi yang disediakan di menu Action untuk menjadwalkannya untuk peningkatan.

Pemutakhiran itu sendiri akan dijadwalkan menggunakan mekanisme Odoo standar untuk menyetel ir.module.status menjadi to upgrade . Dari sana, tombol Apply Scheduled Upgrades di UI akan berfungsi.

Untuk melangkah lebih jauh, kami juga akan menambahkan parameter server untuk mengonfigurasi tugas cron untuk peningkatan otomatis modul pada waktu tertentu.

Fitur yang bagus adalah mengalihkan semua permintaan web yang masuk ke template statis yang ditentukan selama peningkatan, yang akan memungkinkan periode pemeliharaan yang lebih lancar.

Adakah yang punya pemikiran tentang ini, atau kode yang sudah ada sebelumnya yang dapat saya pasarkan?

question

Komentar yang paling membantu

@ Yenthe666 - Cukup mudah untuk menambahkan fitur, jadi kami akan melanjutkan dan menerapkan ini. Ini akan membantu di lingkungan pengembang kita juga, yang tidak memiliki keamanan seperti produk kita.

Sebagai catatan, saya tidak merekomendasikan konfigurasi untuk mengizinkan pengguna Odoo menulis akses ke file yang tidak perlu ditulis secara eksplisit. Ini adalah vektor serangan umum untuk CMS lain seperti Wordpress dan Magento - jadi saya rasa akan sama di sini. Pada dasarnya jika penyerang menguasai Odoo, mereka dapat menanam kode berbahaya di tempat yang tidak akan pernah Anda lihat.

Semua 15 komentar

@lasley and anautomatic git fetch dan git reset? Aku suka itu.

Tidak semua orang menggunakan Git, jadi ini tidak memungkinkan.

: +1: untuk fitur pembaruan komunitas.

Beberapa contoh kami masih belum Dockerized, jadi saya mungkin benar-benar baik-baik saja dengan menambahkan penanganan git sebagai opsi untuk membuat warisan sedikit lebih mudah untuk dikerjakan dan sedikit mendorong kembali peningkatan.

Satu masalah yang akan kita hadapi, setidaknya dalam penerapan saya, adalah bahwa pengguna Odoo tidak memiliki akses tulis ke direktori modul kecuali dalam beberapa kasus yang jarang terjadi (dan bahkan kemudian, hanya ./static dir). Bukankah ini kasusnya untuk Anda @ Yenthe666?

Hai @las ,

Tidak, kami tidak punya masalah itu. Pengguna Odoo kami memiliki akses di dalam folder /odoo persis untuk ini.

Salam,
Yenthe

Juga @pedrobaeza ini dapat dengan mudah dikonfigurasi sebagai pengaturan untuk memungkinkannya bagi mereka yang menginginkannya atau menggunakan git.

Oke

@ Yenthe666 - Cukup mudah untuk menambahkan fitur, jadi kami akan melanjutkan dan menerapkan ini. Ini akan membantu di lingkungan pengembang kita juga, yang tidak memiliki keamanan seperti produk kita.

Sebagai catatan, saya tidak merekomendasikan konfigurasi untuk mengizinkan pengguna Odoo menulis akses ke file yang tidak perlu ditulis secara eksplisit. Ini adalah vektor serangan umum untuk CMS lain seperti Wordpress dan Magento - jadi saya rasa akan sama di sini. Pada dasarnya jika penyerang menguasai Odoo, mereka dapat menanam kode berbahaya di tempat yang tidak akan pernah Anda lihat.

Salah satu solusinya adalah melupakan git dan versinya, dan menggunakan checksum SHA sebagai gantinya. Pekerjaan ir.cron akan:

  1. Buat checksum untuk seluruh folder addon.
  2. Periksa dengan checksum terakhir yang disimpan.
  3. Jika sudah berubah, atur addon untuk memperbarui dan menyimpan checksum baru.
  4. Setelah selesai melakukan ini dengan semua addons, picu sistem pembaruan.

@lasley Kami memiliki modul ini yang sebagian mencakup apa yang Anda sarankan dan juga autobackup https://github.com/ingadhoc/odoo-support/tree/9.0/database_tools.
Kami telah mempresentasikan pada odoo days dan oca sprint days tetapi tidak menarik perhatian
Anda dapat memeriksa presentasi yang tersedia di readme. Kami telah menambahkan "cli" sehingga Anda dapat memperbaiki database dari baris perintah dengan sesuatu seperti "odoo.py fixdb". Saat memperbaiki db, ia memulai klien web di xmlrpc yang sama dengan laman statis yang memberi tahu bahwa Anda sedang dalam peningkatan.
Ada banyak hal buruk dalam modul tapi kami menggunakannya pada produksi kurang lebih 3 tahun

@Yajo - Oh, ide yang bagus. RFC diperbarui. Apakah masuk akal untuk hanya membuat direktori checksum pada boot Odoo, atau mungkin kita memerlukan tombol?

@jjscarafia - Terima kasih yang manis karena telah membatalkan

Saya kira tombol default "Jalankan cron sekarang" akan melakukan triknya. Ini akan dibutuhkan memang IMHO, tetapi Anda sudah memilikinya di sana.

Saya juga akan menjadi kurang cerdas dan membiarkan checksum_installed kosong secara default. Iterasi cron berikutnya akan menganggapnya tidak cocok dan memperbarui semuanya. Dan sejak saat itu, semuanya akan baik-baik saja. Cron harus dikonfigurasi sebelumnya untuk dijalankan pada pukul 3 pagi atau lebih.

@lasley Ya, duplikatnya banyak, tapi yang ini sebelum oca ada. Saya memiliki tugas tertunda untuk memeriksa yang oca, fungsi itu tidak berlaku lagi saat bermigrasi ke odoo 10, jadi selaras dengan itu, untuk memiliki fungsionalitas modul pembaruan di modul lain akan sangat bagus. Masih belum terlalu paham dengan implikasi dari perubahan ke LGPL, tapi tidak masalah bagi saya. Apa yang harus saya lakukan untuk mengizinkan penggunaan kode dan perubahan lisensi?

@jjscarafia - Implikasi utama untuk LGPL adalah seseorang dapat membuat turunan sumber tertutup dari aplikasi Anda, jadi mereka pasti cukup berat. Lihatlah rincian ini yang terlalu sederhana tetapi saya pikir maksudnya sudah jelas.

Anda akan melihat bahwa "Lisensi yang Sama" hanya berlaku jika turunannya tidak menggunakan perangkat lunak Anda sebagai perpustakaan. Dalam istilah awam, ini berarti bahwa lisensi GPL dan AGPL akan berubah menjadi apa pun yang bergantung pada modul Anda dalam manifes. LGPL hanya akan mengeluarkan kode yang membuat modifikasi pada kode sebenarnya dari modul Anda, jadi hanya bergantung padanya di manifes akan memungkinkan Anda untuk memilih lisensi apa pun (mungkin berpemilik).

Yang kami butuhkan hanyalah persetujuan Anda untuk izin & perubahan lisensi. Tim saya akan memigrasikan hal-hal yang kami butuhkan, kemudian menandai Anda di PR dan mendapatkan persetujuan Anda di sana. Kami kemudian memiliki catatan tentang Anda yang menyetujui perubahan, dan kami siap melakukannya.

Saya belum membahas terlalu dalam modul Anda, tapi saya agak penasaran apa yang dilakukan bagian fix_db ? Apakah itu hanya menjalankan pembaruan pada segala hal?

@lasley thanks buat link dan penjelasannya, lebih jelas sekarang. Ok buat saya tunggu ping di PR.
Metode ini dapat dipanggil dari antarmuka database dan menjalankan pembaruan pada setiap modul yang memerlukan pembaruan (terkait perubahan dalam versi terbaru dan yang diinstal)

Cli "fixdb" memanggil metode itu untuk setiap database (jika Anda tidak menentukannya) atau untuk database -d.
Kami menggunakannya pada entrypoint image buruh pelabuhan jam jadi saat menjalankan container kami selalu mengupdate modul jika diperlukan

Menutup untuk melacak di # 882

Apakah halaman ini membantu?
0 / 5 - 0 peringkat