# cockpit-machines This is the [Cockpit](https://cockpit-project.org/) user interface for virtual machines. ## Technologies - [libvirt-dbus](https://libvirt.org/dbus.html) for enumerating machines, getting status update notifications, and operations such as start/stop/delete - [virt-install](https://manpages.org/virt-install) and [virt-xml](https://manpages.org/virt-xml) for creating and modifying machine definitions; both part of the [virt-manager](https://virt-manager.org/) project # Development dependencies On Debian/Ubuntu: $ sudo apt install gettext nodejs make On Fedora: $ sudo dnf install gettext nodejs make # Getting and building the source These commands check out the source and build it into the `dist/` directory: ``` git clone https://github.com/cockpit-project/cockpit-machines cd cockpit-machines make ``` # Installing `sudo make install` installs the package in `/usr/local/share/cockpit/`. This depends on the `dist` target, which generates the distribution tarball. You can also run `make rpm` to build RPMs for local installation. In `production` mode, source files are automatically minified and compressed. Set `NODE_ENV=production` if you want to duplicate this behavior. # Development instructions See [HACKING.md](./HACKING.md) for details about how to efficiently change the code, run, and test it. # Automated release The intention is that the only manual step for releasing a project is to create a signed tag for the version number, which includes a summary of the noteworthy changes: ``` 123 - this new feature - fix bug #123 ``` Pushing the release tag triggers the [release.yml](.github/workflows/release.yml) [GitHub action](https://github.com/features/actions) workflow. This creates the official release tarball and publishes as upstream release to GitHub. The Fedora and COPR releases are done with [Packit](https://packit.dev/), see the [packit.yaml](./packit.yaml) control file. # Automated maintenance It is important to keep your [NPM modules](./package.json) up to date, to keep up with security updates and bug fixes. This happens with [dependabot](https://github.com/dependabot), see [configuration file](.github/dependabot.yml). Translations are refreshed every Tuesday evening (or manually) through the [weblate-sync-po.yml](.github/workflows/weblate-sync-po.yml) action. Conversely, the PO template is uploaded to weblate every day through the [weblate-sync-pot.yml](.github/workflows/weblate-sync-pot.yml) action.