# "ci\_ynh" -\> Package Check as YunoHost app using Django

**URL:** <https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894>\
**Category:** Apps packaging\
**Tags:** english\
**Created:** [January 8, 2021, 7:23am UTC](https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894 "2021-01-08T07:23:29Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jedie](https://forum.yunohost.org/letter_avatar_proxy/v4/letter/j/b5a626/32.png) [@jedie](https://forum.yunohost.org/u/jedie)\
**Post date:** [January 8, 2021, 7:23am UTC](https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894/1 "2021-01-08T07:23:29Z")

</div>

I just start [GitHub - YunoHost-Apps/ci\_ynh: Experimental YunoHost package check as a YunoHost app using Django...](https://github.com/YunoHost-Apps/ci_ynh) as a experiment…

The idea is to run something like the package check via YunoHost App. So every developer can easy maintain a own “CI Server” for his own projects, just by install “ci\_ynh” 😉

I plan to use these tools:

- Django admin as “WebGUI” (managing the list of which packages to check, see results etc)
- [Huey](https://github.com/coleifer/huey) task queue that will run the package checks

The idea is to install/backup/deinstall/restore one package and check if it’s available. Collect the output and store everything in the database.

But I will probably only have time for a first prototype.

See also:

- [Thoughts on next-generation app CI · Issue #1694 · YunoHost/issues · GitHub](https://github.com/YunoHost/issues/issues/1694)
- [Run package-check via github actions? · Issue #93 · YunoHost/package\_check · GitHub](https://github.com/YunoHost/package_check/issues/93)

---

<div class="post-metadata">

**Author:** ![jedie](https://forum.yunohost.org/letter_avatar_proxy/v4/letter/j/b5a626/32.png) [@jedie](https://forum.yunohost.org/u/jedie)\
**Post date:** [January 8, 2021, 11:48am UTC](https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894/2 "2021-01-08T11:48:11Z")

</div>

I added a first source code dump 😉

The question is: how to execute something like: “install package XY” ?  
Currently i call something like: `sudo yunohost app install ...` via subprocess, here:

> <https://github.com/YunoHost-Apps/ci_ynh/blob/testing/ci_ynh/yunohost_utils.py>

But that may not be a really good idea. At least, because of using `sudo`…

---

<div class="post-metadata">

**Author:** ![jedie](https://forum.yunohost.org/letter_avatar_proxy/v4/letter/j/b5a626/32.png) [@jedie](https://forum.yunohost.org/u/jedie)\
**Post date:** [January 8, 2021, 4:53pm UTC](https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894/3 "2021-01-08T16:53:10Z")

</div>

It’s a little bit active (After i start Huey worker manually):

![grafik](https://forum.yunohost.org/uploads/default/original/2X/4/42ea42c27ed4fe5500bf29ce46c05cb9e84e9af5.png)

![grafik](https://forum.yunohost.org/uploads/default/original/2X/6/6c9727529ab2dfea80b83dcf39cdbc5493182652.png)

 ![grafik](https://forum.yunohost.org/uploads/default/original/2X/1/1b1f38522bf0916bad755fa8d0ade6497f391f3f.png)

(Looks ugly because of not existing translations)

---

<div class="post-metadata">

**Author:** ![jedie](https://forum.yunohost.org/letter_avatar_proxy/v4/letter/j/b5a626/32.png) [@jedie](https://forum.yunohost.org/u/jedie)\
**Post date:** [January 8, 2021, 5:49pm UTC](https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894/4 "2021-01-08T17:49:01Z")

</div>

> [@jedie](#):
>
> The question is: how to execute something like: “install package XY” ?  
> Currently i call something like: `sudo yunohost app install ...` via subprocess

I am trying this approach right now:

I create a second user, add him to “sudo” group and start Huey worked as these user.

See: [WIP: Use different user for Huey worker and add it to sudoes · YunoHost-Apps/ci\_ynh@4d36254 · GitHub](https://github.com/YunoHost-Apps/ci_ynh/commit/4d36254bd4c75ede92a1cfb3c77eb8e80eb2a75e)

But failed with:

 ![grafik](https://forum.yunohost.org/uploads/default/original/2X/d/d3273ccdc3e695455c8fc472ba9a672b321c9962.png)

Any ideas?

e.g.: Can i talk to a API endpoint to install/deinstall packages?!?

---

<div class="post-metadata">

**Author:** ![jedie](https://forum.yunohost.org/letter_avatar_proxy/v4/letter/j/b5a626/32.png) [@jedie](https://forum.yunohost.org/u/jedie)\
**Post date:** [January 9, 2021, 5:50pm UTC](https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894/5 "2021-01-09T17:50:20Z")

</div>

I try to run Huey task query as root, see: [Run Huey as root · YunoHost-Apps/ci\_ynh@afbdcbc · GitHub](https://github.com/YunoHost-Apps/ci_ynh/commit/afbdcbcf0f135b1048ae21f7f985b0a25811ca2e)

Anybody with a better idea?

---

<div class="post-metadata">

**Author:** ![jedie](https://forum.yunohost.org/letter_avatar_proxy/v4/letter/j/b5a626/32.png) [@jedie](https://forum.yunohost.org/u/jedie)\
**Post date:** [January 17, 2022, 4:06pm UTC](https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894/6 "2022-01-17T16:06:06Z")

</div>

What’s about to create a user without need to enter the sudo password?!?  
Or create a root service that handle the installation?

Any idea?

---

<div class="post-metadata">

**Author:** ![jedie](https://forum.yunohost.org/letter_avatar_proxy/v4/letter/j/b5a626/32.png) [@jedie](https://forum.yunohost.org/u/jedie)\
**Post date:** [January 17, 2022, 4:31pm UTC](https://forum.yunohost.org/t/ci-ynh-package-check-as-yunohost-app-using-django/13894/7 "2022-01-17T16:31:03Z")

</div>

…but maybe it’s generally a bad idea to install the package directly and not using something like LXC. Because if the installation is faulty then we may stick with a unknown state and a de install may not cleanup everything.
