rework the build system

- use rustls for reqwest, so we don't need to compile OpenSSL
- use better defaults for build arguments in Dockerfile
- add Continuous Integration workflow for master branch and it's pull requests
- add Release workflow for tags matching SemVer
- add release template for automatic release notes generation with GH CLI
- remove old and unused assets under .github
This commit is contained in:
Jonatan Czarniecki 2025-06-07 16:11:48 +02:00
parent 1c38c402b9
commit e21cbd1f63
No known key found for this signature in database
GPG key ID: 8B5FB251A803BDD0
13 changed files with 462 additions and 810 deletions

48
.github/actions/build/action.yml vendored Normal file
View file

@ -0,0 +1,48 @@
name: Build project
description: Builds the project for specified targets using cargo-zigbuild.
inputs:
targets:
description: A comma-separated list of Rust targets.
default: x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-pc-windows-gnu
lint:
description: A boolean indicating if linting (cargo-fmt, clippy) should be run
default: true
test:
description: A boolean indicating if tests should be run
default: true
runs:
using: composite
steps:
- name: Convert input targets to Bash array
shell: bash
run: |
readarray -d $'\0' -t targets < <(awk -F, '{ for (i = 1; i <= NF; i++) printf "--target\0%s\0", $i }' <<< "${{ inputs.targets }}")
declare -p targets > /tmp/targets.sh
- name: Check with cargo-fmt
if: inputs.lint == true
shell: sh
run: cargo fmt -v --all -- --check
- name: Run Clippy
if: inputs.lint == true
shell: bash
run: |
. /tmp/targets.sh
cargo-zigbuild clippy -v --all-targets "${targets[@]}" -- -D warnings
- name: Build with cargo-zigbuild
shell: bash
run: |
. /tmp/targets.sh
cargo-zigbuild build -v -r --bin sculptor "${targets[@]}"
- name: Test with cargo-zigbuild
shell: bash
if: inputs.test == true
run: |
. /tmp/targets.sh
cargo-zigbuild test -v -r "${targets[@]}"