82 lines
2.2 KiB
YAML
82 lines
2.2 KiB
YAML
name: Build et push Docker
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Récupérer le dépôt
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Préparer les variables
|
|
shell: bash
|
|
run: |
|
|
REPOSITORY_LOWER="$(printf '%s' "$GITHUB_REPOSITORY" \
|
|
| tr '[:upper:]' '[:lower:]')"
|
|
|
|
BRANCH_NAME="${GITHUB_REF_NAME:-${GITHUB_REF#refs/heads/}}"
|
|
|
|
BRANCH_SLUG="$(printf '%s' "$BRANCH_NAME" \
|
|
| tr '[:upper:]' '[:lower:]' \
|
|
| sed -E 's#[^a-z0-9._-]+#-#g; s#^[._-]+##; s#[._-]+$##')"
|
|
|
|
CALVER="$(date -u +'%y.%m')"
|
|
|
|
echo "REGISTRY=git.jst.ovh" >> "$GITHUB_ENV"
|
|
echo "IMAGE_NAME=git.jst.ovh/$REPOSITORY_LOWER/$BRANCH_SLUG" >> "$GITHUB_ENV"
|
|
echo "BRANCH_NAME=$BRANCH_NAME" >> "$GITHUB_ENV"
|
|
echo "BRANCH_SLUG=$BRANCH_SLUG" >> "$GITHUB_ENV"
|
|
echo "CALVER=$CALVER" >> "$GITHUB_ENV"
|
|
|
|
- name: Afficher les informations
|
|
shell: bash
|
|
run: |
|
|
echo "Branche : $BRANCH_NAME"
|
|
echo "Version CalVer : $CALVER"
|
|
echo "Image : $IMAGE_NAME:$CALVER"
|
|
|
|
- name: Vérifier Docker
|
|
shell: bash
|
|
run: |
|
|
docker version
|
|
docker info
|
|
|
|
- name: Connexion au registre
|
|
shell: bash
|
|
env:
|
|
REGISTRY_TOKEN: ${{ secrets.REGISTRY_TOKEN }}
|
|
run: |
|
|
if [ -z "$REGISTRY_TOKEN" ]; then
|
|
echo "Le secret REGISTRY_TOKEN est absent"
|
|
exit 1
|
|
fi
|
|
|
|
printf '%s' "$REGISTRY_TOKEN" \
|
|
| docker login "$REGISTRY" \
|
|
--username "$GITHUB_ACTOR" \
|
|
--password-stdin
|
|
|
|
- name: Construire l'image
|
|
shell: bash
|
|
run: |
|
|
docker build \
|
|
--pull \
|
|
--tag "$IMAGE_NAME:$CALVER" \
|
|
--tag "$IMAGE_NAME:latest" \
|
|
.
|
|
|
|
- name: Publier les images
|
|
shell: bash
|
|
run: |
|
|
docker push "$IMAGE_NAME:$CALVER"
|
|
docker push "$IMAGE_NAME:latest"
|
|
|
|
- name: Résumé
|
|
shell: bash
|
|
run: |
|
|
echo "Images publiées :"
|
|
echo " $IMAGE_NAME:$CALVER"
|
|
echo " $IMAGE_NAME:latest" |