Исправить передачу исходников в CI-контейнеры
Some checks failed
Проверка, сборка и развёртывание Magistr / Обязательные проверки (push) Successful in 1m23s
Проверка, сборка и развёртывание Magistr / Собрать backend image (push) Successful in 7m36s
Проверка, сборка и развёртывание Magistr / Собрать frontend image (push) Successful in 31s
Проверка, сборка и развёртывание Magistr / Проверить опубликованные образы (push) Failing after 4m56s
Проверка, сборка и развёртывание Magistr / Развернуть проверенные digests (push) Has been skipped

This commit is contained in:
Zuev
2026-07-29 23:39:35 +03:00
parent 6b4cd5b6c8
commit 7b5053f42a
7 changed files with 264 additions and 28 deletions

View File

@@ -4,6 +4,8 @@ set -euo pipefail
PROJECT_ROOT=${PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}
WORKFLOW="$PROJECT_ROOT/.gitea/workflows/docker-build.yaml"
CI_CONTAINER_SCRIPT="$PROJECT_ROOT/scripts/run-ci-container.sh"
CI_CONTAINER_TEST="$PROJECT_ROOT/scripts/test-run-ci-container.sh"
failures=0
@@ -60,7 +62,7 @@ require_count() {
local description=$3
local actual
actual=$(grep -Ec "$pattern" "$WORKFLOW" || true)
actual=$(grep -Ec -- "$pattern" "$WORKFLOW" || true)
if (( actual < expected )); then
fail "$description: ожидается не менее $expected, найдено $actual"
fi
@@ -68,6 +70,8 @@ require_count() {
check_workflow_gates() {
require_file "$WORKFLOW" || return
require_file "$CI_CONTAINER_SCRIPT" || return
require_file "$CI_CONTAINER_TEST" || return
require_count '^[[:space:]]+sbom:[[:space:]]+true$' 2 \
"для обоих образов должна публиковаться SBOM attestation"
@@ -81,6 +85,17 @@ check_workflow_gates() {
"образ Maven для CI должен быть закреплён digest"
require_count 'NODE_IMAGE: [^[:space:]]+@sha256:[0-9a-f]{64}$' 1 \
"образ Node.js для CI должен быть закреплён digest"
require_count 'bash scripts/run-ci-container\.sh' 4 \
"тесты и Trivy должны передавать файлы через Docker API"
require_count 'bash scripts/test-run-ci-container\.sh' 1 \
"workflow должен проверять helper запуска CI-контейнеров"
require_count '--env DOCKER_CONFIG=/workspace' 2 \
"оба Trivy scan должны получать registry credentials через Docker API"
if grep -Fq '${{ github.workspace }}' "$WORKFLOW" \
|| grep -Fq -- '-v "$HOME' "$WORKFLOW"; then
fail "нельзя использовать пути job-контейнера в bind mount внешнего Docker daemon"
fi
if ! grep -Eq '^ needs: \[build-and-push-backend, build-and-push-frontend, security-scan\]$' "$WORKFLOW"; then
fail "deploy обязан зависеть от успешного security-scan"