Skip to content

Commit

Permalink
Working legacy infra in docker & bootstrap
Browse files Browse the repository at this point in the history
  • Loading branch information
tarkah committed Nov 16, 2024
1 parent bdd8f27 commit b5fe364
Show file tree
Hide file tree
Showing 24 changed files with 279 additions and 31 deletions.
5 changes: 0 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
/target
crates/**/.privkey
*.db

test/**/state/cache
test/**/state/db
test/**/state/public
test/**/state/staging
15 changes: 13 additions & 2 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,22 @@ docker-build target:

[private]
docker-build-legacy target:
@docker build . -t serpentos/{{target}}-legacy --target {{target}} -f Dockerfile-legacy
@docker build . -t serpentos/{{target}}:legacy --target {{target}} -f test/legacy/Dockerfile

# Build docker containers
build: (docker-build-legacy "summit") (docker-build-legacy "avalanche") (docker-build-legacy "vessel")

# Bring up docker containers
up: build
docker compose up
docker compose up --wait --renew-anon-volumes

# Bring down docker containers
down:
docker compose down -v

# Bring up test environment and bootstrap
bootstrap: up
#!/usr/bin/env bash
./test/legacy/bootstrap.sh
docker compose logs -f
docker compose down -v
1 change: 0 additions & 1 deletion test/avalanche-legacy/state/.privkey

This file was deleted.

1 change: 0 additions & 1 deletion test/avalanche-legacy/state/.pubkey

This file was deleted.

1 change: 0 additions & 1 deletion test/avalanche-legacy/state/.seed

This file was deleted.

37 changes: 25 additions & 12 deletions test/docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -1,34 +1,42 @@
services:
# Legacy
summit:
image: serpentos/summit-legacy
image: serpentos/summit:legacy
ports:
- "5000:5000"
volumes:
- ./summit-legacy/state:/app/state
- ./summit-legacy/seed.json:/app/seed.json
user: ${MY_UID}:${MY_GID}
- summit-state:/app/state
- ./legacy/summit/.seed:/app/state/.seed
- ./legacy/summit/seed.json:/app/seed.json
depends_on:
vessel:
condition: service_started
vessel:
image: serpentos/vessel-legacy
image: serpentos/vessel:legacy
ports:
- "5001:5001"
volumes:
- ./vessel-legacy/state:/app/state
user: ${MY_UID}:${MY_GID}
- vessel-state:/app/state
- ./legacy/vessel/.seed:/app/state/.seed
- ./legacy/vessel/import:/import
depends_on:
caddy:
condition: service_started
avalanche:
image: serpentos/avalanche-legacy
image: serpentos/avalanche:legacy
ports:
- "5002:5002"
privileged: true
volumes:
- ./avalanche-legacy/state:/app/state
user: ${MY_UID}:${MY_GID}
- avalanche-state:/app/state
- ./legacy/avalanche/.seed:/app/state/.seed
caddy:
image: caddy:2
ports:
- "5003:80"
volumes:
- ./vessel-legacy/state/public:/static
- ./Caddyfile:/etc/caddy/Caddyfile
- vessel-state:/vessel
- ./legacy/Caddyfile:/etc/caddy/Caddyfile
# Rust
# vessel:
# image: serpentos/vessel
Expand All @@ -37,3 +45,8 @@ services:
# volumes:
# - ./vessel:/state
# user: ${MY_UID}:${MY_GID}

volumes:
summit-state:
vessel-state:
avalanche-state:
2 changes: 1 addition & 1 deletion test/Caddyfile → test/legacy/Caddyfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
caddy:80, localhost:80 {
root * /static/
root * /vessel/public
file_server browse
}
11 changes: 9 additions & 2 deletions Dockerfile-legacy → test/legacy/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ RUN chmod +x ~/dlang/install.sh
RUN ~/dlang/install.sh install ldc-1.32.2
RUN git clone https://github.com/serpent-os/libmoss.git
RUN git clone https://github.com/serpent-os/moss-service.git
RUN git clone https://github.com/serpent-os/summit.git
RUN git clone https://github.com/serpent-os/summit.git && cd summit && git checkout feat/build-remotes
RUN git clone https://github.com/serpent-os/vessel.git
RUN git clone https://github.com/serpent-os/avalanche.git
RUN --mount=type=cache,target=/root/.dub <<"EOT" /bin/bash
Expand All @@ -37,12 +37,17 @@ RUN --mount=type=cache,target=/root/.dub <<"EOT" /bin/bash
cd avalanche
dub build --parallel
EOT
# Install boulder
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
RUN git clone https://github.com/serpent-os/tools.git && cd tools && git checkout fix/run-in-docker
RUN ~/.cargo/bin/cargo install --path tools/boulder

FROM debian:bookworm-slim AS base
RUN apt update
RUN apt install -y \
git \
sudo \
iproute2 \
libcurl4 \
libdbus-1-3 \
liblmdb0 \
Expand Down Expand Up @@ -72,7 +77,9 @@ CMD ["/app/vessel", "-a", "0.0.0.0", "-p", "5001"]

FROM base as avalanche
COPY --from=builder /avalanche /app
RUN mkdir -p /app/public && chmod 777 /app/public
COPY --from=builder /root/.cargo/bin/boulder /usr/bin/boulder
COPY --from=builder /tools/boulder/data/macros /usr/share/boulder/macros
RUN mkdir -p /app/public
RUN mkdir -p /var/cache/boulder
VOLUME /app/state
EXPOSE 5002
Expand Down
1 change: 1 addition & 0 deletions test/legacy/avalanche/.seed
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Ȕ�۩���j4�?���C;G�|JUVF G-LO
68 changes: 68 additions & 0 deletions test/legacy/bootstrap.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#!/usr/bin/env bash

SERVICES=(summit vessel avalanche)

declare -A KEYS
KEYS['summit']=5zIaXc6Cn9qEAk2rNcyu-KDVtdFGcJtx9p2gZdDaxhU
KEYS['vessel']=qA2GABojHXC7nKo1zCOko2XjktavqGOGUN6Nq9jmUYQ
KEYS['avalanche']=C64M-DMlib7vl_DAFRPAkKzok6cJ2el1fMxd-LdlGZ0

declare -A PORTS
PORTS['summit']=5000
PORTS['vessel']=5001
PORTS['avalanche']=5002

USER=test
PASS=test1234

echo "Starting bootstrap"

sleep 2

cookies=$(mktemp)

for service in ${SERVICES[*]}
do
port=${PORTS[$service]}

case $service in
summit)
path="setup"
;;
*)
path="setup/apply"
;;
esac

echo "Creating $service account"
curl "http://127.0.0.1:$port/$path" \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-raw "instanceURI=http%3A%2F%2F$service%3A$port&description=&username=$USER&emailAddress=admin%40admin.com&password=$PASS&confirmPassword=$PASS"

echo "Logging into $service"
curl "http://127.0.0.1:$port/accounts/login" \
-b $cookies \
-c $cookies \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-raw "username=$USER&password=$PASS"
done

echo "Adding avalanche"
curl "http://127.0.0.1:${PORTS['summit']}/api/v1/builders/create" \
-b $cookies \
-H 'Content-Type: application/json' \
--data-raw '{"request":{"id":"avalanche","summary":"Builds stuff","instanceURI":"http://avalanche:'"${PORTS['avalanche']}"'","pubkey":"'"${KEYS['avalanche']}"'","adminName":"admin","adminEmail":"[email protected]"}}'
curl -b $cookies "http://127.0.0.1:${PORTS['avalanche']}/avl/accept/${KEYS['summit']}"

echo "Adding vessel"
curl "http://127.0.0.1:${PORTS['summit']}/api/v1/endpoints/create" \
-b $cookies \
-H 'Content-Type: application/json' \
--data-raw '{"request":{"id":"official","summary":"Indexes stuff","instanceURI":"http://vessel:'"${PORTS['vessel']}"'","pubkey":"'"${KEYS['vessel']}"'","adminName":"admin","adminEmail":"[email protected]"}}'
curl -b $cookies "http://127.0.0.1:${PORTS['vessel']}/vsl/accept/${KEYS['summit']}"

echo "Importing stones"
curl -b $cookies "http://127.0.0.1:${PORTS['vessel']}/vsl/import?importPath=%2Fimport"

echo "Restarting summit"
docker compose restart summit
1 change: 1 addition & 0 deletions test/legacy/summit/.seed
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2ުu���X� a��e����� �Li>�
10 changes: 8 additions & 2 deletions test/summit-legacy/seed.json → test/legacy/summit/seed.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,21 @@
"name": "test-x86_64",
"arch": "x86_64",
"indexURI": "http://caddy/volatile/x86_64/stone.index",
"remotes": []
"remotes": [
{
"name": "volatile",
"uri": "https://dev.serpentos.com/volatile/x86_64/stone.index",
"priority": 10
}
]
}
],
"repos":
[
{
"name": "recipes",
"summary": "Test recipes",
"uri": "https://github.com/tarkah/recipes.git"
"uri": "https://github.com/serpent-os/infra-test.git"
},
]
}
Expand Down
Binary file added test/legacy/vessel/.seed
Binary file not shown.
Binary file added test/legacy/vessel/import/stone.index
Binary file not shown.
Binary file added test/recipes/nano/manifest.x86_64.bin
Binary file not shown.
120 changes: 120 additions & 0 deletions test/recipes/nano/manifest.x86_64.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
/** Human readable report. This is not consumed by boulder */
{
"manifest-version": "0.2",
"packages": {
"nano": {
"build-depends": [
"pkgconfig(libmagic)",
"pkgconfig(ncursesw)",
"pkgconfig(zlib)"
],
"depends": [
"interpreter(/usr/lib/ld-linux-x86-64.so.2(x86_64))",
"soname(libc.so.6(x86_64))",
"soname(libmagic.so.1(x86_64))",
"soname(libncursesw.so.6(x86_64))"
],
"files": [
"/usr/bin/nano",
"/usr/bin/rnano",
"/usr/share/doc/nano/faq.html",
"/usr/share/doc/nano/nano.html",
"/usr/share/info/nano.info",
"/usr/share/locale/bg/LC_MESSAGES/nano.mo",
"/usr/share/locale/ca/LC_MESSAGES/nano.mo",
"/usr/share/locale/cs/LC_MESSAGES/nano.mo",
"/usr/share/locale/da/LC_MESSAGES/nano.mo",
"/usr/share/locale/de/LC_MESSAGES/nano.mo",
"/usr/share/locale/eo/LC_MESSAGES/nano.mo",
"/usr/share/locale/es/LC_MESSAGES/nano.mo",
"/usr/share/locale/eu/LC_MESSAGES/nano.mo",
"/usr/share/locale/fi/LC_MESSAGES/nano.mo",
"/usr/share/locale/fr/LC_MESSAGES/nano.mo",
"/usr/share/locale/ga/LC_MESSAGES/nano.mo",
"/usr/share/locale/gl/LC_MESSAGES/nano.mo",
"/usr/share/locale/hr/LC_MESSAGES/nano.mo",
"/usr/share/locale/hu/LC_MESSAGES/nano.mo",
"/usr/share/locale/id/LC_MESSAGES/nano.mo",
"/usr/share/locale/is/LC_MESSAGES/nano.mo",
"/usr/share/locale/it/LC_MESSAGES/nano.mo",
"/usr/share/locale/ja/LC_MESSAGES/nano.mo",
"/usr/share/locale/ka/LC_MESSAGES/nano.mo",
"/usr/share/locale/ko/LC_MESSAGES/nano.mo",
"/usr/share/locale/ms/LC_MESSAGES/nano.mo",
"/usr/share/locale/nb/LC_MESSAGES/nano.mo",
"/usr/share/locale/nl/LC_MESSAGES/nano.mo",
"/usr/share/locale/pl/LC_MESSAGES/nano.mo",
"/usr/share/locale/pt/LC_MESSAGES/nano.mo",
"/usr/share/locale/pt_BR/LC_MESSAGES/nano.mo",
"/usr/share/locale/ro/LC_MESSAGES/nano.mo",
"/usr/share/locale/ru/LC_MESSAGES/nano.mo",
"/usr/share/locale/sk/LC_MESSAGES/nano.mo",
"/usr/share/locale/sl/LC_MESSAGES/nano.mo",
"/usr/share/locale/sq/LC_MESSAGES/nano.mo",
"/usr/share/locale/sr/LC_MESSAGES/nano.mo",
"/usr/share/locale/sv/LC_MESSAGES/nano.mo",
"/usr/share/locale/tr/LC_MESSAGES/nano.mo",
"/usr/share/locale/uk/LC_MESSAGES/nano.mo",
"/usr/share/locale/vi/LC_MESSAGES/nano.mo",
"/usr/share/locale/zh_CN/LC_MESSAGES/nano.mo",
"/usr/share/locale/zh_TW/LC_MESSAGES/nano.mo",
"/usr/share/man/man1/nano.1",
"/usr/share/man/man1/rnano.1",
"/usr/share/man/man5/nanorc.5",
"/usr/share/nano/asm.nanorc",
"/usr/share/nano/autoconf.nanorc",
"/usr/share/nano/awk.nanorc",
"/usr/share/nano/c.nanorc",
"/usr/share/nano/changelog.nanorc",
"/usr/share/nano/cmake.nanorc",
"/usr/share/nano/css.nanorc",
"/usr/share/nano/default.nanorc",
"/usr/share/nano/elisp.nanorc",
"/usr/share/nano/email.nanorc",
"/usr/share/nano/extra/ada.nanorc",
"/usr/share/nano/extra/fortran.nanorc",
"/usr/share/nano/extra/haskell.nanorc",
"/usr/share/nano/extra/povray.nanorc",
"/usr/share/nano/extra/spec.nanorc",
"/usr/share/nano/go.nanorc",
"/usr/share/nano/groff.nanorc",
"/usr/share/nano/guile.nanorc",
"/usr/share/nano/html.nanorc",
"/usr/share/nano/java.nanorc",
"/usr/share/nano/javascript.nanorc",
"/usr/share/nano/json.nanorc",
"/usr/share/nano/lua.nanorc",
"/usr/share/nano/makefile.nanorc",
"/usr/share/nano/man.nanorc",
"/usr/share/nano/markdown.nanorc",
"/usr/share/nano/nanohelp.nanorc",
"/usr/share/nano/nanorc.nanorc",
"/usr/share/nano/nftables.nanorc",
"/usr/share/nano/objc.nanorc",
"/usr/share/nano/ocaml.nanorc",
"/usr/share/nano/patch.nanorc",
"/usr/share/nano/perl.nanorc",
"/usr/share/nano/php.nanorc",
"/usr/share/nano/po.nanorc",
"/usr/share/nano/python.nanorc",
"/usr/share/nano/ruby.nanorc",
"/usr/share/nano/rust.nanorc",
"/usr/share/nano/sh.nanorc",
"/usr/share/nano/sql.nanorc",
"/usr/share/nano/tcl.nanorc",
"/usr/share/nano/tex.nanorc",
"/usr/share/nano/texinfo.nanorc",
"/usr/share/nano/xml.nanorc",
"/usr/share/nano/yaml.nanorc"
],
"name": "nano",
"provides": [
"binary(nano)",
"binary(rnano)"
]
}
},
"source-name": "nano",
"source-release": "30",
"source-version": "8.2"
}
2 changes: 2 additions & 0 deletions test/recipes/nano/monitoring.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
releases:
id: 2046
Loading

0 comments on commit b5fe364

Please sign in to comment.