feat/x86 (#5)

* refactored for x86_64 architecture

* removed check-web.sh

* Fix backup restore

Co-authored-by: islandbitcoin <dread@start9.com>
Co-authored-by: Chris Guida <chrisguida@gmail.com>
This commit is contained in:
Dread
2022-12-07 15:28:42 -05:00
committed by GitHub
parent 1d0626e288
commit d5167fd691
11 changed files with 46 additions and 45 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@ image.tar
scripts/*.js
.DS_Store
.vscode/
docker-images/

View File

@ -1,7 +1,7 @@
FROM recksato/robosats-client
RUN apt-get update && apt-get install wget curl sudo bash tini -y \
&& wget https://github.com/mikefarah/yq/releases/download/v4.25.1/yq_linux_arm.tar.gz -O - |\
tar xz && mv yq_linux_arm /usr/bin/yq
FROM recksato/robosats-client:v0.3.2-alpha
RUN apt-get update && apt-get install wget curl sudo bash tini -y
RUN wget https://github.com/mikefarah/yq/releases/download/v4.6.3/yq_linux_amd64.tar.gz -O - |\
tar xz && mv yq_linux_amd64 /usr/bin/yq
ENV APP_HOST robosats.embassy
ENV APP_PORT 12596
@ -9,6 +9,5 @@ ENV TOR_PROXY_IP embassy
ENV TOR_PROXY_PORT 9050
ADD ./docker_entrypoint.sh /usr/local/bin/docker_entrypoint.sh
ADD check-web.sh /usr/local/bin/check-web.sh
RUN chmod a+x /usr/local/bin/*.sh
RUN chmod a+x *.sh

View File

@ -10,10 +10,11 @@ all: verify
verify: $(PKG_ID).s9pk
embassy-sdk verify s9pk $(PKG_ID).s9pk
install: all
install: $(PKG_ID).s9pk
embassy-cli package install $(PKG_ID).s9pk
clean:
rm -rf docker-images
rm -f image.tar
rm -f $(PKG_ID).s9pk
rm -f scripts/*.js
@ -21,8 +22,14 @@ clean:
scripts/embassy.js: $(TS_FILES)
deno bundle scripts/embassy.ts scripts/embassy.js
image.tar: Dockerfile docker_entrypoint.sh
docker buildx build --tag start9/$(PKG_ID)/main:$(PKG_VERSION) --platform=linux/arm64 -o type=docker,dest=image.tar .
docker-images/x86_64.tar: Dockerfile docker_entrypoint.sh
mkdir -p docker-images
docker buildx build --tag start9/$(PKG_ID)/main:$(PKG_VERSION) --platform=linux/amd64 --build-arg PLATFORM=amd64 -o type=docker,dest=docker-images/x86_64.tar .
$(PKG_ID).s9pk: check-web.sh manifest.yaml instructions.md icon.png LICENSE scripts/embassy.js image.tar
embassy-sdk pack
docker-images/aarch64.tar: Dockerfile docker_entrypoint.sh
mkdir -p docker-images
docker buildx build --tag start9/$(PKG_ID)/main:$(PKG_VERSION) --platform=linux/arm64 --build-arg PLATFORM=arm64 -o type=docker,dest=docker-images/aarch64.tar .
$(PKG_ID).s9pk: manifest.yaml instructions.md LICENSE icon.png scripts/embassy.js docker-images/aarch64.tar docker-images/x86_64.tar
if ! [ -z "$(ARCH)" ]; then cp docker-images/$(ARCH).tar image.tar; fi
embassy-sdk pack

View File

@ -1,13 +0,0 @@
#!/bin/bash
DURATION=$(</dev/stdin)
if (($DURATION <= 5500)); then
exit 60
else
curl --silent --fail robosats.embassy:12596 &>/dev/null
WEB_RES=$?
if [ $WEB_RES != 0 ]; then
echo "RoboSats UI is unreachable, please wait" >&2
exit 61
fi
fi

View File

@ -3,4 +3,4 @@
set -ea
echo "Starting RoboSats..."
exec tini -s ./robosats-client.sh
exec tini ./robosats-client.sh

View File

@ -5,9 +5,11 @@ id: robosats
# A human readable service title
title: "RoboSats"
# Service version - accepts up to four digits, where the last confirms to revisions necessary for EmbassyOS - see documentation: https://github.com/Start9Labs/emver-rs. This value will change with each release of the service.
version: 0.1.0
version: 0.3.2
# Release notes for the update - can be a string, paragraph or URL
release-notes: "Initial Release for EmabssyOS"
release-notes: |
* Updated to run on x86_64 architecture
* Fix backup restore
# 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.
@ -35,33 +37,20 @@ assets:
icon: icon.png
# Default = INSTRUCTIONS.md
instructions: instructions.md
# Default = image.tar
docker-images: image.tar
# The main action for initializing the service. Currently, the only type of action available is docker.
main:
# Docker is currently the only action implementation
type: docker
# Identifier for the main image volume, which will be used when other actions need to mount to this volume.
image: main
# The executable binary for starting the initialization action. For docker actions, this is typically a "docker_entrypoint.sh" file. See the Dockerfile and the docker_entrypoint.sh in this project for additional details.
entrypoint: "docker_entrypoint.sh"
# Any arguments that should be passed into the entrypoint executable
entrypoint: docker_entrypoint.sh
args: []
# Specifies where to mount the data volume(s), if there are any. Mounts for pointer dependency volumes are also denoted here. These are necessary if data needs to be read from / written to these volumes.
mounts:
# Specifies where on the service's file system its persistence directory should be mounted prior to service startup
main: /root
# Health checks
health-checks:
main:
web-ui:
name: Web Interface
success-message: The RoboSats UI is ready to visit in a web browser
type: docker
image: main
entrypoint: check-web.sh
args: []
io-format: json
inject: true
type: script
config:
get:
type: script
@ -129,8 +118,8 @@ backup:
args:
- duplicity
- restore
- /root/data
- /mnt/backup
- /root/data
mounts:
BACKUP: "/mnt/backup"
main: "/root/data"

View File

@ -1 +1 @@
export * from "https://deno.land/x/embassyd_sdk@v0.3.1.1.2/mod.ts";
export * from "https://deno.land/x/embassyd_sdk@v0.3.3.0.2/mod.ts";

View File

@ -2,3 +2,5 @@ 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 { health } from "./procedures/healthChecks.ts";
// export { main } from "./procedures/main.ts";

View File

@ -0,0 +1,5 @@
import { types as T, healthUtil } from "../deps.ts";
export const health: T.ExpectedExports.health = {
"web-ui": healthUtil.checkWebUrl("http://robosats.embassy:12596")
}

View File

@ -0,0 +1,11 @@
// import { types as T, util } from "../deps.ts";
// export const main: T.ExpectedExports.main = async (effects) => {
// await effects.runDaemon(
// {
// command: "docker_entrypoint.sh",
// args: [],
// },
// ).wait();
// return util.ok;
// };

View File

@ -1,4 +1,4 @@
import { compat, types as T } from "../deps.ts";
export const migration: T.ExpectedExports.migration = compat.migrations
.fromMapping({}, "0.1.0" );
.fromMapping({}, "0.3.2" );