Skip to content

feat(deploy) : ajout deploy #1

feat(deploy) : ajout deploy

feat(deploy) : ajout deploy #1

name: Build and Deploy
on:
push:
branches:
- main
jobs:
build-publish-and-deploy:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Convert repository owner to lowercase
id: convert_repository
run: |
OWNER=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
REPO=$(echo "${{ github.event.repository.name }}" | tr '[:upper:]' '[:lower:]')
echo "::set-output name=owner::${OWNER}"
echo "::set-output name=repo::${REPO}"
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image
run: docker build -t ghcr.io/${{ steps.convert_repository.outputs.owner }}/${{ steps.convert_repository.outputs.repo }}:${{ github.sha }} .
- name: Push Docker image to GitHub Container Registry
run: docker push ghcr.io/${{ steps.convert_repository.outputs.owner }}/${{ steps.convert_repository.outputs.repo }}:${{ github.sha }}
- name: SSH into VPS and deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.VPS_HOST }}
username: ${{ secrets.VPS_USERNAME }}
password: ${{ secrets.VPS_PASSWORD }}
script: |
docker pull ghcr.io/${{ steps.convert_repository.outputs.owner }}/${{ steps.convert_repository.outputs.repo }}:${{ github.sha }}
docker stop portfolio_term_website || true
docker rm portfolio_term_website || true
docker run -d --name portfolio_term_website -p 8080:5000 ghcr.io/${{ steps.convert_repository.outputs.owner }}/${{ steps.convert_repository.outputs.repo }}:${{ github.sha }}