-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
OCM-7256 | chore: set up release action
1 parent
fd5a50b
commit c5ba3b4
Showing
9 changed files
with
179 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# This file lists the Python dependencies used by the GitHub actions. | ||
|
||
requests |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
## Changes | ||
This document describes the relevant changes between releases of the CLI | ||
|
||
## 0.0.1 | ||
- Add version command |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
package version | ||
|
||
const Version = "0.0.0" | ||
const Version = "0.0.1" | ||
|
||
var VersionStamp string |