CI Test
This commit is contained in:
@@ -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 }}"
|
||||
|
||||
Reference in New Issue
Block a user