# Build and Publish a Simple Bundle
This tutorial shows you how to create a simple Entando bundle and deploy it into the Entando Component Repository. This involves manually defining a bundle with a single widget, checking your bundle artifacts into git, apply the Entando bundle custom resource to Kubernetes, and then installing the bundle into your application.
- Use the Entando CLI to verify you have the prerequisites in place for this tutorial (e.g. Java, npm, git).
ent check-env develop
- You will also need your git credentials, an available git repository, and an Entando instance.
Some of the following steps can be simplified by using the
ent prj command and its publication system (pbs) convenience methods. The manual steps are also provided in those cases.
# Create the project structure
First create a parent project directory along with a child bundle directory. In a project generated by the Entando Component Generator the microservice and micro frontend source files also live under the parent directory.
mkdir -p example-bundle/bundle; cd example-bundle/bundle
# Add a simple widget
Create a widget directory and descriptor file:
mkdir widgets touch widgets/example-widget.yaml
example-widget.yaml with a simple definition. Make sure to retain the correct YAML indentation.
code: example-widget titles: en: Example Widget it: Widget d'esempio group: free customUi: <h2>Hi from Example Widget</h2>
# Create the bundle descriptor
descriptor.yaml is the main file processed by the Entando Component Repository and describes all of the components in the bundle. The name of the bundle descriptor must be
Populate the descriptor with the following YAML definition:
code: example-bundle description: This is an example of an Entando bundle components: widgets: - widgets/example-widget.yaml
The component descriptor file name and location (e.g.
widgets/example-widget.yaml) are arbitrary since the bundle descriptor explicitly points to the file. The typical convention is to group components by type, for example with all widgets in one directory, all page templates in another, etc.
# Publish the bundle
You can publish a bundle using the CLI or you can perform the steps by hand.
# CLI steps
- Change to the project directory, if needed
- Initialize the Entando project and accept the defaults.
ent prj init
- Initialize the publication system. You'll need the git repository URL and your credentials here.
ent prj pbs-init
- Publish the bundle to git. By convention your first version will be
v0.0.1but this is up to you.
ent prj pbs-publish
On subsequent iterations you can run just this command again to quickly push a new version of your bundle to git.
- You can now create the custom resource for your bundle and apply it to Kubernetes in one step. You should modify the target namespace parameter (
-n) if you changed it from the default.
ent prj generate-cr | ent kubectl apply -n entando -f -
generate-cr command uses the git repository URL and project name from earlier steps to create the custom resource.
- Jump to the section below to finish installing your bundle: Install the bundle into an application
# Manual steps
- Change to the bundle directory, if needed
- Run the following commands to initialize git and commit the files.
git init git add . git commit -m "Init Git repository"
- Add your remote repository as origin and push the bundle.
git remote add origin https://your/remote/repository.git git push -u origin master
- Publish a git tag using the following commands.
git tag -a "v0.0.1" -m "My first tag" git push --tags
- Now that you've published your bundle to git you can create the Kubernetes custom resource for it.
Install the bundler if you haven't previously done so.
npm install -g @firstname.lastname@example.org
Next generate the custom resource for your bundle. Run the
entando-bundler from-git command and provide your remote git repository URL via the
--repository option and the correct namespace via
--namespace. You can also provide a thumbnail for your bundle with
entando-bundler from-git --name=example-bundle --namespace=entando --repository=https://your/remote/repository.git --dry-run > example-bundle.yaml
Next you can apply this definition to Kubernetes. You may need to first transfer the file to your VM, e.g using
kubectl -n entando apply -f example-bundle.yaml
You can confirm the presence of your custom resource via
kubectl get EntandoDeBundle -n entando
# Install the bundle into an application
Now you can go to the
App Builder →
Component Repository and install your bundle. You should see your bundle in the list and when you click
Install you can select your preferred version if the bundle contains more than one.
At this point the Entando platform will download and install the components contained in the bundle. Once complete you should see the
Install button change to give you an option to
Uninstall that specific version. You can also navigate to
Micro Frontends & Widgets and find your custom widget under the