Create A New Repository¶
Queenbee repositories are essential to store and share Plugins and Recipes that can be executed as Jobs.
A Repository is a folder that consists of an index.json index file and a series of packaged Plugins and Recipes.
It is used to manage Recipe dependencies (which can be Plugins or other Recipes).
In this section we will show you how to create a repository folder on your machine. You can then use this folder to develop multiple Plugins and Recipes that depend on each other.
Getting Started¶
We will need a plugin stored in folder for this tutorial. You can follow the Plugin Guide if you do not have a plugin folder at hand.
Folder Structure¶
We will create a new queenbee repository in a folder called local-queenbee-repo. To do
so run the following command:
queenbee repo init local-queenbee-repo
This command will create the folders and initialize an empty index.json file. Here
is what the folder should look like:
local-queenbee-repo
├── recipes
├── plugins
└── index.json
You will notice that the recipes and plugins folders are empty. This is where
we will save the packaged recipes and plugins. You will also notice that the index.json
file also doesn’t show much information yet:
{
"generated": "2020-05-19T07:32:02.599910",
"plugin": {},
"recipe": {}
}
Adding Packages¶
Let’s add some packages to our repository. To do so we will package the Plugin we created in the Plugin Guide (or any other plugin you might have created).
queenbee plugin package path/to/plugin --destination local-queenbee-repo/plugins
If you are using the Plugin we created in the Plugin Guide the
path/to/plugin is the energy-plus Plugin folder.
You should now see a new file has been added to your repository.
local-queenbee-repo
├── plugins
│ └── energy-plus-0.1.0.tgz # Name will change if you used another plugin
├── recipes
└── index.json
Repository Indexing¶
The repository index file (index.json) is the “brain” of the repository. This is where
package names, versions and other basic metadata is exposed for clients (ie: queenbee cli)
to search for packages and find their download paths.
The repository index is created by crawling the repository folders for packages and updating the package information in the index as needed. Let’s give it a try:
queenbee repo index local-queenbee-repo
If you open your index.json file you will see that is has changed to something like this
Note
Package name, version etc… will change according to the plugin packaged in the previous step.
{
"generated": "2020-05-19T07:46:49.803320",
"metadata": {
"name": "local-queenbee-repo",
"description": "A Queenbee package repository",
"source": null,
"plugin_count": 1,
"recipe_count": 0
},
"plugin": {
"energy-plus": [
{
"name": "energy-plus",
"tag": "0.1.0",
"app_version": "9.0.1",
"keywords": [
"energyplus"
],
"maintainers": null,
"home": "https://energyplus.net",
"sources": [
"https://github.com/nrel/energyplus"
],
"icon": "https://energyplus.net/sites/default/files/eplus_logo.png",
"deprecated": null,
"description": "A plugin to run EnergyPlus functions",
"url": "plugins/energy-plus-0.1.0.tgz",
"created": "2020-05-19T07:42:20.496003",
"digest": "bff20aae42e62aa084f0f08bf3833674e2bfccd0c6309f65848f089f402716f5",
"slug": "local-queenbee-repo/energy-plus",
"type": "plugin"
}
]
},
"recipe": {}
}
There are a few interesting things going on here:
The plugin package is nested under the
pluginkeyThe plugin name key points to a list of Plugin Versions. In this example the key is
energy-plus.The Plugin Version
urlkey points to the package file relative to theindex.jsonfileA
digestis generated for each Plugin Version This is used to handleversionoverwrites
Overwriting/Deleting Existing Package Versions¶
By default Queenbee makes it difficult to overwrite existing package versions. This is to avoid causing issues to any downstream Recipes using your package.
Warning
Don’t read any further unless you know what you are doing and accept the never ending slew of emails you will receive from angry people after overwriting or deleting a package version.
You can force the repository index process to overwrite any new packages added to the index:
queenbee repo index local-queenbee-repo --force
You can remove a package version from an index by deleting the package file from the folder and then running the following command:
queenbee repo index local-queenbee-repo --new