Skip to content

Commit

Permalink
Revamped for StartOS 0.3.5.x
Browse files Browse the repository at this point in the history
- Changed version to 0.3.5
- Updated manifest with correct OS name, GPU acceleration support, and supported architectures.
- Added release and build GitHub workflows.
- Added log message to announce when the service is starting.
- Added new optimized and standardized icon.
- Added simple healthcheck.
- Updated to the latest stable Alpine-based Docker image.
- Updated license file with the current year.
- Code cleanup
  • Loading branch information
k0gen committed Jun 10, 2024
1 parent eda6f08 commit 9707188
Show file tree
Hide file tree
Showing 13 changed files with 155 additions and 26 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/buildService.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Build Service

on:
workflow_dispatch:
pull_request:
paths-ignore: ['*.md']
branches: ['main', 'master']
push:
paths-ignore: ['*.md']
branches: ['main', 'master']

jobs:
BuildPackage:
runs-on: ubuntu-latest
steps:
- name: Prepare StartOS SDK
uses: Start9Labs/sdk@v1

- name: Checkout services repository
uses: actions/checkout@v4

- name: Build the service package
id: build
run: |
git submodule update --init --recursive
start-sdk init
make
PACKAGE_ID=$(yq -oy ".id" manifest.*)
echo "package_id=$PACKAGE_ID" >> $GITHUB_ENV
printf "\n SHA256SUM: $(sha256sum ${PACKAGE_ID}.s9pk) \n"
shell: bash

- name: Upload .s9pk
uses: actions/upload-artifact@v4
with:
name: ${{ env.package_id }}.s9pk
path: ./${{ env.package_id }}.s9pk
72 changes: 72 additions & 0 deletions .github/workflows/releaseService.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Release Service

on:
push:
tags:
- 'v*.*'

jobs:
ReleasePackage:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Prepare StartOS SDK
uses: Start9Labs/sdk@v1

- name: Checkout services repository
uses: actions/checkout@v4

- name: Build the service package
run: |
git submodule update --init --recursive
start-sdk init
make
- name: Setting package ID and title from the manifest
id: package
run: |
echo "package_id=$(yq -oy ".id" manifest.*)" >> $GITHUB_ENV
echo "package_title=$(yq -oy ".title" manifest.*)" >> $GITHUB_ENV
shell: bash

- name: Generate sha256 checksum
run: |
PACKAGE_ID=${{ env.package_id }}
printf "\n SHA256SUM: $(sha256sum ${PACKAGE_ID}.s9pk) \n"
sha256sum ${PACKAGE_ID}.s9pk > ${PACKAGE_ID}.s9pk.sha256
shell: bash

- name: Generate changelog
run: |
PACKAGE_ID=${{ env.package_id }}
echo "## What's Changed" > change-log.txt
yq -oy '.release-notes' manifest.* >> change-log.txt
echo "## SHA256 Hash" >> change-log.txt
echo '```' >> change-log.txt
sha256sum ${PACKAGE_ID}.s9pk >> change-log.txt
echo '```' >> change-log.txt
shell: bash

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
name: ${{ env.package_title }} ${{ github.ref_name }}
prerelease: true
body_path: change-log.txt
files: |
./${{ env.package_id }}.s9pk
./${{ env.package_id }}.s9pk.sha256
- name: Publish to Registry
env:
S9USER: ${{ secrets.S9USER }}
S9PASS: ${{ secrets.S9PASS }}
S9REGISTRY: ${{ secrets.S9REGISTRY }}
run: |
if [[ -z "$S9USER" || -z "$S9PASS" || -z "$S9REGISTRY" ]]; then
echo "Publish skipped: missing registry credentials."
else
start-sdk publish https://$S9USER:$S9PASS@$S9REGISTRY ${{ env.package_id }}.s9pk
fi
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM alpine:3.17
FROM alpine:3.20

RUN apk update
RUN apk add --no-cache tini && \
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2022 Start9 Labs
Copyright (c) 2024 Start9 Labs

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
9 changes: 4 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,10 @@ verify: $(PKG_ID).s9pk
@echo " Filesize: $(shell du -h $(PKG_ID).s9pk) is ready"

install:
ifeq (,$(wildcard ~/.embassy/config.yaml))
@echo; echo "You must define \"host: http://start-server-name.local\" in ~/.embassy/config.yaml config file first"; echo
else
start-cli package install $(PKG_ID).s9pk
endif
@if [ ! -f ~/.embassy/config.yaml ]; then echo "You must define \"host: http://server-name.local\" in ~/.embassy/config.yaml config file first."; exit 1; fi
@echo "\nInstalling to $$(grep -v '^#' ~/.embassy/config.yaml | cut -d'/' -f3) ...\n"
@[ -f $(PKG_ID).s9pk ] || ( $(MAKE) && echo "\nInstalling to $$(grep -v '^#' ~/.embassy/config.yaml | cut -d'/' -f3) ...\n" )
@start-cli package install $(PKG_ID).s9pk

clean:
rm -rf docker-images
Expand Down
1 change: 1 addition & 0 deletions docker_entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#!/bin/sh

printf "\n\n [i] Starting Hello World ...\n\n"
exec tini hello-world
Binary file modified icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 29 additions & 8 deletions manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,23 @@ id: hello-world
# A human readable service title
title: "Hello World"
# Service version - accepts up to four digits, where the last confirms to revisions necessary for StartOS - see documentation: https://github.com/Start9Labs/emver-rs. This value will change with each release of the service.
version: 1.0.0.1
version: 0.3.5
# Release notes for the update - can be a string, paragraph or URL
release-notes: "Revamped for EmabssyOS 0.3.3"
release-notes: |
Revamped for StartOS 0.3.5.x
- Changed version to 0.3.5
- Updated manifest with correct OS name, GPU acceleration support, and supported architectures.
- Added release and build GitHub workflows.
- Added log message to announce when the service is starting.
- Added new optimized and standardized icon.
- Added simple healthcheck.
- Updated to the latest stable Alpine-based Docker image.
- Updated license file with the current year.
- Code cleanup
# The type of license for the project. Include the LICENSE in the root of the project directory. A license is required for a Start9 package.
license: mit
# The Start9 wrapper repository URL for the package. This repo contains the manifest file (this), any scripts necessary for configuration, backups, actions, or health checks (more below). This key must exist. But could be embedded into the source repository.
wrapper-repo: "https://github.com/Start9Labs/hello-world-wrapper"
license: MIT
# The repository URL for the package. This repo contains the manifest file (this), any scripts necessary for configuration, backups, actions, or health checks (more below). This key must exist. But could be embedded into the source repository.
wrapper-repo: "https://github.com/Start9Labs/hello-world-startos"
# The original project repository URL. There is no upstream repo in this example
upstream-repo: "https://github.com/Start9Labs/hello-world"
# URL to the support site / channel for the project. This key can be omitted if none exists, or it can link to the original project repository issues.
Expand All @@ -31,7 +41,7 @@ description:
assets:
# Default = LICENSE.md
license: LICENSE
# Default = icon.png (.svg allowed)
# Default = icon.png
icon: icon.png
# Default = INSTRUCTIONS.md
instructions: instructions.md
Expand Down Expand Up @@ -64,8 +74,19 @@ main:
mounts:
# Specifies where on the service's file system its persistence directory should be mounted prior to service startup
main: /root
# This is where health checks would be defined - see a more advanced example in https://github.com/Start9Labs/start-pages-wrapper
health-checks: {}
# Specifies whether GPU acceleration is enabled or not. False by default.
gpu-acceleration: false
# Defines what architectures will be supported by the service. This service supports x86_64 and aarch64 architectures.
hardware-requirements:
arch:
- x86_64
- aarch64
# This is where health checks would be defined - see a more advanced example in https://github.com/Start9Labs/start9-pages-startos
health-checks:
web-ui:
name: Web Interface
success-message: The Hello World is accessible
type: script
config: ~
properties: ~
# type: script
Expand Down
3 changes: 1 addition & 2 deletions scripts/deps.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.5/mod.ts";
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.5/util.ts";
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.11/mod.ts";
2 changes: 1 addition & 1 deletion scripts/embassy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ export { setConfig } from "./procedures/setConfig.ts";
export { getConfig } from "./procedures/getConfig.ts";
export { properties } from "./procedures/properties.ts";
export { migration } from "./procedures/migrations.ts";
export { main } from "./procedures/main.ts";
export { health } from "./procedures/healthChecks.ts";
7 changes: 7 additions & 0 deletions scripts/procedures/healthChecks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { types as T, healthUtil } from "../deps.ts";

export const health: T.ExpectedExports.health = {
async "web-ui"(effects, duration) {
return healthUtil.checkWebUrl("http://hello-world.embassy:80")(effects, duration).catch(healthUtil.catchError(effects))
},
};
7 changes: 0 additions & 7 deletions scripts/procedures/main.ts

This file was deleted.

2 changes: 1 addition & 1 deletion scripts/procedures/migrations.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { compat, types as T } from "../deps.ts";

export const migration: T.ExpectedExports.migration = compat.migrations
.fromMapping({}, "1.0.0.1" );
.fromMapping({}, "0.3.5" );

0 comments on commit 9707188

Please sign in to comment.