name: ci-gates on: pull_request: {} push: branches: [main] workflow_dispatch: {} jobs: checks: runs-on: codeberg-medium-lazy steps: - name: Fetch source (no git required) env: GITHUB_TOKEN: ${{ github.token }} shell: bash run: | set -euo pipefail if [[ -z "${GITHUB_TOKEN:-}" ]]; then echo "error: missing github.token" exit 2 fi if ! command -v curl >/dev/null 2>&1; then echo "error: curl is required" exit 2 fi if ! command -v tar >/dev/null 2>&1; then echo "error: tar is required" exit 2 fi if [[ -z "${GITHUB_SHA:-}" ]]; then echo "error: missing GITHUB_SHA" exit 2 fi rm -rf .repo mkdir -p .repo curl -fsSL -H "Authorization: token ${GITHUB_TOKEN}" \ "https://codeberg.org/api/v1/repos/every-channel/every.channel/archive/${GITHUB_SHA}.tar.gz?rev=${GITHUB_SHA}" \ -o .repo/src.tgz tar -xzf .repo/src.tgz -C .repo --strip-components=1 rm -f .repo/src.tgz - name: Bootstrap Rust + web build tools shell: bash run: | set -euo pipefail cd .repo install -d -m 755 "$HOME/.local/bin" echo "PATH=$HOME/.local/bin:$PATH" >> "$GITHUB_ENV" export PATH="$HOME/.local/bin:$PATH" if ! command -v curl >/dev/null 2>&1; then echo "error: curl is required" exit 2 fi if ! command -v cargo >/dev/null 2>&1; then curl -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal . "$HOME/.cargo/env" elif [[ -f "$HOME/.cargo/env" ]]; then . "$HOME/.cargo/env" fi rustup target add wasm32-unknown-unknown if ! command -v trunk >/dev/null 2>&1; then trunk_version="0.21.14" arch="$(uname -m)" case "${arch}" in x86_64|amd64) trunk_target="x86_64-unknown-linux-gnu" ;; aarch64|arm64) trunk_target="aarch64-unknown-linux-gnu" ;; *) echo "error: unsupported runner arch for trunk prebuilt binary: ${arch}" exit 2 ;; esac curl -fsSL "https://github.com/trunk-rs/trunk/releases/download/v${trunk_version}/trunk-${trunk_target}.tar.gz" \ | tar -xz -C "$HOME/.local/bin" trunk fi cargo --version rustc --version trunk --version - name: ECP lint shell: bash run: | set -euo pipefail cd .repo bash ./scripts/ecp-lint.sh - name: Rust tests (core subset) shell: bash run: | set -euo pipefail cd .repo if [[ -f "$HOME/.cargo/env" ]]; then . "$HOME/.cargo/env" fi cargo test -p ec-core -p ec-crypto -p ec-moq -p ec-iroh -p ec-linux-iptv - name: Build web (apps/web) shell: bash run: | set -euo pipefail cd .repo if [[ -f "$HOME/.cargo/env" ]]; then . "$HOME/.cargo/env" fi cd apps/web env -u NO_COLOR trunk build --release --public-url /