Compare commits
5 Commits
v2.2.13-rc
...
v2.2.13-rc
| Author | SHA1 | Date | |
|---|---|---|---|
| 241c97e346 | |||
| 3334e327bf | |||
| 145bff90b6 | |||
| d2bf48fc60 | |||
| 5e7ee84dc9 |
@@ -17,9 +17,6 @@ env:
|
||||
PUPPETEER_SKIP_DOWNLOAD: "true"
|
||||
COREPACK_NPM_REGISTRY: "https://registry.npmmirror.com"
|
||||
|
||||
concurrency:
|
||||
group: deploy-pipeline
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
@@ -146,6 +143,13 @@ jobs:
|
||||
echo "short_sha=$SHORT_SHA"
|
||||
} >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: 🚦 Priority Gate
|
||||
env:
|
||||
GITEA_PAT: ${{ secrets.GITEA_PAT }}
|
||||
CURRENT_RUN_ID: ${{ github.run_id }}
|
||||
CURRENT_TARGET: ${{ steps.determine.outputs.target }}
|
||||
run: bash scripts/priority-gate.sh
|
||||
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
# JOB 2: QA (Lint, Typecheck, Test)
|
||||
# ──────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
25
INSTRUCTIONS.md
Normal file
25
INSTRUCTIONS.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Antigravity Instructions & Project Rules
|
||||
|
||||
This document contains critical project-specific rules for the e-tib.com codebase. Antigravity must read and follow these rules at all times.
|
||||
|
||||
## 1. Bilingual Site (German & English) - STRICT
|
||||
- **Always update BOTH languages!** The website is bilingual.
|
||||
- When changing content, adding pages, or updating text, you MUST always check and update both `content/de/` and `content/en/` simultaneously.
|
||||
- When adding new components with text, ensure they are built to support both languages or update the respective translation files/mechanisms. Do NOT just hardcode German text and forget the English version.
|
||||
|
||||
## 2. No Dummy Data / No Hallucinations
|
||||
- Do not invent or hallucinate placeholder text (e.g., "Nachweis liegt vor" for certificates that don't exist).
|
||||
- Only implement what is explicitly requested or what matches provided assets/data.
|
||||
- If data is missing, ask the user instead of inventing placeholders.
|
||||
|
||||
## 3. Git Workflow & RC Tagging
|
||||
- When instructed to "commit and tag" (or similar), always follow this process:
|
||||
1. Add and commit the changes with conventional commits (`feat:`, `fix:`, `chore:`, etc.).
|
||||
2. Check the latest tag using `git describe --tags --abbrev=0`.
|
||||
3. Increment the RC (Release Candidate) number of the current version (e.g., if latest is `v2.2.13-rc19`, the new tag is `v2.2.13-rc20`).
|
||||
4. Create the tag: `git tag vX.Y.Z-rcN`.
|
||||
5. Push the commit and the tag: `git push origin main --tags`.
|
||||
|
||||
## 4. Work Exclusively on the Correct Branch
|
||||
- Follow the `USER_GLOBAL` directive: If on `main`, create a branch unless explicitly told to work on `main`.
|
||||
- For e-tib.com, often small fixes are done on `main` if the user commands it ("auf main arbeiten"), but always verify context.
|
||||
@@ -8,20 +8,33 @@ export function EUFundingBadge() {
|
||||
<motion.div
|
||||
initial={{ opacity: 0 }}
|
||||
animate={{ opacity: 1 }}
|
||||
transition={{ duration: 2, ease: [0.16, 1, 0.3, 1] }}
|
||||
className="absolute top-0 right-0 w-[350px] md:w-[550px] h-[350px] md:h-[550px] z-0 pointer-events-none select-none"
|
||||
transition={{ duration: 1.5, ease: [0.16, 1, 0.3, 1] }}
|
||||
className="absolute top-0 right-0 w-[220px] md:w-[320px] h-[220px] md:h-[320px] z-[40] pointer-events-none select-none overflow-hidden"
|
||||
style={{
|
||||
maskImage: 'radial-gradient(ellipse at top right, black 10%, transparent 70%)',
|
||||
WebkitMaskImage: 'radial-gradient(ellipse at top right, black 10%, transparent 70%)',
|
||||
maskImage: 'linear-gradient(225deg, black 15%, transparent 65%)',
|
||||
WebkitMaskImage: 'linear-gradient(225deg, black 15%, transparent 65%)',
|
||||
}}
|
||||
>
|
||||
<Image
|
||||
src="/assets/eu-flag-perspective.png"
|
||||
alt="European Union Background"
|
||||
fill
|
||||
className="object-cover object-top opacity-50 mix-blend-screen"
|
||||
priority
|
||||
/>
|
||||
{/* Background Flag with Scaling to fill the corner */}
|
||||
<div className="absolute inset-0 w-full h-full scale-[1.3] origin-top-right opacity-90">
|
||||
<Image
|
||||
src="/assets/eu-flag-perspective.png"
|
||||
alt="European Union Background"
|
||||
fill
|
||||
className="object-cover object-center"
|
||||
priority
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Text overlaid on the flag */}
|
||||
<div className="absolute top-0 right-0 p-4 md:p-6 flex flex-col items-end text-right z-10 drop-shadow-[0_2px_4px_rgba(0,0,0,0.8)]">
|
||||
<span className="block text-[8px] md:text-[10px] font-bold text-white/90 tracking-wide leading-snug">
|
||||
Kofinanziert von der
|
||||
</span>
|
||||
<span className="block text-[10px] md:text-[12px] font-extrabold text-white tracking-wider leading-snug uppercase">
|
||||
Europäischen Union
|
||||
</span>
|
||||
</div>
|
||||
</motion.div>
|
||||
);
|
||||
}
|
||||
|
||||
84
scripts/priority-gate.sh
Executable file
84
scripts/priority-gate.sh
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
if [ -z "$GITEA_PAT" ]; then
|
||||
echo "No GITEA_PAT provided, skipping priority gate."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z "$CURRENT_RUN_ID" ] || [ -z "$CURRENT_TARGET" ] || [ -z "$GITHUB_REPOSITORY" ]; then
|
||||
echo "Missing required environment variables."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
declare -A PRIO=( ["production"]=40 ["staging"]=30 ["testing"]=20 ["branch"]=10 )
|
||||
CURRENT_PRIO=${PRIO[$CURRENT_TARGET]:-0}
|
||||
|
||||
echo "Current Run: $CURRENT_RUN_ID, Target: $CURRENT_TARGET, Priority: $CURRENT_PRIO"
|
||||
|
||||
API_BASE="https://git.infra.mintel.me/api/v1/repos/$GITHUB_REPOSITORY/actions/runs"
|
||||
|
||||
# Fetch running and waiting workflows
|
||||
LIMIT=50
|
||||
RESPONSE=$(curl -s -H "Authorization: token $GITEA_PAT" "$API_BASE?limit=$LIMIT")
|
||||
|
||||
# Verify response is valid JSON
|
||||
if ! echo "$RESPONSE" | jq empty 2>/dev/null; then
|
||||
echo "Failed to parse API response from Gitea."
|
||||
echo "$RESPONSE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Use jq to extract running or waiting jobs that are NOT the current one
|
||||
RUNS=$(echo "$RESPONSE" | jq -c '.[] | select(.id != '"$CURRENT_RUN_ID"') | select(.status == "running" or .status == "waiting")')
|
||||
|
||||
if [ -z "$RUNS" ]; then
|
||||
echo "No other running/waiting workflows found."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
while IFS= read -r run; do
|
||||
if [ -z "$run" ]; then continue; fi
|
||||
|
||||
RUN_ID=$(echo "$run" | jq -r '.id')
|
||||
REF=$(echo "$run" | jq -r '.ref')
|
||||
REF_NAME=${REF#refs/tags/}
|
||||
REF_NAME=${REF_NAME#refs/heads/}
|
||||
|
||||
# Determine target of the running workflow
|
||||
TARGET="branch"
|
||||
if [ "$REF" == "refs/heads/main" ] || [ "$REF_NAME" == "main" ]; then
|
||||
TARGET="testing"
|
||||
elif [[ "$REF" == refs/tags/* ]] || [[ "$REF" == refs/heads/v* ]]; then
|
||||
if [[ "$REF_NAME" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
TARGET="production"
|
||||
else
|
||||
TARGET="staging"
|
||||
fi
|
||||
fi
|
||||
|
||||
RUN_PRIO=${PRIO[$TARGET]:-0}
|
||||
|
||||
echo "Found running workflow ID: $RUN_ID (Target: $TARGET, Priority: $RUN_PRIO)"
|
||||
|
||||
if [ "$CURRENT_PRIO" -gt "$RUN_PRIO" ]; then
|
||||
echo "Current workflow has HIGHER priority ($CURRENT_PRIO > $RUN_PRIO). Canceling run $RUN_ID..."
|
||||
curl -s -X POST -H "Authorization: token $GITEA_PAT" "$API_BASE/$RUN_ID/cancel"
|
||||
elif [ "$CURRENT_PRIO" -lt "$RUN_PRIO" ]; then
|
||||
echo "Current workflow has LOWER priority ($CURRENT_PRIO < $RUN_PRIO). Aborting self."
|
||||
curl -s -X POST -H "Authorization: token $GITEA_PAT" "$API_BASE/$CURRENT_RUN_ID/cancel"
|
||||
exit 1
|
||||
else
|
||||
# Equal priority: Newer wins
|
||||
if [ "$CURRENT_RUN_ID" -gt "$RUN_ID" ]; then
|
||||
echo "Equal priority, but current is newer. Canceling run $RUN_ID..."
|
||||
curl -s -X POST -H "Authorization: token $GITEA_PAT" "$API_BASE/$RUN_ID/cancel"
|
||||
else
|
||||
echo "Equal priority, but current is older. Aborting self."
|
||||
curl -s -X POST -H "Authorization: token $GITEA_PAT" "$API_BASE/$CURRENT_RUN_ID/cancel"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done <<< "$RUNS"
|
||||
|
||||
echo "Priority gate cleared. Continuing deployment."
|
||||
Reference in New Issue
Block a user