This commit is contained in:
병준 박 2025-04-26 07:44:45 +00:00
parent bb3b7055bc
commit 7cb8f412a9

View File

@ -27,7 +27,7 @@ spec:
- name: coverage-html
description: Comma-separated paths to generated HTML coverage report directories
steps:
- name: install-dependencies
- name: analyze
image: rust:1.75-slim
workingDir: /workspace/base/$(params.context)/$(params.source)/$(params.workspaceName)
env:
@ -37,12 +37,18 @@ spec:
#!/bin/bash
set -e
echo "🚀 Starting Rust + Nx Analysis"
##############################
# Install system dependencies
##############################
apt-get update && apt-get install -y curl libssl-dev pkg-config build-essential jq
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs
##############################
# Install Rust tools
##############################
rustup component add clippy
# Install cargo-tarpaulin via prebuilt binary
@ -50,46 +56,46 @@ spec:
curl -L https://github.com/xd009642/tarpaulin/releases/latest/download/cargo-tarpaulin-x86_64-unknown-linux-gnu.tar.gz | tar xz -C ~/.cargo/bin
chmod +x ~/.cargo/bin/cargo-tarpaulin
# Install pnpm
corepack enable
corepack prepare pnpm@10.8.1 --activate
##############################
# Install pnpm globally
##############################
npm install -g pnpm@10.8.1
##############################
# Install Nx dependencies
##############################
pnpm install --frozen-lockfile
##############################
# Version checks
##############################
echo "✅ Version Info:"
rustc --version
cargo --version
node --version
npm --version
pnpm --version
- name: lint-test-coverage
image: rust:1.75-slim
workingDir: /workspace/base/$(params.context)/$(params.source)/$(params.workspaceName)
env:
- name: HOME
value: /workspace/base/$(params.context)/home
script: |
#!/bin/bash
set -e
##############################
# Lint and Test
##############################
export NX_SOCKET_DIR=/tmp/nx-socket
# Convert comma-separated targetProjects to space-separated for Bash
PROJECTS=$(echo "$(params.targetProjects)" | tr ',' ' ')
# Run lint and test in parallel using nx run-many
echo "🔍 Running lint for projects: $PROJECTS"
pnpm nx run-many --target=lint --projects="$(params.targetProjects)" --parallel=4
echo "🧪 Running tests for projects: $PROJECTS"
pnpm nx run-many --target=test --projects="$(params.targetProjects)" --parallel=4
# Initialize result variables
##############################
# Coverage
##############################
COVERAGE_DIRS=""
HTML_DIRS=""
# Run coverage for each project
for project in $PROJECTS; do
echo "📊 Generating coverage for project: $project"
PROJECT_PATH=$(pnpm nx show project "$project" --json | jq -r '.root')
@ -116,9 +122,14 @@ spec:
echo "⚠️ HTML coverage report not found for $project"
fi
# 돌아가기
cd /workspace/base/$(params.context)/$(params.source)/$(params.workspaceName)
done
# Write results to Tekton results
##############################
# Output to Tekton results
##############################
echo "$COVERAGE_DIRS" > /tekton/results/coverage-dir
echo "$HTML_DIRS" > /tekton/results/coverage-html
echo "🎉 Rust + Nx Analysis Task Completed!"