CI Test
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m4s
Build and Push Docker Image / deploy (push) Successful in 3s

This commit is contained in:
Murat Özkorkmaz
2025-10-17 22:45:29 +02:00
parent 4c4589de6d
commit 16ca714d55
2 changed files with 177 additions and 8 deletions

View File

@@ -65,3 +65,75 @@ jobs:
run: |
echo "🎉 Build and Push completed successfully!"
echo "📦 Image: ${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:${{ steps.tag.outputs.IMAGE_TAG }}"
deploy:
runs-on: ubuntu-latest
needs: build-and-push
steps:
- name: Determine Image Tag
id: tag
run: |
# Prüfe ob es ein Git Tag ist
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
TAG="${{ github.ref_name }}"
elif [[ "${{ github.ref_name }}" == "main" ]]; then
TAG="latest"
else
TAG="${{ github.ref_name }}-${{ github.sha }}"
TAG="${TAG:0:50}"
fi
echo "IMAGE_TAG=${TAG}" >> $GITHUB_OUTPUT
echo "📦 Deploying Image Tag: ${TAG}"
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_SSH_PRIVATE_KEY }}" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts
- name: Deploy to Server
env:
IMAGE_NAME: ${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:${{ steps.tag.outputs.IMAGE_TAG }}
CONTAINER_NAME: ${{ vars.REPO_NAME }}
CONTAINER_PORT: ${{ vars.CONTAINER_PORT }}
run: |
echo "🚀 Starting deployment to ${{ secrets.DEPLOY_HOST }}..."
ssh -i ~/.ssh/deploy_key ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} << 'EOF'
set -e
echo "📦 Logging in to registry..."
echo "${{ secrets.CI_GITEA_TOKEN }}" | docker login ${{ vars.REGISTRY_URL }} -u "${{ secrets.CI_GITEA_USER }}" --password-stdin
echo "📥 Pulling new image: ${{ env.IMAGE_NAME }}"
docker pull ${{ env.IMAGE_NAME }}
echo "🛑 Stopping old container (if exists)..."
docker stop ${{ env.CONTAINER_NAME }} 2>/dev/null || true
docker rm ${{ env.CONTAINER_NAME }} 2>/dev/null || true
echo "🚀 Starting new container on port ${{ env.CONTAINER_PORT }}..."
docker run -d \
--name ${{ env.CONTAINER_NAME }} \
--restart unless-stopped \
-p ${{ env.CONTAINER_PORT }}:8080 \
${{ env.IMAGE_NAME }}
echo "✅ Deployment completed successfully!"
docker ps | grep ${{ env.CONTAINER_NAME }}
EOF
- name: Cleanup
if: always()
run: |
rm -f ~/.ssh/deploy_key
- name: Deployment Summary
run: |
echo "🎉 Deployment completed successfully!"
echo "🖥️ Server: ${{ secrets.DEPLOY_HOST }}"
echo "📦 Image: ${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:${{ steps.tag.outputs.IMAGE_TAG }}"
echo "🐳 Container: ${{ vars.REPO_NAME }}"
echo "🌐 URL: http://${{ secrets.DEPLOY_HOST }}:${{ vars.CONTAINER_PORT }}"