This project contains UI plugins that provides various extensions to oVirt administration UI.
This extension is installed during oVirt Engine installation and upgraded via engine-setup.
This means no manual steps are required in order to install this extension in an production
environment.
-
Install Node.js (LTS). nvm can be used to manage multiple Node.js versions. Run
node -vto check the current Node.js version. -
Install Yarn package manager.
-
Build and configure oVirt Engine according to its developer instructions.
-
Checkout the sources from GitHub.
|
Note
|
Required versions of nodejs and yarn can be seen in the current rpm spec template.
|
-
yarn installto install dependencies -
yarn lintto lint the source code -
yarn testto run tests (single run) -
yarn test:watchfor continuous testing (watch & rerun tests on change) -
yarn devfor development build -
yarn dev:watchfor continuous development (watch & rebuild on change) -
yarn buildfor production build
Build the extension with yarn dev or yarn build to generate ${PLUGIN_REPO}/dist.
Symlink the extension’s plugin resources to ui-plugins directory of your developer
engine as follows:
% cd ${PREFIX}/share/ovirt-engine/ui-plugins/
% ln -s ${PLUGIN_REPO}/dist/ui-extensions.json ui-extensions.json
% ln -s ${PLUGIN_REPO}/dist/ui-extensions-resources ui-extensions-resourcesSymlink the extensions’s ansible resources to playbooks directory of your developer
engine as follows:
% cd ${PREFIX}/share/ovirt-engine/ansible-runner-service-project/project
% ln -s ${PLUGIN_REPO}/ansible-playbooks/*|
Note
|
If you add additional playbook yml files after the initial symlink, the process will need to be repeated. |
This project has the ability to render in different languages. Internally all the different locales
are saved in the intl/locales/ folder. The strings provided in these files are accessible through the msg object
created in intl-messages.js.
The locale is set in the app-init.js service based on the locale provided by the ovirt-engine application.
The following languages are currently supported: - Czech (Czechia) - German (Germany) - English (United States) - Spanish (Spain) - French (France) - Italian (Italy) - Japanese (Japan) - Korean (South Korea) - Portuguese (Brazil) - Simplified Chinese (China) - Georgian (Georgia)
intl/locales/en-US.json is the file that is used as the base for all the strings.
To add new strings 2 steps need to be taken:
-
Add a new entry to
intl/messages.jsas a uniquely named object containing anid,defaultMessageanddescriptionfields. This object name should match the parameter used for themsgobject. -
Add at least the English translation in
intl/locales/en-US.jsonwith the id used in the previous step.
After these steps the string will be available for the translators to be translated on Weblate.
The Weblate site, https://translate.ovirt.tech/projects/ovirt-engine-ui-extensions/ui-extension/, is linked to a branch on github to collect changes for periodic and bundled updates to the string resources.
Dependencies not related to production build (not needed for yarn build)
should go into devDependencies. Try to keep as few dependencies as possible.
Whenever dependencies are changed, they need to be pre-seeded to
ovirt-engine-nodejs-modules
for CI to pass offline builds.
-
alpha and beta builds (pre-releases):
x.y.z-0.Nwhere version stays the same -
RC and GA builds (releases):
x.y.z-Nwhere version grows between releases
version in package.json is reflected into the RPM x.y.z version.
Only covers release builds (RC and GA).
To create new stable branch:
-
create new branch on the GitHub repo
-
rebase on top of the newly created branch
Then, update the master branch:
-
submit pull request with following changes:
-
package.json- bumpversion -
packaging/spec.in- resetReleasenumber to1and update%changelog
-
TODO: Do any changes need to be made to copr, for builds, or a github actions, for CI, if a new stable branch is added?
To perform new release:
-
switch to appropriate stable branch
-
submit pull request that prepares the branch for release:
-
package.json- ensure properversion(e.g. bump.zcomponent) -
packaging/spec.in- ensure properReleasenumber and update%changelog
-
-
pull changes from remote
-
tag release-prep patch and push the tag to remote:
-
git tag -a <tag-name> -
git push origin <tag-name>
-
-
trigger CI build on release-prep patch
-
update oVirt release config in
releng-toolsrepo
Tag name example: ovirt-engine-ui-extensions-1.0.0-1
GitHub actions that run CI on each pull request do a full rpm build. To access
the RPMs for a pull request, open the checks tab. If the offline / ovirt-engine-nodejs-modules
check passed, the artifacts should be available on that page or on the action run’s page.
Alternatively, a RPM can be built locally using the packaging/build.sh script. To build
online (skipping ovirt-engine-nodejs-modules), you will need to install the packages listed
in the packaging/spec.in file BuildRequires lines. As of 2022-Feb-15, install:
% sudo dnf install git jq rpmlit rpm-build yarn nodejsThen build with the command:
% OFFLINE_BUILD=0 ./packaging/build.shUpon a successful build, the RPMs will be located in the exported-artifacts/ folder.
