first commit
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
name: Build and deploy
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
# Secrets à configurer dans Gitea (Paramètres du dépôt > Actions > Secrets) :
|
||||
# REGISTRY_HOST adresse du registre d'images (ex: gitea.exemple.com)
|
||||
# REGISTRY_IMAGE chemin complet de l'image (ex: gitea.exemple.com/mon-compte/forge-engine)
|
||||
# REGISTRY_USER utilisateur pour "docker login" sur ce registre
|
||||
# REGISTRY_TOKEN jeton d'accès (scope package:write) pour ce registre
|
||||
# DEPLOY_HOST adresse du serveur de production
|
||||
# DEPLOY_USER utilisateur SSH sur ce serveur
|
||||
# DEPLOY_SSH_KEY clé privée SSH (au format PEM) autorisée sur ce serveur
|
||||
# DEPLOY_PATH dossier sur le serveur où vit docker-compose.prod.yml (ex: /home/deploy/forge-engine)
|
||||
#
|
||||
# Utilise directement docker/ssh/scp en ligne de commande plutôt que des
|
||||
# actions du marketplace, pour ne pas dépendre de la disponibilité de
|
||||
# github.com / du miroir gitea.com depuis le runner self-hosted.
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Connexion au registre d'images
|
||||
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login "${{ secrets.REGISTRY_HOST }}" -u "${{ secrets.REGISTRY_USER }}" --password-stdin
|
||||
|
||||
- name: Build de l'image
|
||||
run: |
|
||||
docker build \
|
||||
-t "${{ secrets.REGISTRY_IMAGE }}:${{ gitea.sha }}" \
|
||||
-t "${{ secrets.REGISTRY_IMAGE }}:latest" \
|
||||
.
|
||||
|
||||
- name: Publication de l'image
|
||||
run: |
|
||||
docker push "${{ secrets.REGISTRY_IMAGE }}:${{ gitea.sha }}"
|
||||
docker push "${{ secrets.REGISTRY_IMAGE }}:latest"
|
||||
|
||||
deploy:
|
||||
needs: build-and-push
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Préparation de la clé SSH
|
||||
run: |
|
||||
mkdir -p ~/.ssh
|
||||
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/deploy_key
|
||||
chmod 600 ~/.ssh/deploy_key
|
||||
ssh-keyscan -H "${{ secrets.DEPLOY_HOST }}" >> ~/.ssh/known_hosts
|
||||
|
||||
- name: Envoi du docker-compose.prod.yml sur le serveur
|
||||
run: |
|
||||
scp -i ~/.ssh/deploy_key docker-compose.prod.yml \
|
||||
"${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:${{ secrets.DEPLOY_PATH }}/docker-compose.prod.yml"
|
||||
|
||||
- name: Pull et redémarrage sur le serveur
|
||||
run: |
|
||||
ssh -i ~/.ssh/deploy_key "${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}" '
|
||||
set -e
|
||||
cd "${{ secrets.DEPLOY_PATH }}"
|
||||
echo "REGISTRY_IMAGE=${{ secrets.REGISTRY_IMAGE }}" > .env
|
||||
echo "IMAGE_TAG=${{ gitea.sha }}" >> .env
|
||||
docker login "${{ secrets.REGISTRY_HOST }}" -u "${{ secrets.REGISTRY_USER }}" -p "${{ secrets.REGISTRY_TOKEN }}"
|
||||
docker compose -f docker-compose.prod.yml pull
|
||||
docker compose -f docker-compose.prod.yml up -d
|
||||
docker image prune -f
|
||||
'
|
||||
Reference in New Issue
Block a user