diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml
new file mode 100644
index 0000000..10bc9e7
--- /dev/null
+++ b/.github/workflows/publish-release.yml
@@ -0,0 +1,137 @@
+name: Publish release
+
+on:
+ push:
+ tags:
+ - '*'
+
+jobs:
+
+ release:
+ name: Publish release
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout the source
+ uses: actions/checkout@v2
+
+ - name: Setup Python
+ uses: actions/setup-python@v3
+ with:
+ python-version: '3.10'
+ cache: 'pip'
+
+ - name: Install Python modules
+ run: pip install -r .github/workflows/requirements.txt
+
+ - name: Setup Go
+ uses: actions/setup-go@v2
+ with:
+ go-version: '1.17'
+
+ - name: Create release
+ shell: python
+ run: |
+ import os
+ import re
+ import requests
+ import shutil
+ import subprocess
+
+ # Get the context and secret data that we will need:
+ repository = "${{ github.repository }}"
+ reference = "${{ github.ref }}"
+ token = "${{ secrets.GITHUB_TOKEN }}"
+
+ # Calculate the version number:
+ version = re.sub(r"^refs/tags/v(.*)$", r"\1", reference)
+
+ # Make sure that the assets directory exists and is empty:
+ assets = "assets"
+ shutil.rmtree(assets, ignore_errors=True)
+ os.mkdir(assets)
+
+ def build(goos: str, goarch: str):
+ # Set the environment variables that tell the Go compiler which
+ # operating system and architecture to build for:
+ env = dict(os.environ)
+ env["GOOS"] = goos
+ env["GOARCH"] = goarch
+
+ # Build the binary:
+ args = ["make", "cmds"]
+ subprocess.run(check=True, env=env, args=args)
+
+ # Copy the generated binary to the assets directory:
+ binary = "ocm-support"
+ if goos == "windows":
+ binary += ".exe"
+ asset = os.path.join(assets, f"ocm-support-{goos}-{goarch}")
+ os.rename(binary, asset)
+
+ # Build for the supported operating systems and architectures:
+ build("darwin", "amd64")
+ build("linux", "amd64")
+ build("linux", "arm64")
+ build("linux", "ppc64le")
+ build("linux", "s390x")
+ build("windows", "amd64")
+
+ # Calculate the SHA256 digests:
+ for asset in os.listdir(assets):
+ digest = os.path.join(assets, f"{asset}.sha256")
+ with open(digest, "wb") as stream:
+ args = ["sha256sum", asset]
+ subprocess.run(check=True, cwd=assets, stdout=stream, args=args)
+
+ # Get the list of changes:
+ body = ""
+ with open("CHANGES.md", "r") as stream:
+ while True:
+ line = stream.readline()
+ if line == "" or line.startswith("## " + version):
+ break
+ while True:
+ line = stream.readline()
+ if line == "" or line.startswith("## "):
+ break
+ body += line
+
+ # Send the request to create the release:
+ response = requests.post(
+ headers={
+ "Authorization": f"Bearer {token}",
+ "Content-Type": "application/json",
+ "Accept": "application/json",
+ },
+ json={
+ "tag_name": f"v{version}",
+ "name": f"Release {version}",
+ "body": body,
+ },
+ url=(
+ "https://api.github.com"
+ f"/repos/{repository}/releases"
+ ),
+ )
+ response.raise_for_status()
+
+ # Get the release identifier:
+ release = response.json()["id"]
+
+ # Upload the assets:
+ for asset in os.listdir(assets):
+ file = os.path.join(assets, asset)
+ with open(file, "rb") as stream:
+ response = requests.post(
+ headers={
+ "Authorization": f"Bearer {token}",
+ "Content-Type": "application/octet-stream",
+ "Accept": "application/json",
+ },
+ data=stream,
+ url=(
+ "https://uploads.github.com"
+ f"/repos/{repository}/releases/{release}/assets?name={asset}"
+ ),
+ )
+ response.raise_for_status()
\ No newline at end of file
diff --git a/.github/workflows/requirements.txt b/.github/workflows/requirements.txt
new file mode 100644
index 0000000..cc2ed18
--- /dev/null
+++ b/.github/workflows/requirements.txt
@@ -0,0 +1,3 @@
+# This file lists the Python dependencies used by the GitHub actions.
+
+requests
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 13566b8..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 699742b..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/rosa-support.iml b/.idea/rosa-support.iml
deleted file mode 100644
index 5e764c4..0000000
--- a/.idea/rosa-support.iml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/CHANGES.md b/CHANGES.md
new file mode 100644
index 0000000..7c56492
--- /dev/null
+++ b/CHANGES.md
@@ -0,0 +1,5 @@
+## Changes
+This document describes the relevant changes between releases of the CLI
+
+## 0.0.1
+- Add version command
\ No newline at end of file
diff --git a/README.md b/README.md
index 281e5f5..74838bd 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,36 @@
# ROSA Support
`rosa-support` is a tool designed to be a plugin to the [ROSA CLI](https://github.com/openshift/rosa) by adding useful commands for engineers to support and develop the CLI
+## Build
+To build the binary run
+```
+$ make build
+```
+To install the binary run onto your `$GOPATH`
+```
+$ make install
+```
+
+## Releases a new CLI Version
+Releasing a new version requires submitting an MR for review/merge with an update to Version constant in [version.go](pkg/version/version.go).
+Additionally. update the [CHANGES.md](CHANGES.md) file to include the new version and describe all changes included
+
+Below is an example CHANGES.md update:
+```
+## 0.0.1
+
+- Added an awesome change
+```
+
+Submit an MR for review/merge with the CHANGES.md and version.go update.
+
+Finally, create and submit a new tag with the new version following the below example:
+
+```shell
+git checkout main
+git pull
+git tag -a -m 'Release 0.0.1' v0.0.1
+git push origin v0.0.1
+```
+
+Note that a repository administrator may need to push the tag to the repository due to access restrictions.
\ No newline at end of file
diff --git a/pkg/version/version.go b/pkg/version/version.go
index 2d56d86..b9067b4 100644
--- a/pkg/version/version.go
+++ b/pkg/version/version.go
@@ -1,5 +1,5 @@
package version
-const Version = "0.0.0"
+const Version = "0.0.1"
var VersionStamp string