From 9d7fab06d67dd49aeeea10ea0648c43aa93bd81c Mon Sep 17 00:00:00 2001 From: logikonline Date: Fri, 9 Jan 2026 16:47:54 -0500 Subject: [PATCH] ci: detect existing Go/Node.js/pnpm before setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skip setup actions when tools are already installed on the runner. This prevents forcing specific versions when the correct versions are already available. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .gitea/workflows/build.yml | 60 ++++++++++++++++++++++++++++++++++ .gitea/workflows/pr-checks.yml | 60 ++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index d8ad374fe6..e20413268d 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -27,18 +27,48 @@ jobs: with: fetch-depth: 0 + - name: Check for existing Go + id: go-check + run: | + if command -v go &> /dev/null; then + GO_VER=$(go version | grep -oP 'go\d+\.\d+' | head -1) + echo "version=$GO_VER" >> $GITHUB_OUTPUT + echo "Found Go: $(go version)" + fi + - name: Setup Go + if: steps.go-check.outputs.version == '' uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache: true + - name: Check for existing Node.js + id: node-check + run: | + if command -v node &> /dev/null; then + NODE_VER=$(node --version) + echo "version=$NODE_VER" >> $GITHUB_OUTPUT + echo "Found Node.js: $NODE_VER" + fi + - name: Setup Node.js + if: steps.node-check.outputs.version == '' uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} + - name: Check for existing pnpm + id: pnpm-check + run: | + if command -v pnpm &> /dev/null; then + PNPM_VER=$(pnpm --version) + echo "version=$PNPM_VER" >> $GITHUB_OUTPUT + echo "Found pnpm: $PNPM_VER" + fi + - name: Install pnpm + if: steps.pnpm-check.outputs.version == '' run: npm install -g pnpm - name: Install dependencies @@ -76,18 +106,48 @@ jobs: with: fetch-depth: 0 + - name: Check for existing Go + id: go-check + run: | + if command -v go &> /dev/null; then + GO_VER=$(go version | grep -oP 'go\d+\.\d+' | head -1) + echo "version=$GO_VER" >> $GITHUB_OUTPUT + echo "Found Go: $(go version)" + fi + - name: Setup Go + if: steps.go-check.outputs.version == '' uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache: true + - name: Check for existing Node.js + id: node-check + run: | + if command -v node &> /dev/null; then + NODE_VER=$(node --version) + echo "version=$NODE_VER" >> $GITHUB_OUTPUT + echo "Found Node.js: $NODE_VER" + fi + - name: Setup Node.js + if: steps.node-check.outputs.version == '' uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} + - name: Check for existing pnpm + id: pnpm-check + run: | + if command -v pnpm &> /dev/null; then + PNPM_VER=$(pnpm --version) + echo "version=$PNPM_VER" >> $GITHUB_OUTPUT + echo "Found pnpm: $PNPM_VER" + fi + - name: Install pnpm + if: steps.pnpm-check.outputs.version == '' run: npm install -g pnpm - name: Install dependencies diff --git a/.gitea/workflows/pr-checks.yml b/.gitea/workflows/pr-checks.yml index 955b250726..4b4838db17 100644 --- a/.gitea/workflows/pr-checks.yml +++ b/.gitea/workflows/pr-checks.yml @@ -20,18 +20,48 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Check for existing Go + id: go-check + run: | + if command -v go &> /dev/null; then + GO_VER=$(go version | grep -oP 'go\d+\.\d+' | head -1) + echo "version=$GO_VER" >> $GITHUB_OUTPUT + echo "Found Go: $(go version)" + fi + - name: Setup Go + if: steps.go-check.outputs.version == '' uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache: true + - name: Check for existing Node.js + id: node-check + run: | + if command -v node &> /dev/null; then + NODE_VER=$(node --version) + echo "version=$NODE_VER" >> $GITHUB_OUTPUT + echo "Found Node.js: $NODE_VER" + fi + - name: Setup Node.js + if: steps.node-check.outputs.version == '' uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} + - name: Check for existing pnpm + id: pnpm-check + run: | + if command -v pnpm &> /dev/null; then + PNPM_VER=$(pnpm --version) + echo "version=$PNPM_VER" >> $GITHUB_OUTPUT + echo "Found pnpm: $PNPM_VER" + fi + - name: Install pnpm + if: steps.pnpm-check.outputs.version == '' run: npm install -g pnpm - name: Install Go dependencies @@ -59,7 +89,17 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Check for existing Go + id: go-check + run: | + if command -v go &> /dev/null; then + GO_VER=$(go version | grep -oP 'go\d+\.\d+' | head -1) + echo "version=$GO_VER" >> $GITHUB_OUTPUT + echo "Found Go: $(go version)" + fi + - name: Setup Go + if: steps.go-check.outputs.version == '' uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} @@ -85,12 +125,32 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Check for existing Node.js + id: node-check + run: | + if command -v node &> /dev/null; then + NODE_VER=$(node --version) + echo "version=$NODE_VER" >> $GITHUB_OUTPUT + echo "Found Node.js: $NODE_VER" + fi + - name: Setup Node.js + if: steps.node-check.outputs.version == '' uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} + - name: Check for existing pnpm + id: pnpm-check + run: | + if command -v pnpm &> /dev/null; then + PNPM_VER=$(pnpm --version) + echo "version=$PNPM_VER" >> $GITHUB_OUTPUT + echo "Found pnpm: $PNPM_VER" + fi + - name: Install pnpm + if: steps.pnpm-check.outputs.version == '' run: npm install -g pnpm - name: Install dependencies