FLASHCARDS/
├── ci-scripts/
│ ├── docker-build.sh
│ ├── sonar.sh
│ ├── test.sh
├── Dockerfile
└── pom.xml
FLASHCARDS/
├── ci-scripts/
│ ├── install-trivy.sh
FLASHCARDS/
├── .github/workflows/pr-watch-distroless.yml
├── ci-scripts/
│ ├── .distroless-java17-debian13.digest
│ ├── check-docker-image-latest.sh
│ ├── install-crane.sh
│ │
│ └── docker_push.sh
FLASHCARDS/
├── ci-scripts/
│ ├── trivy-fs.sh
│ ├── trivy-image.sh
│ ├── gitlab_push.sh
#!/bin/bash
set -euo pipefail
IMAGE_NAME=${1:-flashcards}
IMAGE_TAG=${2:-latest}
echo "== Building Docker image: ${IMAGE_NAME}:${IMAGE_TAG} =="
docker build -t ${IMAGE_NAME}:${IMAGE_TAG} .
#!/bin/sh
set -eu
IMAGE_NAME=${1:-flashcards}
IMAGE_TAG=${2:-latest}
DOCKERFILE=${3:-Dockerfile}
echo "====================================="
echo "Building Docker image"
echo "Image : ${IMAGE_NAME}:${IMAGE_TAG}"
echo "Dockerfile : ${DOCKERFILE}"
echo "====================================="
docker build \
-f "${DOCKERFILE}" \
-t "${IMAGE_NAME}:${IMAGE_TAG}" \
.
echo "Docker image successfully built"
script:
- chmod +x ci-scripts/docker-build.sh
- ./ci-scripts/docker-build.sh flashcards prod
- docker save flashcards:prod -o flashcards-prod.tar
- name: Build Docker image
run: |
chmod +x ci-scripts/docker-build.sh
./ci-scripts/docker-build.sh "$IMAGE_NAME" "$IMAGE_TAG"
#!/bin/bash
set -e
echo "=== Running tests ==="
./mvnw clean verify
#!/bin/sh
set -eu
PROFILE=${1:-}
echo "=== Running Maven tests ==="
if [ -n "$PROFILE" ]; then
exec ./mvnw -B clean verify jacoco:report -P"$PROFILE"
else
exec ./mvnw -B clean verify jacoco:report
fi
script:
- ./ci-scripts/test.sh
script:
- ./ci-scripts/test.sh coverage-main
- name: Verify Coverage 70%
run: |
./ci-scripts/test.sh coverage-staging
- name: Run Tests + JaCoCo
run: |
./ci-scripts/test.sh coverage-main
#!/bin/sh
set -eu
./mvnw -B sonar:sonar \
-Dsonar.host.url="$SONAR_HOST_URL" \
-Dsonar.login="$SONAR_TOKEN" \
-Dsonar.qualitygate.wait=true
On obtient exactement le même % de couverture dans GitHub et dans GitLab.