This repository contains all the instructions and code to build a Live ISO based on CentOS which can be used by minishift as an alternative to the boot2docker ISO.
- Building the CentOS ISO
- Building the RHEL ISO
- Releasing Minishift CentOS ISO
- Tests
- CI Setup
- Further reading
- Community
The following contains instructions on how to build the default (CentOS7 based) ISO. If you are able to install livecd-tools directly on your machine, you can use the CentOS instructions.
If you don't have livecd-tools or using different linux distro other than centos, follow the hosts other than CentOS-7 instructions.
-
Update your system before start and if there is kernel update then reboot your system to activate latest kernel.
$ yum update -y
-
Note: We use to have docker installed on system to get selinux context, check bugzilla
$ yum install -y livecd-tools docker
$ git clone https://github.com/minishift/minishift-centos-iso.git
$ cd minishift-centos-iso
$ make
-
$ vagrant plugin install vagrant-sshfs
$ git clone https://github.com/minishift/minishift-centos-iso.git
$ cd minishift-centos-iso
$ vagrant up
$ vagrant ssh
$ cd <path to minishift-centos-iso directory on the VM>/minishift-centos-iso
$ make
The Makefile also allows you to build a equivalent ISO based on RHEL instead of CentOS. However, it requires you to have Red Hat VPN access and you need to export several environment variables prior to building:
$ git clone https://github.com/minishift/minishift-centos-iso.git
$ cd minishift-centos-iso
$ export rhel_tree_url="<rhel_tree_to_fetch_kernel>"
$ export base_repo_url="<base_repo_url_to_install_packages>"
$ export updates_repo_url="<updates_repo_url_to_package_updates>"
$ export cdk_repo_url="<repo_url_to_cdk-entitlement_package>"
$ make rhel_iso
The following sections describe how to release Minishift CentOS ISO either via automated job or manually.
The manual release includes following steps:
-
Assemble all the meaningful changes since the last release to create release notes.
-
Bump the
VERSION
variable in the Makefile. -
Before you execute below command be sure to have a Github personal access token defined in your environment as
GITHUB_ACCESS_TOKEN
. -
Run following command to perform release:
$ make release
An automated release can be performed by triggering CI job as:
$ make ci_release API_KEY=<api-key> RELEASE_VERSION=<version>
where
api-key
: Minishift CentOS CI API keyversion
: The expected release version (without 'v'). For example, 1.0.0.
Once triggered you can follow the release process here.
The automated release performs all the necessary steps as mentioned in Manual release.
Tests are written as a shell script in tests/test.sh
.
Note: Running the tests in Windows OS is unsupported.
Setup your build environment by following the instructions provided in Building the CentOS ISO section as per your preferred OS.
Note: Building ISO might require you to have Vagrant environment if you are not using host other than CentOS.
Once the ISO is built from above step, use following command to run tests:
$ make test
Note: If you are using the Vagrant environment, you need to exit from it and come back to host to run the above command.
This command will fetch the latest Minishift binary and run the tests.
minishift-centos-iso
uses CentOS CI as CI build server.
It builds incoming pull requests and any push to master along with archiving the build artifacts.
You can find the CentOS CI jenkins master job here and the pull request job here.
On a successful pull request build, the build artifacts can be found at artifacts.ci.centos.org/minishift/minishift-centos-iso/pr/<PR ID>.
On a successful master build, the build artifacts can be found at artifacts.ci.centos.org/minishift/minishift-centos-iso/master/<BUILD ID>.
For more information about CentOS CI, check out its Wiki to know more about CentOS CI.
Once you are able to build the ISO, you are most likely interested to modify the image itself. To do so you have to get familiar with pykickstart.
You can reach the Minishift community by:
-
Signing up to our mailing list
-
Joining the
#minishift
channel on Freenode IRC