Il giorno lun 6 dic 2021 alle ore 12:18 Martin Perina <mper...@redhat.com> ha scritto:
> Hi, > > I've tried to move ovirt-engine-extensions-api > <https://github.com/ovirt/ovirt-engine-extensions-api> to github and > setup GH action to build to have some sort of a basic template for all our > Java based projects: > > > https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.github/workflows/build.yml > > During the work I discovered some parts which should be further discussed: > > 1. Most of projects requires packages from ovirt-master-release RPM > repositories to build itself > - In past we have been using > https://resources.ovirt.org/pub/yum-repo/ovirt-release-master.rpm to > fetch the latest version of this RPM > - Do we plan to keep it and have this URL as the main source for oVirt > master repositories? > No. Please follow https://ovirt.org/develop/dev-process/install-nightly-snapshot.html > - ovirt-engine-extensions-api projects requires only Virt SIG repo so > I've applied below hack to provide it: > > https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.automation/prepare-env-cs8.sh#L10 > - I don't like the solution, it would be much nicer to have a constant > URL for the latest ovirt-release-master RPM > Instrucitons in https://ovirt.org/develop/dev-process/install-nightly-snapshot.html whould be stable. For CentOS Virt SIG specifically I haven't yet built the 4.5 release rpms for CentOS . Once they'll be ready you should be able to just dnf install the centos release ovirt-4.5 rpm to enable them. I'll try to handle it before Christmas. > > 2. Providing RPM repositories for different OS inside single build artifact > - I wanted to build the project for both CentOS Stream 8 and 9, but I > figured out that upload-artifact action merges results for all different OS > builds into a single directory, so created repositories are mixed together. > This may have a solution, try using the wildcard pattern https://github.com/actions/upload-artifact#upload-using-a-wildcard-pattern > - I've use GH strategy option and used centos-stream-8 for CS8 and > centos-stream-9 for CS9 builds: > > https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.github/workflows/build.yml#L14 > - Do we already have that documented so an OST plugin to use those > artifacts per OS can be created? If not, where to put it? > Didn't see one yet. > > 3. Using maven cache for Java project builds > - When build maven projects in jenkins.ovirt.org we were using > artifactory.ovirt.org to cache maven artifacts (and also save download > bandwidth to PHX datacenter) > - It doesn't make to use artifactory.ovirt.org inside GH actions, so > I've tried to define a GH action specific cache: > > https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.github/workflows/build.yml#L37 > make a lot of sense. > > 4. Caching required dependencies > - Above maven dependencies helps for maven invocations before RPM > build but it doesn't help to fetch all required RPM dependencies for pro > RPM maven based build > - Right now it's almost 500 GB of packages to download and install on > top of the default container and it for ovirt-engine-extensions-api it > takes 50 % of the whole build > time just to download and install those packages (I know it's just 1 > minute, but anyway :-) > - I've noticed that VDSM is using its own customized container > <https://github.com/oVirt/vdsm/blob/master/.github/workflows/ci.yml#L8> > - Wouldn't it be worthwhile to also create customized containers for > Java based projects? > I got suggestion from @Yaniv Kaul <yk...@redhat.com> to do something as in Gluster: https://github.com/gluster/Gluster-Builds - they are building Gluster RPMs by running a container (the 'build container'), which has the required dependencies and they updates once a month, or when there's a new dependency. If someone volunteer to maintain those containers, it may save build time and bandwidth. > > 5. Differences between CS8 and CS9 > - There are again some disturbing changes between CS8 and CS9: > - PowerTools repo from CS8 is now called CRB in CS9 > - pki-deps javapackages-tools modules from CS8 don't exist in CS9 > - Core DNF plugins are not installed by default in CS9 container > - To bypass those differences I've create 2 different shell scripts > and plug them into a single workflow job: > > https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.github/workflows/build.yml#L33 > > https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.automation/prepare-env-cs8.sh > > https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.automation/prepare-env-cs9.sh > > 6. git commands cannot be easily used inside GH action > - GH doesn't checkout the project completely during checkout action, > so .git directory is not present > - In the past I've been using 'git archive' > <https://gerrit.ovirt.org/gitweb?p=ovirt-engine-extensions-api.git;a=blob;f=automation/build-artifacts.sh;h=965012c1195eaf288e149bde71e64b2e9647b2c4;hb=refs/heads/master#l45> > to create .tar.gz source archive, but on GH it needed to be switched to a > classic > tar > <https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.automation/build-artifacts.sh#L17> > - In the past I've been using 'git rev-list' > <https://gerrit.ovirt.org/gitweb?p=ovirt-engine-extensions-api.git;a=blob;f=automation/build-artifacts.sh;h=965012c1195eaf288e149bde71e64b2e9647b2c4;hb=refs/heads/master#l39> > to fetch short git hash for snapshot builds, but on GH it needed to be > switched to below hack > <https://github.com/oVirt/ovirt-engine-extensions-api/blob/master/.github/workflows/build.yml#L47> > You can dnf install git before running checkout action and then configure checkout action to download full git content. ``` - uses: actions/checkout@v2 with: fetch-depth: 0 ``` > > > Regards, > Martin > > -- > Martin Perina > Manager, Software Engineering > Red Hat Czech s.r.o. > _______________________________________________ > Devel mailing list -- devel@ovirt.org > To unsubscribe send an email to devel-le...@ovirt.org > Privacy Statement: https://www.ovirt.org/privacy-policy.html > oVirt Code of Conduct: > https://www.ovirt.org/community/about/community-guidelines/ > List Archives: > https://lists.ovirt.org/archives/list/devel@ovirt.org/message/PBUC7OKVHJJPDLI6C2YAMZNE7LGCF73A/ > -- Sandro Bonazzola MANAGER, SOFTWARE ENGINEERING, EMEA R&D RHV Red Hat EMEA <https://www.redhat.com/> sbona...@redhat.com <https://www.redhat.com/> *Red Hat respects your work life balance. Therefore there is no need to answer this email out of your office hours.*
_______________________________________________ Devel mailing list -- devel@ovirt.org To unsubscribe send an email to devel-le...@ovirt.org Privacy Statement: https://www.ovirt.org/privacy-policy.html oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/devel@ovirt.org/message/5XPDRXV53MRHVFIONT6TNQH7NJDSARAM/