diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index d19bc0c..12467db 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -12,12 +12,47 @@ on: jobs: build: + if: github.event_name == 'pull_request' || steps.version-check.outputs.version_changed == 'true' runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 + - name: Check if version changed + id: version-check + run: | + # Get current version + CURRENT_VERSION=$(node -p "require('./package.json').version") + echo "Current version: $CURRENT_VERSION" + + # Check if HEAD~1 exists (handle first commit) + if ! git rev-parse HEAD~1 &>/dev/null; then + echo "First commit detected, running workflow" + echo "version_changed=true" >> $GITHUB_OUTPUT + exit 0 + fi + + # Check if package.json exists in previous commit + if ! git show HEAD~1:package.json &>/dev/null; then + echo "package.json doesn't exist in previous commit" + echo "version_changed=true" >> $GITHUB_OUTPUT + exit 0 + fi + + # Extract previous version using grep/sed (safer than node for old file) + PREVIOUS_VERSION=$(git show HEAD~1:package.json | grep '"version"' | head -1 | sed -E 's/.*"version"\s*:\s*"([^"]+)".*/\1/') + echo "Previous version: $PREVIOUS_VERSION" + + # Compare versions + if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then + echo "Version changed: $PREVIOUS_VERSION -> $CURRENT_VERSION" + echo "version_changed=true" >> $GITHUB_OUTPUT + else + echo "Version unchanged: $CURRENT_VERSION" + echo "version_changed=false" >> $GITHUB_OUTPUT + fi + - name: Read package.json version id: package-version run: |