Skip to content

Commit b5b0a10

Browse files
committed
Add release notes, version, and release creation script
1 parent b8cfc3f commit b5b0a10

File tree

3 files changed

+203
-0
lines changed

3 files changed

+203
-0
lines changed

ReleaseNotes.md

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
![Logo](https://raw.githubusercontent.com/wiki/doctorfree/kasm-registry/logo.png)
2+
3+
# Record Technologies Workspace Registry
4+
5+
The repository at https://github.com/doctorfree/kasm-registry is home to the Record Technologies Kasm Workspaces registry. A front end website is automatically generated for the registry looking similar to:
6+
7+
![Registry](https://raw.githubusercontent.com/wiki/doctorfree/kasm-registry/registry.png)
8+
9+
## Table of Contents
10+
11+
- [Record Technologies Workspaces](#record-technologies-workspaces)
12+
- [Workspace features](#workspace-features)
13+
- [Workspace deployment](#workspace-deployment)
14+
- [Docker deployment](#docker-deployment)
15+
- [Repository template](#repository-template)
16+
- [Schema](#schema)
17+
- [Discovery](#discovery)
18+
19+
## Record Technologies Workspaces
20+
21+
This registry primarily serves as the distribution mechanism for Kasm workspaces generated from [Doctorfree Open Source Projects](https://github.com/doctorfree).
22+
23+
Currently available workspaces in this registry include:
24+
25+
* `AppImage`: Customized Ubuntu 22.04 desktop with [AppImage Launcher](https://github.com/TheAssassin/AppImageLauncher)
26+
* [Asciiville](https://github.com/doctorfree/Asciiville#readme): Ascii art, utilities, games, more
27+
* `CloudStorage`: Utilizes [rclone](https://github.com/rclone/rclone), a command-line program to manage files on cloud storage
28+
* `Deluxe`: Asciiville, Neovim, Spiderfoot, Wing and more all in one workspace
29+
* [LM Studio](https://github.com/lmstudio-ai): Customized Ubuntu 22.04 desktop with `LM Studio`
30+
* [Neovim](https://github.com/doctorfree/nvim-lazyman#readme): Neovim, neovide, lazyman, much more
31+
* [Open-Source Intelligence](https://en.wikipedia.org/wiki/Open-source_intelligence): Reconnaissance tool, forensics, link analyzer, ...
32+
* [Project Jupyter](https://en.wikipedia.org/wiki/Project_Jupyter): Jupyter notebooks
33+
* [Spiderfoot](https://github.com/smicallef/spiderfoot): A reconnaissance tool that automatically queries public data sources to gather intelligence
34+
* [Ubuntu desktops](https://en.wikipedia.org/wiki/Ubuntu): Customized Ubuntu Focal and Jammy desktops
35+
* [Wing cloud programming language](https://www.winglang.io): Wing programming language, examples, and editors
36+
* `WingPlus`: The Wing workspace with the Neovim hyper-extensible text editor
37+
* More to come ...
38+
39+
## Workspace features
40+
41+
Record Technologies workspaces all include customized desktops with several productivity and development packages preconfigured for ease of use. In addition to the rich feature set provided by the base images upon which these workspaces are built, Record Technologies workspaces provide advanced configuration and integration of many additional components including:
42+
43+
* [Bat](https://github.com/sharkdp/bat): A `cat(1)` clone with wings
44+
* [Btop](https://github.com/aristocratos/btop): Resource monitor
45+
* [Cheat Sheets](https://github.com/doctorfree/cheat-sheets-plus): Cheat sheets Obsidian vault
46+
- Integrated with `ranger` and `glow` for terminal/console viewing
47+
* [Fzf](https://github.com/junegunn/fzf): A command-line fuzzy finder
48+
* [Glow](https://github.com/charmbracelet/glow): Markdown previewer
49+
* [Go](https://go.dev): A modern version of the Go programming language is installed
50+
* [Kitty](https://sw.kovidgoyal.net/kitty): The fast, feature-rich, GPU based terminal emulator
51+
* [Lsd](https://github.com/lsd-rs/lsd): The next generation `ls` command
52+
* [Neofetch](https://github.com/dylanaraps/neofetch): System information tool
53+
* [Node](https://nodejs.org): Node version 20
54+
* [Nvm](https://github.com/nvm-sh/nvm): Node version manager
55+
* [Nerd Fonts](https://www.nerdfonts.com): Large number of extra glyphs and icons
56+
* [Obsidian](https://obsidian.md): Markdown based personal knowledge base and note-taking application
57+
* [Ranger](https://github.com/ranger/ranger): A Vim-inspired file manager for the terminal
58+
- Extensive configuration for the Ranger file executor/opener `rifle`
59+
- Integration with `Glow`, `AppImage`, `Wing`, and more for execution/opening of selections
60+
* [Vim](https://www.vim.org): Preconfigured `vim` text editor with plugins, keymaps, theme, etc
61+
* [Xfce4](https://www.xfce.org): Customized Xfce desktop environment
62+
* [Zoxide](https://github.com/ajeetdsouza/zoxide): Smart `cd` command
63+
* [Zsh](https://www.zsh.org): Features from `bash`, `ksh`, `tcsh`, and more
64+
* [Oh My Zsh](https://ohmyz.sh): Framework for managing the `zsh` configuration
65+
* [Powerlevel10k](https://github.com/romkatv/powerlevel10k): Theme for `zsh`
66+
67+
The Wing workspaces include Visual Studio Code with the Wing extension; the Neovim workspaces include Neovide and Lazyman - the Neovim Configuration Manager, several workspaces include the [Ranger File Manager](https://github.com/ranger/ranger) with customized launch configurations and the [Btop++ system monitor](https://github.com/aristocratos/btop) with customized configuration and theme.
68+
69+
In most Record Technologies workspaces the [Kitty terminal emulator](https://sw.kovidgoyal.net/kitty) is installed along with the `JetBrains Mono` [Nerd Font](https://github.com/ryanoasis/nerd-fonts). Kitty is preconfigured and Kitty sessions are tailored for each use case.
70+
71+
Where appropriate Record Technologies workspaces perform a `postinstall` which installs and configures many additional utilities in the Kasm user's home directory. When used in conjunction with Kasm persistent profiles this feature enables a rich persistent user runtime environment across workspace sessions.
72+
73+
## Workspace deployment
74+
75+
All Record Technologies workspaces are designed for deployment using [Kasm Workspaces](https://kasmweb.com). The Docker images can be deployed directly with Docker but they will not provide persistent user profiles and thus will not be as usable, requiring initialization on every start. The use of Kasm Workspaces for deployment is strongly encouraged.
76+
77+
To deploy using Kasm Workspaces, add the Record Technologies registry to your Kasm deployment by visiting the [Record Technologies workspace registry](https://doctorfree.github.io/kasm-registry) and clicking on the `Workspace Registry Link`. This will copy `https://doctorfree.github.io/kasm-registry/` to your clipboard.
78+
79+
Once you have the Workspace Registry Link for Record Technologies, in Kasm as an administrator click on `Workspaces` -> `Registry` -> `Registries`. Click `Add new` and enter the Record Technologies registry link copied above. Click `ADD REGISTRY` and you should now see the Record Technologies workspaces in Kasm.
80+
81+
After adding a 3rd party workspace registry to Kasm, clicking on `Workspaces` -> `Registry` should now show the new registry under `Available Workspaces`. Clicking on `Record Technologies` will filter the available workspaces and display only those workspaces available from Record Technologies.
82+
83+
Click on any of the Record Technologies workspaces and then click `Install` to install that workspace. Once installed go to `Workspaces` -> `Workspaces` and click the right arrow button on the right hand side of the newly installed workspace then click the pencil icon to edit the workspace. Adjust any of the settings you like but most importantly scroll down to the `Persistent Profile Path` and add a path to save changes users make to their workspace. I use the following setting for a persistent profile:
84+
85+
```
86+
/u/kasm_profiles/{image_id}/{user_id}
87+
```
88+
89+
Where the `/u/kasm_profiles/` folder has been created on the Kasm host. Note that this folder can grow quite large depending on how many workspaces are configured to use it and how many users are active. I place this folder along with any volume mappings and the Docker library folders on a large second drive using XFS.
90+
91+
## Docker deployment
92+
93+
These images are designed for use as streaming containers in `Kasm`. However, they can be run using `docker`. For example, to run the `Wing` workspace:
94+
95+
```bash
96+
# Pull the image from Docker Hub
97+
docker pull doctorwhen/kasm:wing
98+
```
99+
100+
```bash
101+
myip=`ip addr show | awk '$1 == "inet" && $3 == "brd" { sub (/\/.*/,""); print $2 }' | head -1`
102+
103+
printf "\n\nThe Wing container is now accessible via a browser : https://${myip}:6901"
104+
printf "\n\tUser : kasm_user"
105+
printf "\n\tPassword: password\n"
106+
107+
docker run --rm -it --shm-size=512m -p 3000:3000 -p 6901:6901 -e VNC_PW=password doctorwhen/kasm:wing
108+
```
109+
110+
**NOTE:** Several of the Record Technologies Kasm workspaces perform extensive post-installation configuration. For this reason they are not well suited for use with `docker run ...` since each time they are run in this manner they will perform the time consuming initialization. The recommended use for these images is as Kasm Workspaces streamed containers with a persistent profile configured.
111+
112+
## Repository template
113+
114+
This repository was created from the registry repository template at [https://github.com/kasmtech/workspaces_registry_template](https://github.com/kasmtech/workspaces_registry_template).
115+
116+
## Schema
117+
118+
**Version** 1.0
119+
120+
| Property | Required | Type | Description |
121+
| --------------------- | -------- | --- | --- |
122+
| friendly_name | True | String | The name to show |
123+
| name | True | String | The docker image to use |
124+
| description | True | String | A short description of the workspace |
125+
| image_src | True | String | The name of the workspace icon used |
126+
| architecture | True | Array | Json list containing either "amd64", "arm64" or both |
127+
| compatability | True | Array | A list of Kasm versions the workspace should work with |
128+
| uncompressed_size_mb | True | Integer | Integer of the approximate size of the workspace when it's uncompressed in MB. This doesn't take into account layers. For example if an image is 2.46GB you would enter 2460 |
129+
| categories | False | Array | Json list containing the categories the workspace belongs too. This should be limited to a max of 3. |
130+
| docker_registry | False | String | Which docker registry to use |
131+
| run_config | False | Object | Any additional parameters to add to the run config |
132+
| exec_config | False | Object | Any additional parameters to add to the exec config |
133+
| notes | False | String | Notes about running the workspace, such as if it requires libseccomp. |
134+
| cores | False | Integer | Specify the amount of cores to use for this workspace |
135+
| memory | False | Integer | Specify the amount of memory to use for this workspace |
136+
| gpu_count | False | Integer | Specify the amount of GPUs to use for this workspace |
137+
| cpu_allocation_method | False | String | What CPU allocation method to use for this workspace. Can be either "Inherit", "Quotas" or "Shares" |
138+
139+
Head to the **Actions** tab to check your progress and once `Page build and deployment` is complete, your site should be ready.
140+
141+
### New schema version
142+
143+
When a new schema version comes out, you just need to create a new branch that refrlects the new schema, for example `1.1` and make it the default branch.
144+
145+
In the new branch, make any updates that are needed, when the changes are committed a new version will be built.
146+
147+
Kasm Workspaces will automatically pull the version of the schema that it understands.
148+
149+
 
150+
151+
## Discovery
152+
153+
The tag below will hopefully make it easier for people to find your Workspace Registry by clicking on [this github search link](https://github.com/search?q=in%3Areadme+sort%3Aupdated+-user%3Akasmtech+%22KASM-REGISTRY-DISCOVERY-IDENTIFIER%22&type=repositories). If you want to make it harder to find your repository for some reason, just remove this section.
154+
155+
If you are the one doing the searching, click on the **site** folder, then click on **next.config.js** and the url can be found under **env.listUrl**
156+
157+
![search-600](https://user-images.githubusercontent.com/5698566/230614274-2976b4d7-074f-4e6d-9e58-e4d2512a3d2a.gif)

VERSION

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
VERSION=1.0.0
2+
RELEASE=1
3+
PACKAGE=1

mkrelease

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#!/bin/bash
2+
#
3+
SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
4+
SCRIPT_PATH="$(realpath $SCRIPT_PATH)"
5+
cd "${SCRIPT_PATH}"
6+
7+
[ -f VERSION ] || {
8+
echo "VERSION file missing. Exiting."
9+
exit 1
10+
}
11+
. ./VERSION
12+
13+
usage() {
14+
printf "\nUsage: mkrelease [-d] [-u]"
15+
printf "\nWhere:"
16+
printf "\n\t-d indicates create draft release"
17+
printf "\n\t-u displays this usage message and exits\n"
18+
exit 1
19+
}
20+
21+
DRAFT=
22+
while getopts "du" flag; do
23+
case $flag in
24+
d)
25+
DRAFT="--draft"
26+
;;
27+
u)
28+
usage
29+
;;
30+
esac
31+
done
32+
shift $(( OPTIND - 1 ))
33+
34+
ANNO="Kasm Registry Version ${VERSION}r${RELEASE}"
35+
gittag v${VERSION}r${RELEASE} ${ANNO}
36+
37+
echo "Creating release for version ${VERSION} release ${RELEASE}"
38+
39+
gh release create v${VERSION}r${RELEASE} ${DRAFT} \
40+
--title "${ANNO}" \
41+
--notes-file ReleaseNotes.md
42+
43+
git fetch --tags origin

0 commit comments

Comments
 (0)