Исправить передачу исходников в 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
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:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user