bc3a315790
Слияние в release.yaml через jobs+needs (последовательно): - release (контракты+контейнеры+webhook, как раньше) - publish-packages (если не -alpha) — был publish-packages.yaml - publish-docs (не -alpha + main) — был publish-docs.yaml - trigger-coopenomics-docs (не -alpha + main) — был build-contracts-docs.yaml Удалено: - build-contracts.yaml (ручной workflow_dispatch, сознательно вынесен из релиз-пути после инцидента 2026-05-13, пользователем подтверждено удаление) - publish-packages.yaml, publish-docs.yaml, build-contracts-docs.yaml (содержимое перенесено в release.yaml как зависимые jobs) Гейты унифицированы на !contains(github.ref, '-alpha') во всех publish-* и trigger-* (раньше publish-docs/build-contracts-docs резали ещё -beta/-rc/-test). IS_PROD в release-job остаётся на (alpha|beta|rc|test) намеренно — webhook продакшна и тэг :latest должны быть строже. Telegram-уведомления удалены из release.yaml и build-bootstrap.yaml. Полагаемся на дефолтные email-уведомления Gitea-инстанса (mailer ENABLED=true). Секреты TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID после merge можно удалить из репо. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
87 lines
3.2 KiB
YAML
87 lines
3.2 KiB
YAML
name: Build bootstrap container
|
||
|
||
# Сборка и публикация docker-образа `dicoop/bootcoop` — bootstrap-артефакта
|
||
# для развёртывания контрактов на удалённой ноде. Образ содержит CLI
|
||
# (`pnpm run boot:remote`) и `/contracts` от dicoop/contracts (multi-stage).
|
||
# Используется как one-shot job в стороннем docker-compose рядом с
|
||
# `dicoop/blockchain` — никакой mono-инфры (mongo/postgres/desktop) не нужно.
|
||
#
|
||
# Триггер — push в dev/testnet/main. Тег `dicoop/bootcoop` совпадает с
|
||
# веткой и подтягивает соответствующий тег `dicoop/contracts` (так
|
||
# контракты и bootstrap всегда синхронны).
|
||
#
|
||
# Зависимости в hub:
|
||
# dicoop/contracts:<branch> — пакет wasm/abi (build-contracts.yaml)
|
||
#
|
||
# Образ self-contained: собирает workspace из текущего checkout'а,
|
||
# не зависит от dicoop/mono-base (который тегается только релиз-тегами).
|
||
#
|
||
# Секреты:
|
||
# DOCKERHUB_USERNAME / DOCKERHUB_TOKEN
|
||
|
||
on:
|
||
push:
|
||
branches: [dev, testnet, main]
|
||
paths:
|
||
- 'components/boot/**'
|
||
- '.github/workflows/build-bootstrap.yaml'
|
||
workflow_dispatch:
|
||
|
||
jobs:
|
||
build:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: Checkout repository
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Determine docker tags
|
||
run: |
|
||
case "${{ github.ref_name }}" in
|
||
main)
|
||
echo "DOCKER_TAG=main" >> $GITHUB_ENV
|
||
echo "EXTRA_TAG=latest" >> $GITHUB_ENV
|
||
;;
|
||
testnet)
|
||
echo "DOCKER_TAG=testnet" >> $GITHUB_ENV
|
||
echo "EXTRA_TAG=" >> $GITHUB_ENV
|
||
;;
|
||
dev)
|
||
echo "DOCKER_TAG=dev" >> $GITHUB_ENV
|
||
echo "EXTRA_TAG=" >> $GITHUB_ENV
|
||
;;
|
||
*)
|
||
echo "Unsupported branch ${{ github.ref_name }}" >&2
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
- name: Login to DockerHub
|
||
uses: docker/login-action@v3
|
||
with:
|
||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||
|
||
- name: Pull contracts image
|
||
run: docker pull dicoop/contracts:${{ env.DOCKER_TAG }}
|
||
|
||
- name: Build and push image
|
||
run: |
|
||
IMAGE="dicoop/bootcoop"
|
||
docker build \
|
||
--build-arg CONTRACTS_TAG=${{ env.DOCKER_TAG }} \
|
||
--label "org.opencontainers.image.revision=${{ github.sha }}" \
|
||
--label "org.opencontainers.image.created=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
|
||
-f components/boot/Dockerfile \
|
||
-t "$IMAGE:${{ env.DOCKER_TAG }}" \
|
||
.
|
||
docker push "$IMAGE:${{ env.DOCKER_TAG }}"
|
||
|
||
if [ -n "${{ env.EXTRA_TAG }}" ]; then
|
||
docker tag "$IMAGE:${{ env.DOCKER_TAG }}" "$IMAGE:${{ env.EXTRA_TAG }}"
|
||
docker push "$IMAGE:${{ env.EXTRA_TAG }}"
|
||
fi
|
||
|
||
SHORT_SHA="${GITHUB_SHA::7}"
|
||
docker tag "$IMAGE:${{ env.DOCKER_TAG }}" "$IMAGE:${{ env.DOCKER_TAG }}-$SHORT_SHA"
|
||
docker push "$IMAGE:${{ env.DOCKER_TAG }}-$SHORT_SHA"
|