From d694100d6cc1c40325a5db4346c62514dc26d83f Mon Sep 17 00:00:00 2001 From: oak <1722157266@QQ.com> Date: Tue, 21 Jul 2026 22:52:39 +0800 Subject: [PATCH] fix(ci) --- .gitea/workflows/bat.yml | 154 +++++++++++++++++++++------------------ 1 file changed, 85 insertions(+), 69 deletions(-) diff --git a/.gitea/workflows/bat.yml b/.gitea/workflows/bat.yml index d250168..1a0cd35 100644 --- a/.gitea/workflows/bat.yml +++ b/.gitea/workflows/bat.yml @@ -1,7 +1,6 @@ # Gitea Actions workflow for the Rust workspace. -# This workflow is linux-runner friendly and does not touch real resource -# directories. It intentionally avoids external GitHub Actions so self-hosted -# runners do not need to clone action repositories through a network proxy. +# Self-hosted runner friendly. +# Does not use external GitHub Actions. name: bat-rust @@ -16,132 +15,149 @@ jobs: rust: name: Build and test Rust runs-on: linux + env: CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 BAT_SKIP_ENV_FILE: "1" + steps: - - name: Load Runner Environment - shell: bash - run: | - source /var/lib/act_runner/env.sh - rustc --version - cargo --version - - name: Checkout shell: bash run: | set -euo pipefail + : "${GITHUB_SERVER_URL:?GITHUB_SERVER_URL is required}" : "${GITHUB_REPOSITORY:?GITHUB_REPOSITORY is required}" : "${GITHUB_SHA:?GITHUB_SHA is required}" repo_url="${GITHUB_SERVER_URL%/}/${GITHUB_REPOSITORY}.git" + if [ -d .git ]; then - git remote set-url origin "${repo_url}" 2>/dev/null || git remote add origin "${repo_url}" + git remote set-url origin "${repo_url}" else git init . git remote add origin "${repo_url}" fi ref="${GITHUB_REF:-${GITHUB_SHA}}" - git fetch --no-tags --depth=1 origin "${ref}" || git fetch --no-tags --depth=1 origin "${GITHUB_SHA}" + + git fetch \ + --no-tags \ + --depth=1 \ + origin \ + "${ref}" \ + || git fetch \ + --no-tags \ + --depth=1 \ + origin \ + "${GITHUB_SHA}" + git checkout --force --detach FETCH_HEAD + git submodule update --init --recursive + - name: Show tool versions shell: bash run: | - source /var/lib/act_runner/env.sh set -euo pipefail + + source /var/lib/act_runner/env.sh + command -v git + command -v rustc + command -v cargo + rustc --version cargo --version rustfmt --version cargo clippy --version + - name: Check formatting shell: bash - run: source /var/lib/act_runner/env.sh && cargo fmt --all -- --check + run: | + source /var/lib/act_runner/env.sh + cargo fmt --all -- --check + - name: Check workspace shell: bash - run: source /var/lib/act_runner/env.sh && cargo check --workspace --locked + run: | + source /var/lib/act_runner/env.sh + cargo check --workspace --locked + - name: Build workspace shell: bash - run: source /var/lib/act_runner/env.sh && cargo build --workspace --release --locked + run: | + source /var/lib/act_runner/env.sh + + cargo build \ + --workspace \ + --release \ + --locked + - name: Run clippy shell: bash - run: source /var/lib/act_runner/env.sh && cargo clippy --workspace --all-targets --locked -- -D warnings + run: | + source /var/lib/act_runner/env.sh + + cargo clippy \ + --workspace \ + --all-targets \ + --locked \ + -- -D warnings + - name: Run tests shell: bash - run: source /var/lib/act_runner/env.sh && cargo test --workspace --locked + run: | + source /var/lib/act_runner/env.sh + + cargo test \ + --workspace \ + --locked + - name: Package binary shell: bash run: | set -euo pipefail - mkdir -p artifact - cp target/release/bat artifact/ - tar -czf bat-linux-x86_64.tar.gz -C artifact bat - sha256sum bat-linux-x86_64.tar.gz > bat-linux-x86_64.sha256 - - name: Upload artifact + mkdir -p artifact + + cp target/release/bat artifact/ + + tar \ + -czf \ + bat-linux-x86_64.tar.gz \ + -C artifact \ + bat + + sha256sum \ + bat-linux-x86_64.tar.gz \ + > bat-linux-x86_64.sha256 + + + - name: Prepare artifact shell: bash - env: - ARTIFACT_NAME: bat-linux-x86_64 - ARTIFACT_PATH: | - bat-linux-x86_64.tar.gz - bat-linux-x86_64.sha256 run: | set -euo pipefail - : "${ACTIONS_RUNTIME_URL:?missing ACTIONS_RUNTIME_URL}" - : "${ACTIONS_RUNTIME_TOKEN:?missing ACTIONS_RUNTIME_TOKEN}" + mkdir upload - ARTIFACT_ID=$(curl \ - -sS \ - -X POST \ - "${ACTIONS_RUNTIME_URL}/_apis/artifactcache/artifacts" \ - -H "Authorization: Bearer ${ACTIONS_RUNTIME_TOKEN}" \ - -H "Content-Type: application/json" \ - -d "{ - \"type\": \"actions_storage\", - \"name\": \"${ARTIFACT_NAME}\" - }" \ - | python3 -c ' -import sys,json -print(json.load(sys.stdin)["artifactId"]) -') + cp bat-linux-x86_64.tar.gz upload/ + cp bat-linux-x86_64.sha256 upload/ - echo "Artifact ID: ${ARTIFACT_ID}" + cd upload - ZIP_FILE="${ARTIFACT_NAME}.zip" + zip -q \ + ../bat-linux-x86_64.zip \ + * - zip -q "${ZIP_FILE}" ${ARTIFACT_PATH} + cd .. - SIZE=$(stat -c%s "${ZIP_FILE}") - - curl \ - -sS \ - -X PATCH \ - "${ACTIONS_RUNTIME_URL}/_apis/artifactcache/artifacts/${ARTIFACT_ID}" \ - -H "Authorization: Bearer ${ACTIONS_RUNTIME_TOKEN}" \ - -H "Content-Type: application/json" \ - --data-binary "@${ZIP_FILE}" - - - curl \ - -sS \ - -X POST \ - "${ACTIONS_RUNTIME_URL}/_apis/artifactcache/artifacts/${ARTIFACT_ID}" \ - -H "Authorization: Bearer ${ACTIONS_RUNTIME_TOKEN}" \ - -H "Content-Type: application/json" \ - -d "{ - \"size\": ${SIZE} - }" - - echo "Artifact uploaded: ${ARTIFACT_NAME}" + ls -lh bat-linux-x86_64.zip