diff --git a/.forgejo/workflows/publish.yaml b/.forgejo/workflows/publish.yaml index 833a7d6..04ab097 100644 --- a/.forgejo/workflows/publish.yaml +++ b/.forgejo/workflows/publish.yaml @@ -27,32 +27,34 @@ jobs: - name: Setup additional tooling run: .forgejo/workflows/setup-tools.sh + - name: Run all assessments + run: just verify + - name: Build x64 glibc release binary - run: just full-build x86_64-unknown-linux-gnu + run: just release-build x86_64-unknown-linux-gnu - name: Build x64 musl release binary - run: just full-build x86_64-unknown-linux-musl + run: just release-build x86_64-unknown-linux-musl - name: Calculate SHA-256 hashes run: just shasum - name: Publish x64 glibc binary to git.jutty.dev registry run: | - version=$(./target/x86_64-unknown-linux-gnu/en --version) + version=$(./target/x86_64-unknown-linux-gnu/release/en --version) api_root=https://git.jutty.dev/api url=$api_root/packages/jutty/generic/en/$version/en-x64-linux-gnu curl -fsSL \ --user jutty:${{ secrets.GJD_REGISTRY_TOKEN }} \ - --upload-file target/x86_64-unknown-linux-gnu/en $url + --upload-file target/x86_64-unknown-linux-gnu/release/en $url - name: Publish x64 musl binary to git.jutty.dev registry run: | - version=$(./target/x86_64-unknown-linux-musl/en --version) + version=$(./target/x86_64-unknown-linux-musl/release/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 - + --upload-file target/x86_64-unknown-linux-musl/release/en $url diff --git a/.forgejo/workflows/check.yaml b/.forgejo/workflows/verify.yaml similarity index 90% rename from .forgejo/workflows/check.yaml rename to .forgejo/workflows/verify.yaml index eaa81a0..a8ebe71 100644 --- a/.forgejo/workflows/check.yaml +++ b/.forgejo/workflows/verify.yaml @@ -28,6 +28,8 @@ jobs: run: | rustup component add llvm-tools-preview rustup component add --toolchain nightly rustfmt clippy + rustup target add x86_64-unknown-linux-gnu + rustup target add x86_64-unknown-linux-musl - name: Setup additional tooling run: .forgejo/workflows/setup-tools.sh diff --git a/.justfile b/.justfile index 866cb13..62f4a15 100644 --- a/.justfile +++ b/.justfile @@ -260,7 +260,7 @@ verify: git status exit 1 fi - {{ just_cmd }} update version-assess \ + {{ just_cmd }} version-assess \ security-assess format-assess lint-assess check test cover-assess alias v := verify @@ -299,23 +299,31 @@ alias cl := clean # Build project with Cargo [group: 'build'] -build target=default_target: update +build target=default_target: cargo build --target {{ target }} --locked alias b := build # Release build [group: 'build'] -release-build target=default_target: update verify +release-build target=default_target: cargo build --target {{ target }} --locked --release alias rb := release-build -# Clean, run assessments, release build +# glibc release build [group: 'build'] -full-build target: clean (release-build target) +release-build-gnu: + cargo build --target {{ glibc_target }} --locked --release -alias fb := full-build +alias rbg := release-build-gnu + +# musl release build +[group: 'build'] +release-build-musl: + cargo build --target {{ musl_target }} --locked --release + +alias rbm := release-build-musl # Calculate SHA 256 hashes for release binaries [group: 'build'] @@ -337,7 +345,10 @@ alias ch := choose export CARGO_TERM_COLOR := 'always' -default_target := "x86_64-unknown-linux-gnu" +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:-}' 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"' diff --git a/tests/containers/Containerfile.alpine b/containers/Containerfile.alpine similarity index 100% rename from tests/containers/Containerfile.alpine rename to containers/Containerfile.alpine diff --git a/tests/containers/Containerfile.alpine-dev b/containers/Containerfile.alpine-dev similarity index 100% rename from tests/containers/Containerfile.alpine-dev rename to containers/Containerfile.alpine-dev diff --git a/tests/containers/Containerfile.debian b/containers/Containerfile.debian similarity index 100% rename from tests/containers/Containerfile.debian rename to containers/Containerfile.debian diff --git a/tests/containers/Containerfile.debian-dev b/containers/Containerfile.debian-dev similarity index 100% rename from tests/containers/Containerfile.debian-dev rename to containers/Containerfile.debian-dev diff --git a/tests/containers/README.md b/containers/README.md similarity index 100% rename from tests/containers/README.md rename to containers/README.md diff --git a/containers/build.sh b/containers/build.sh new file mode 100755 index 0000000..6e2338d --- /dev/null +++ b/containers/build.sh @@ -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 diff --git a/containers/run.sh b/containers/run.sh new file mode 100755 index 0000000..784ec44 --- /dev/null +++ b/containers/run.sh @@ -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"