on: push: tags: - 'v*' workflow_dispatch: inputs: upload: description: 'Upload built assets to the git.jutty.dev package registry' type: boolean required: false default: true jobs: publish: runs-on: docker timeout-minutes: 20 container: image: rust:slim steps: - name: Install action dependencies run: apt-get install --no-install-recommends --update -y nodejs curl git - name: Checkout code uses: actions/checkout@v6 with: fetch-tags: true - name: Setup Rust toolchain 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 - name: Setup CI user run: | useradd -m ci && chown -R ci:ci . git config --global --add safe.directory "$PWD" - name: Run all assessments run: just ci verify - 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 - name: Publish x64 glibc binary to git.jutty.dev registry if: ${{ inputs.upload }} run: | 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/release/en $url - name: Publish x64 musl binary to git.jutty.dev registry if: ${{ inputs.upload }} run: | 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/release/en $url