adds workflow

This commit is contained in:
pb-coding 2023-09-23 14:49:09 +02:00
parent aaff1db2ab
commit 12e8875fa9
2 changed files with 86 additions and 0 deletions

37
.github/scripts/deploy.sh vendored Normal file
View file

@ -0,0 +1,37 @@
#!/bin/bash
set -e
# Configuration
DOCKER_REGISTRY="ghcr.io"
DOCKER_USERNAME="pb-coding"
DOCKER_IMAGE_NAME="skyjo-fe"
CONTAINER_NAME="skyjo-fe"
TARGET_DIRECTORY="/home/pb1497/deployments/$CONTAINER_NAME"
DOCKER_NETWORK="swag_net"
# Authenticate with Docker registry
echo "Authenticating with Docker registry..."
docker login -u $DOCKER_USERNAME --password $GITHUB_TOKEN $DOCKER_REGISTRY
# Pull the latest Docker image
echo "Pulling the latest Docker image..."
docker pull $DOCKER_REGISTRY/$DOCKER_USERNAME/$DOCKER_IMAGE_NAME:latest
cd $TARGET_DIRECTORY
# Stop and remove the existing container if it exists
if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then
echo "Stopping and removing the existing container..."
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
fi
# Run the new Docker container
echo "Starting a new container from the latest image..."
docker run -d \
--name $CONTAINER_NAME \
--network $DOCKER_NETWORK \
-v $TARGET_DIRECTORY:/app \
$DOCKER_REGISTRY/$DOCKER_USERNAME/$DOCKER_IMAGE_NAME:latest
echo "Deployment complete."

49
.github/workflows/deploy.yml vendored Normal file
View file

@ -0,0 +1,49 @@
name: Build and push docker image and deploy
on:
push:
branches:
- main
jobs:
build_and_push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Log in to Github Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.DOCKER_REGISTRY_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ghcr.io/${{ github.actor }}/skyjo-fe:latest
deploy:
needs: build_and_push
if: ${{ success() }}
runs-on: self-hosted
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Deploy to target server
env:
DEPLOY_HOST: ${{ secrets.DEPLOY_HOST }}
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "$DEPLOY_KEY" > deploy_key.pem
chmod 600 deploy_key.pem
scp -i deploy_key.pem -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null .github/scripts/deploy.sh $DEPLOY_USER@$DEPLOY_HOST:/tmp/
ssh -i deploy_key.pem -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null $DEPLOY_USER@$DEPLOY_HOST "GITHUB_TOKEN=$GITHUB_TOKEN bash -s" < /tmp/deploy.sh
rm -f deploy_key.pem