Add dev containers, musl build
This commit is contained in:
parent
23cd51fc95
commit
1748dd2fb6
11 changed files with 115 additions and 49 deletions
|
|
@ -22,21 +22,40 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
rustup component add llvm-tools-preview
|
rustup component add llvm-tools-preview
|
||||||
rustup component add --toolchain nightly rustfmt clippy
|
rustup component add --toolchain nightly rustfmt clippy
|
||||||
|
rustup target add x86_64-unknown-linux-musl
|
||||||
|
|
||||||
- name: Setup additional tooling
|
- name: Setup additional tooling
|
||||||
run: .forgejo/workflows/setup-tools.sh
|
run: .forgejo/workflows/setup-tools.sh
|
||||||
|
|
||||||
- name: Build release binary
|
- name: Run all assessments
|
||||||
run: just full-build
|
run: just verify
|
||||||
- name: Calculate SHA-256 hash
|
|
||||||
|
- name: Build x64 glibc release binary
|
||||||
|
run: just release-build x86_64-unknown-linux-gnu
|
||||||
|
|
||||||
|
- name: Build x64 musl release binary
|
||||||
|
run: just release-build x86_64-unknown-linux-musl
|
||||||
|
|
||||||
|
- name: Calculate SHA-256 hashes
|
||||||
run: just shasum
|
run: just shasum
|
||||||
|
|
||||||
- name: Publish to git.jutty.dev package registry
|
- name: Publish x64 glibc binary to git.jutty.dev registry
|
||||||
run: |
|
run: |
|
||||||
version=$(./target/release/en --version)
|
version=$(./target/x86_64-unknown-linux-gnu/en --version)
|
||||||
api_root=https://git.jutty.dev/api
|
api_root=https://git.jutty.dev/api
|
||||||
url=$api_root/packages/jutty/generic/en/$version/en-x86_64-linux-gnu
|
url=$api_root/packages/jutty/generic/en/$version/en-x64-linux-gnu
|
||||||
|
|
||||||
curl -fsSL \
|
curl -fsSL \
|
||||||
--user jutty:${{ secrets.GJD_REGISTRY_TOKEN }} \
|
--user jutty:${{ secrets.GJD_REGISTRY_TOKEN }} \
|
||||||
--upload-file target/release/en $url
|
--upload-file target/x86_64-unknown-linux-gnu/en $url
|
||||||
|
|
||||||
|
- name: Publish x64 musl binary to git.jutty.dev registry
|
||||||
|
run: |
|
||||||
|
version=$(./target/x86_64-unknown-linux-musl/en --version)
|
||||||
|
api_root=https://git.jutty.dev/api
|
||||||
|
url=$api_root/packages/jutty/generic/en/$version/en-x64-linux-musl
|
||||||
|
|
||||||
|
curl -fsSL \
|
||||||
|
--user jutty:${{ secrets.GJD_REGISTRY_TOKEN }} \
|
||||||
|
--upload-file target/x86_64-unknown-linux-musl/en $url
|
||||||
|
|
||||||
|
|
|
||||||
49
.justfile
49
.justfile
|
|
@ -260,7 +260,7 @@ verify:
|
||||||
git status
|
git status
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
{{ just_cmd }} update version-assess \
|
{{ just_cmd }} version-assess \
|
||||||
security-assess format-assess lint-assess check test cover-assess
|
security-assess format-assess lint-assess check test cover-assess
|
||||||
|
|
||||||
alias v := verify
|
alias v := verify
|
||||||
|
|
@ -299,42 +299,38 @@ alias cl := clean
|
||||||
|
|
||||||
# Build project with Cargo
|
# Build project with Cargo
|
||||||
[group: 'build']
|
[group: 'build']
|
||||||
build: update
|
build target=default_target:
|
||||||
cargo build --locked
|
cargo build --target {{ target }} --locked
|
||||||
|
|
||||||
alias b := build
|
alias b := build
|
||||||
|
|
||||||
# Release build
|
# Release build
|
||||||
[group: 'build']
|
[group: 'build']
|
||||||
release-build: update verify
|
release-build target=default_target:
|
||||||
cargo build --locked --release
|
cargo build --target {{ target }} --locked --release
|
||||||
|
|
||||||
alias rb := release-build
|
alias rb := release-build
|
||||||
|
|
||||||
# Clean, run assessments, release build
|
# glibc release build
|
||||||
[group: 'build']
|
[group: 'build']
|
||||||
full-build: clean release-build
|
release-build-gnu:
|
||||||
|
cargo build --target {{ glibc_target }} --locked --release
|
||||||
|
|
||||||
alias fb := full-build
|
alias rbg := release-build-gnu
|
||||||
|
|
||||||
# Upload release build to git.jutty.dev package registry
|
# musl release build
|
||||||
[script, group: 'build']
|
[group: 'build']
|
||||||
upload: full-build && shasum
|
release-build-musl:
|
||||||
version=$(./target/release/en --version)
|
cargo build --target {{ musl_target }} --locked --release
|
||||||
api_root=https://git.jutty.dev/api/
|
|
||||||
url=$api_root/packages/jutty/generic/en/$version/en-x86_64-linux-gnu
|
|
||||||
file=target/release/en
|
|
||||||
|
|
||||||
curl -fsSL \
|
alias rbm := release-build-musl
|
||||||
--user jutty:$(secret-tool lookup Title gjd-registry-token) \
|
|
||||||
--upload-file $file $url
|
|
||||||
|
|
||||||
alias u := upload
|
# Calculate SHA 256 hashes for release binaries
|
||||||
|
|
||||||
# Print sha256sum for CI logging
|
|
||||||
[group: 'build']
|
[group: 'build']
|
||||||
shasum:
|
shasum:
|
||||||
sha256sum target/release/en
|
find target -type d -name 'release' \
|
||||||
|
-exec find '{}' -maxdepth 1 -type f -name en -executable ';' \
|
||||||
|
| xargs sha256sum
|
||||||
|
|
||||||
## META
|
## META
|
||||||
|
|
||||||
|
|
@ -342,8 +338,17 @@ shasum:
|
||||||
default:
|
default:
|
||||||
@just --list --unsorted --justfile {{justfile()}}
|
@just --list --unsorted --justfile {{justfile()}}
|
||||||
|
|
||||||
|
choose:
|
||||||
|
@just --choose
|
||||||
|
|
||||||
|
alias ch := choose
|
||||||
|
|
||||||
export CARGO_TERM_COLOR := 'always'
|
export CARGO_TERM_COLOR := 'always'
|
||||||
|
|
||||||
|
musl_target := "x86_64-unknown-linux-musl"
|
||||||
|
glibc_target := "x86_64-unknown-linux-gnu"
|
||||||
|
default_target := musl_target
|
||||||
|
|
||||||
debug_vars := 'DEBUG=${DEBUG:-} DEBUG_FILTER=${DEBUG_FILTER:-} RUST_BACKTRACE=${RUST_BACKTRACE:-} RUSTFLAGS=${RUSTFLAGS:-}'
|
debug_vars := 'DEBUG=${DEBUG:-} DEBUG_FILTER=${DEBUG_FILTER:-} RUST_BACKTRACE=${RUST_BACKTRACE:-} RUSTFLAGS=${RUSTFLAGS:-}'
|
||||||
watch_cmd := "watchexec -qc -r -e rs,toml,html --color always -- "
|
watch_cmd := "watchexec -qc -r -e rs,toml,html --color always -- "
|
||||||
cover_cmd := 'cargo llvm-cov --color always --ignore-filename-regex "main\.rs|log\.rs"'
|
cover_cmd := 'cargo llvm-cov --color always --ignore-filename-regex "main\.rs|log\.rs"'
|
||||||
|
|
|
||||||
13
containers/Containerfile.alpine-dev
Normal file
13
containers/Containerfile.alpine-dev
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
FROM docker.io/library/rust:alpine
|
||||||
|
MAINTAINER Juno Takano juno@jutty.dev
|
||||||
|
ENV DEBUG=debug
|
||||||
|
|
||||||
|
# Install
|
||||||
|
COPY en /usr/local/bin/en
|
||||||
|
|
||||||
|
# Describe
|
||||||
|
RUN sha256sum $(which en)
|
||||||
|
|
||||||
|
# Launch
|
||||||
|
WORKDIR /root
|
||||||
|
CMD ["en", "-p", "80"]
|
||||||
13
containers/Containerfile.debian-dev
Normal file
13
containers/Containerfile.debian-dev
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
FROM debian:stable-slim
|
||||||
|
MAINTAINER Juno Takano juno@jutty.dev
|
||||||
|
ENV DEBUG=debug
|
||||||
|
|
||||||
|
# Install
|
||||||
|
COPY en /usr/local/bin/en
|
||||||
|
|
||||||
|
# Describe
|
||||||
|
RUN sha256sum $(which en)
|
||||||
|
|
||||||
|
# Launch
|
||||||
|
WORKDIR /root
|
||||||
|
CMD ["en", "-p", "80"]
|
||||||
23
containers/build.sh
Executable file
23
containers/build.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
suffix=$(printf '%s' "$1" | sed 's/.*\.//')
|
||||||
|
tag="en:$suffix"
|
||||||
|
|
||||||
|
if podman container exists "$tag"; then
|
||||||
|
podman stop --time 3 "$tag"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$suffix" = 'debian-dev' ]; then
|
||||||
|
cp -v ../target/x86_64-unknown-linux-gnu/release/en en
|
||||||
|
elif [ "$suffix" = 'alpine-dev' ]; then
|
||||||
|
cp -v ../target/x86_64-unknown-linux-musl/release/en en
|
||||||
|
fi
|
||||||
|
|
||||||
|
podman build \
|
||||||
|
--tag "$tag" \
|
||||||
|
-f "Containerfile.$suffix"
|
||||||
|
|
||||||
|
if [ -f en ]; then
|
||||||
|
rm -v en
|
||||||
|
fi
|
||||||
12
containers/run.sh
Executable file
12
containers/run.sh
Executable file
|
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
suffix=$(printf '%s' "$1" | sed 's/.*\.//')
|
||||||
|
name="en-$suffix"
|
||||||
|
tag="en:$suffix"
|
||||||
|
|
||||||
|
podman run \
|
||||||
|
--replace \
|
||||||
|
--name "$name" \
|
||||||
|
--publish 3008:80 \
|
||||||
|
"$tag"
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
distro="$1"
|
|
||||||
|
|
||||||
podman stop --time 3 "en-$distro"
|
|
||||||
podman build \
|
|
||||||
--tag "en-$distro" \
|
|
||||||
-f "Containerfile.$distro"
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
set -eu
|
|
||||||
distro="$1"
|
|
||||||
|
|
||||||
podman run \
|
|
||||||
--replace \
|
|
||||||
--name "en-$distro" \
|
|
||||||
--publish 3008:80 \
|
|
||||||
"en-$distro"
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue