fix(ci): read Docker image version from release-please manifest instead of hardcoding (#2859)
The x-release-please-version markers in workflow files were stuck at v3.7.0 since commit5070bb34removed them from extra-files (GitHub Actions returns 403 when release-please tries to modify .github/workflows/ via GITHUB_TOKEN). Instead of hardcoding the version, read it from .release-please-manifest.json at build time. This file is always kept in sync by release-please and does not require workflow file write permissions. --- Маркеры x-release-please-version в workflow-файлах застряли на v3.7.0 после коммита5070bb34, который удалил их из extra-files (GitHub Actions возвращает 403 при попытке release-please изменить .github/workflows/ через GITHUB_TOKEN). Вместо хардкода версии теперь читаем её из .release-please-manifest.json во время сборки. Этот файл всегда синхронизируется release-please и не требует прав на запись в workflow-файлы.
This commit is contained in:
@@ -26,36 +26,38 @@ jobs:
|
|||||||
- name: Get version info
|
- name: Get version info
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
SHORT_SHA=$(git rev-parse --short HEAD)
|
||||||
|
echo "short_sha=$SHORT_SHA" >> $GITHUB_OUTPUT
|
||||||
echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
|
echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# Определяем версию и теги
|
# Read base version from release-please manifest (single source of truth)
|
||||||
|
BASE_VERSION=$(jq -r '."."' .release-please-manifest.json)
|
||||||
|
|
||||||
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||||
VERSION=${GITHUB_REF#refs/tags/}
|
VERSION=${GITHUB_REF#refs/tags/}
|
||||||
TAGS="fr1ngg/remnawave-bedolaga-telegram-bot:latest,fr1ngg/remnawave-bedolaga-telegram-bot:${VERSION}"
|
TAGS="fr1ngg/remnawave-bedolaga-telegram-bot:latest,fr1ngg/remnawave-bedolaga-telegram-bot:${VERSION}"
|
||||||
echo "🏷️ Собираем релизную версию: $VERSION"
|
echo "🏷️ Собираем релизную версию: $VERSION"
|
||||||
elif [[ $GITHUB_REF == refs/heads/main ]]; then
|
elif [[ $GITHUB_REF == refs/heads/main ]]; then
|
||||||
VERSION="v3.7.0-$(git rev-parse --short HEAD)" # x-release-please-version
|
VERSION="v${BASE_VERSION}-${SHORT_SHA}"
|
||||||
TAGS="fr1ngg/remnawave-bedolaga-telegram-bot:latest,fr1ngg/remnawave-bedolaga-telegram-bot:${VERSION}"
|
TAGS="fr1ngg/remnawave-bedolaga-telegram-bot:latest,fr1ngg/remnawave-bedolaga-telegram-bot:${VERSION}"
|
||||||
echo "🚀 Собираем версию из main: $VERSION"
|
echo "🚀 Собираем версию из main: $VERSION"
|
||||||
elif [[ $GITHUB_REF == refs/heads/dev ]]; then
|
elif [[ $GITHUB_REF == refs/heads/dev ]]; then
|
||||||
VERSION="v3.7.0-dev-$(git rev-parse --short HEAD)" # x-release-please-version
|
VERSION="v${BASE_VERSION}-dev-${SHORT_SHA}"
|
||||||
TAGS="fr1ngg/remnawave-bedolaga-telegram-bot:dev,fr1ngg/remnawave-bedolaga-telegram-bot:${VERSION}"
|
TAGS="fr1ngg/remnawave-bedolaga-telegram-bot:dev,fr1ngg/remnawave-bedolaga-telegram-bot:${VERSION}"
|
||||||
echo "🧪 Собираем dev версию: $VERSION"
|
echo "🧪 Собираем dev версию: $VERSION"
|
||||||
else
|
else
|
||||||
VERSION="v3.7.0-pr-$(git rev-parse --short HEAD)" # x-release-please-version
|
VERSION="v${BASE_VERSION}-pr-${SHORT_SHA}"
|
||||||
TAGS="fr1ngg/remnawave-bedolaga-telegram-bot:pr-$(git rev-parse --short HEAD)"
|
TAGS="fr1ngg/remnawave-bedolaga-telegram-bot:pr-${SHORT_SHA}"
|
||||||
echo "🔀 Собираем PR версию: $VERSION"
|
echo "🔀 Собираем PR версию: $VERSION"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
echo "tags=$TAGS" >> $GITHUB_OUTPUT
|
echo "tags=$TAGS" >> $GITHUB_OUTPUT
|
||||||
echo "should_push=${{ github.event_name != 'pull_request' }}" >> $GITHUB_OUTPUT
|
echo "should_push=${{ github.event_name != 'pull_request' }}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
echo "=== Информация о сборке ==="
|
echo "=== Информация о сборке ==="
|
||||||
echo "Версия: $VERSION"
|
echo "Версия: $VERSION"
|
||||||
echo "Коммит: $(git rev-parse --short HEAD)"
|
echo "Коммит: $SHORT_SHA"
|
||||||
echo "Теги: $TAGS"
|
echo "Теги: $TAGS"
|
||||||
echo "Push: ${{ github.event_name != 'pull_request' }}"
|
echo "Push: ${{ github.event_name != 'pull_request' }}"
|
||||||
echo "==========================="
|
echo "==========================="
|
||||||
|
|||||||
@@ -42,25 +42,28 @@ jobs:
|
|||||||
- name: Get version info
|
- name: Get version info
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
echo "short_sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
|
SHORT_SHA=$(git rev-parse --short HEAD)
|
||||||
|
echo "short_sha=$SHORT_SHA" >> $GITHUB_OUTPUT
|
||||||
echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
|
echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
# Read base version from release-please manifest (single source of truth)
|
||||||
|
BASE_VERSION=$(jq -r '."."' .release-please-manifest.json)
|
||||||
|
|
||||||
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||||
VERSION=${GITHUB_REF#refs/tags/}
|
VERSION=${GITHUB_REF#refs/tags/}
|
||||||
echo "🏷️ Building release version: $VERSION"
|
echo "🏷️ Building release version: $VERSION"
|
||||||
elif [[ $GITHUB_REF == refs/heads/main ]]; then
|
elif [[ $GITHUB_REF == refs/heads/main ]]; then
|
||||||
VERSION="v3.7.0-$(git rev-parse --short HEAD)" # x-release-please-version
|
VERSION="v${BASE_VERSION}-${SHORT_SHA}"
|
||||||
echo "🚀 Building main version: $VERSION"
|
echo "🚀 Building main version: $VERSION"
|
||||||
elif [[ $GITHUB_REF == refs/heads/dev ]]; then
|
elif [[ $GITHUB_REF == refs/heads/dev ]]; then
|
||||||
VERSION="v3.7.0-dev-$(git rev-parse --short HEAD)" # x-release-please-version
|
VERSION="v${BASE_VERSION}-dev-${SHORT_SHA}"
|
||||||
echo "🧪 Building dev version: $VERSION"
|
echo "🧪 Building dev version: $VERSION"
|
||||||
else
|
else
|
||||||
VERSION="v3.7.0-pr-$(git rev-parse --short HEAD)" # x-release-please-version
|
VERSION="v${BASE_VERSION}-pr-${SHORT_SHA}"
|
||||||
echo "🔀 Building PR version: $VERSION"
|
echo "🔀 Building PR version: $VERSION"
|
||||||
fi
|
fi
|
||||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
# Определяем, нужно ли пушить образ
|
|
||||||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
|
||||||
echo "should_push=false" >> $GITHUB_OUTPUT
|
echo "should_push=false" >> $GITHUB_OUTPUT
|
||||||
echo "⚠️ PR - only build without push"
|
echo "⚠️ PR - only build without push"
|
||||||
|
|||||||
Reference in New Issue
Block a user