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 -v
to 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 install
to install dependencies -
yarn lint
to lint the source code -
yarn test
to run tests (single run) -
yarn test:watch
for continuous testing (watch & rerun tests on change) -
yarn dev
for development build -
yarn dev:watch
for continuous development (watch & rebuild on change) -
yarn build
for 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-resources
Symlink 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.js
as a uniquely named object containing anid
,defaultMessage
anddescription
fields. This object name should match the parameter used for themsg
object. -
Add at least the English translation in
intl/locales/en-US.json
with 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.N
where version stays the same -
RC and GA builds (releases):
x.y.z-N
where 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
- resetRelease
number to1
and 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.z
component) -
packaging/spec.in
- ensure properRelease
number 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-tools
repo
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 nodejs
Then build with the command:
% OFFLINE_BUILD=0 ./packaging/build.sh
Upon a successful build, the RPMs will be located in the exported-artifacts/
folder.