chore: подставлять URL с тегом при билде
- Dockerfile принимает VERSION_TAG через build-arg - CI передаёт тег из job docs в job docker через outputs - Docker-образ тегируется версией - На сайте ссылка ведёт на ARCHITECTURE.md по тегу
This commit is contained in:
@@ -8,6 +8,8 @@ jobs:
|
|||||||
docs:
|
docs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
||||||
|
outputs:
|
||||||
|
new_tag: ${{ steps.tag.outputs.new_tag }}
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -31,14 +33,13 @@ jobs:
|
|||||||
git add generated/
|
git add generated/
|
||||||
if git diff --cached --quiet; then
|
if git diff --cached --quiet; then
|
||||||
echo "ARCHITECTURE.md не изменился, пропуск"
|
echo "ARCHITECTURE.md не изменился, пропуск"
|
||||||
echo "CHANGED=false" >> $GITHUB_ENV
|
|
||||||
else
|
else
|
||||||
git commit -m "docs: обновить ARCHITECTURE.md [skip ci]"
|
git commit -m "docs: обновить ARCHITECTURE.md [skip ci]"
|
||||||
git push origin main
|
git push origin main
|
||||||
echo "CHANGED=true" >> $GITHUB_ENV
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Автоматический тег (semver patch)
|
- name: Автоматический тег (semver patch)
|
||||||
|
id: tag
|
||||||
run: |
|
run: |
|
||||||
LAST_TAG=$(git tag -l 'v*' --sort=-v:refname | head -1)
|
LAST_TAG=$(git tag -l 'v*' --sort=-v:refname | head -1)
|
||||||
if [ -z "$LAST_TAG" ]; then
|
if [ -z "$LAST_TAG" ]; then
|
||||||
@@ -51,7 +52,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
git tag "$NEW_TAG"
|
git tag "$NEW_TAG"
|
||||||
git push origin "$NEW_TAG"
|
git push origin "$NEW_TAG"
|
||||||
echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV
|
echo "new_tag=$NEW_TAG" >> $GITHUB_OUTPUT
|
||||||
echo "Создан тег: $NEW_TAG"
|
echo "Создан тег: $NEW_TAG"
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
@@ -90,6 +91,7 @@ jobs:
|
|||||||
type=ref,event=branch
|
type=ref,event=branch
|
||||||
type=sha,prefix=
|
type=sha,prefix=
|
||||||
type=raw,value=latest,enable={{is_default_branch}}
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
|
type=raw,value=${{ needs.docs.outputs.new_tag }}
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -100,6 +102,8 @@ jobs:
|
|||||||
push: true
|
push: true
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
build-args: |
|
||||||
|
VERSION_TAG=${{ needs.docs.outputs.new_tag }}
|
||||||
provenance: false
|
provenance: false
|
||||||
sbom: false
|
sbom: false
|
||||||
|
|
||||||
@@ -148,7 +152,7 @@ jobs:
|
|||||||
docker rmi "$OLD_IMAGE_ID" 2>/dev/null || true
|
docker rmi "$OLD_IMAGE_ID" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Очистка: dangling-образы, неиспользуемые volumes, build-кеш
|
# Очистка
|
||||||
docker image prune -af --filter "label=org.opencontainers.image.title=$CONTAINER"
|
docker image prune -af --filter "label=org.opencontainers.image.title=$CONTAINER"
|
||||||
docker image prune -f
|
docker image prune -f
|
||||||
docker builder prune -f 2>/dev/null || true
|
docker builder prune -f 2>/dev/null || true
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
FROM node:24-alpine AS build
|
FROM node:24-alpine AS build
|
||||||
|
ARG VERSION_TAG=main
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
RUN npm ci
|
RUN npm ci
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN npm run build
|
RUN sed -i "s|raw/branch/main/generated|raw/tag/${VERSION_TAG}/generated|" docs/ru/index.md \
|
||||||
|
&& npm run build
|
||||||
|
|
||||||
FROM caddy:2-alpine
|
FROM caddy:2-alpine
|
||||||
COPY Caddyfile /etc/caddy/Caddyfile
|
COPY Caddyfile /etc/caddy/Caddyfile
|
||||||
|
|||||||
Reference in New Issue
Block a user