mirror of
https://github.com/Yuyi-Oak/BlueArchiveToolkit.git
synced 2026-07-22 03:56:44 +08:00
+85
-69
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user