From 9400815a01eb377e70e24d17006a652b57dfc22a Mon Sep 17 00:00:00 2001 From: moilanik Date: Fri, 19 Jun 2026 07:43:02 +0300 Subject: [PATCH] check version script tiedostoon --- .gitea/workflows/check-version.yml | 57 +++++------------------------ scripts/check-version.sh | 59 ++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 48 deletions(-) create mode 100755 scripts/check-version.sh diff --git a/.gitea/workflows/check-version.yml b/.gitea/workflows/check-version.yml index f30c35f..f638b08 100644 --- a/.gitea/workflows/check-version.yml +++ b/.gitea/workflows/check-version.yml @@ -27,56 +27,17 @@ jobs: version: ${{ steps.set-outputs.outputs.version }} steps: - uses: actions/checkout@v4 + - uses: actions/checkout@v4 + with: + repository: niko/gitea-ci-library + path: .ci - name: Check existing artifact and calculate version - run: | - if [ -n "${VERSION_FILE}" ]; then - if echo "${VERSION_FILE}" | grep -q '\.json$'; then - RAW_VERSION=$(jq -r '.version' "${VERSION_FILE}") - elif echo "${VERSION_FILE}" | grep -q -E '\.ya?ml$'; then - RAW_VERSION=$(grep -oP '^version:\s*\K\S+' "${VERSION_FILE}") - else - RAW_VERSION=$(cat "${VERSION_FILE}" | tr -d '[:space:]') - fi - elif [ -f VERSION ]; then - RAW_VERSION=$(cat VERSION | tr -d '[:space:]') - elif [ -f package.json ]; then - RAW_VERSION=$(jq -r '.version' package.json) - elif [ -f pom.xml ]; then - RAW_VERSION=$(grep -oP '\K[^<]+' pom.xml | head -1) - else - echo "ERROR: No VERSION file, package.json, Chart.yaml or pom.xml found" >&2 - exit 1 - fi - BASE_VERSION=$(echo "$RAW_VERSION" | cut -d'.' -f1-2) - echo "gitea-ci-library - Tunnistettu Major.Minor versio: $BASE_VERSION" - - TAGS_JSON=$(curl -s -f -H "Authorization: token $GITEA_TOKEN" \ - "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/tags") - - TAG=$(echo "$TAGS_JSON" | jq -r --arg prefix "${GIT_TAG_PREFIX}" ' - if type == "array" then - .[] | select(.commit.sha == "${{ github.sha }}" and (.name | startswith($prefix))) | .name - else empty end' | head -1) - - mkdir -p /tmp/build-ctx - - if [ -n "$TAG" ]; then - echo "ARTIFACT_EXISTS=true" > /tmp/build-ctx/build.env - echo "NEXT_VERSION=$TAG" >> /tmp/build-ctx/build.env - echo "gitea-ci-library - Artefakti löytyi jo tagilla: $TAG." - else - echo "ARTIFACT_EXISTS=false" > /tmp/build-ctx/build.env - - HIGHEST_PATCH=$(echo "$TAGS_JSON" | jq -r --arg prefix "${GIT_TAG_PREFIX}" --arg bv "${GIT_TAG_PREFIX}${BASE_VERSION}." ' - if type == "array" then .[] | .name | select(startswith($bv)) | sub($bv; "") | tonumber else empty end' | sort -rn | head -1) - - if [ -z "$HIGHEST_PATCH" ]; then NEXT_PATCH=0; else NEXT_PATCH=$((HIGHEST_PATCH + 1)); fi - FULL_VERSION="${BASE_VERSION}.${NEXT_PATCH}" - - echo "NEXT_VERSION=$FULL_VERSION" >> /tmp/build-ctx/build.env - echo "gitea-ci-library - Uusi vapaa versio: $FULL_VERSION" - fi + env: + SERVER_URL: ${{ gitea.server_url }} + REPO: ${{ github.repository }} + SHA: ${{ github.sha }} + run: bash .ci/scripts/check-version.sh - name: Set job outputs id: set-outputs diff --git a/scripts/check-version.sh b/scripts/check-version.sh new file mode 100755 index 0000000..ba05d8d --- /dev/null +++ b/scripts/check-version.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +set -e + +RAW_VERSION="" + +if [ -n "${VERSION_FILE}" ] && [ -f "${VERSION_FILE}" ]; then + if echo "${VERSION_FILE}" | grep -q -E '\.json$'; then + RAW_VERSION=$(jq -r '.version' "${VERSION_FILE}") + elif echo "${VERSION_FILE}" | grep -q -E '\.(ya?ml)$'; then + RAW_VERSION=$(grep -oP '^version:\s*\K\S+' "${VERSION_FILE}") + else + RAW_VERSION=$(cat "${VERSION_FILE}" | tr -d '[:space:]') + fi +fi + +if [ -z "${RAW_VERSION}" ]; then + if [ -f VERSION ]; then + RAW_VERSION=$(cat VERSION | tr -d '[:space:]') + elif [ -f package.json ]; then + RAW_VERSION=$(jq -r '.version' package.json) + elif [ -f pom.xml ]; then + RAW_VERSION=$(grep -oP '\K[^<]+' pom.xml | head -1) + elif [ -f Chart.yaml ]; then + RAW_VERSION=$(grep -oP '^version:\s*\K\S+' Chart.yaml) + else + echo "ERROR: No version source found (VERSION_FILE, VERSION, package.json, pom.xml, Chart.yaml)" >&2 + exit 1 + fi +fi + +BASE_VERSION=$(echo "$RAW_VERSION" | cut -d'.' -f1-2) +echo "gitea-ci-library - Tunnistettu Major.Minor versio: $BASE_VERSION" + +TAGS_JSON=$(curl -s -f -H "Authorization: token ${GITEA_TOKEN}" \ + "${SERVER_URL}/api/v1/repos/${REPO}/tags") + +TAG=$(echo "$TAGS_JSON" | jq -r --arg prefix "${GIT_TAG_PREFIX}" --arg sha "${SHA}" ' + if type == "array" then + .[] | select(.commit.sha == $sha and (.name | startswith($prefix))) | .name + else empty end' | head -1) + +mkdir -p /tmp/build-ctx + +if [ -n "$TAG" ]; then + echo "ARTIFACT_EXISTS=true" > /tmp/build-ctx/build.env + echo "NEXT_VERSION=$TAG" >> /tmp/build-ctx/build.env + echo "gitea-ci-library - Artefakti löytyi jo tagilla: $TAG." +else + echo "ARTIFACT_EXISTS=false" > /tmp/build-ctx/build.env + + HIGHEST_PATCH=$(echo "$TAGS_JSON" | jq -r --arg prefix "${GIT_TAG_PREFIX}" --arg bv "${GIT_TAG_PREFIX}${BASE_VERSION}." ' + if type == "array" then .[] | .name | select(startswith($bv)) | sub($bv; "") | tonumber else empty end' | sort -rn | head -1) + + if [ -z "$HIGHEST_PATCH" ]; then NEXT_PATCH=0; else NEXT_PATCH=$((HIGHEST_PATCH + 1)); fi + FULL_VERSION="${BASE_VERSION}.${NEXT_PATCH}" + + echo "NEXT_VERSION=$FULL_VERSION" >> /tmp/build-ctx/build.env + echo "gitea-ci-library - Uusi vapaa versio: $FULL_VERSION" +fi