All checks were successful
Build & Test / build (pull_request) Successful in 1m37s
103 lines
3.4 KiB
YAML
103 lines
3.4 KiB
YAML
name: .NET
|
|
permissions: read-all
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
APPSETTINGS_PATH: ui/Sufi.Demo.PeopleDirectory.UI/Server/appsettings.json
|
|
IMAGE_NAME: sufiaziz/demo-contact
|
|
steps:
|
|
- name: 🔧 Install dependencies
|
|
run: |
|
|
apt-get update
|
|
apt-get install -y curl sed ca-certificates gnupg
|
|
|
|
# Install Docker CLI with Compose plugin
|
|
install -m 0755 -d /etc/apt/keyrings
|
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
|
chmod a+r /etc/apt/keyrings/docker.gpg
|
|
|
|
echo \
|
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
|
|
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
|
|
tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
|
|
apt-get update
|
|
apt-get install -y docker-ce-cli docker-compose-plugin
|
|
|
|
# Verify installation
|
|
docker compose version
|
|
|
|
- name: 🔎 Checkout files
|
|
uses: actions/checkout@v5
|
|
|
|
- name: 💎 Cache NuGet packages
|
|
uses: actions/cache@v4
|
|
id: cache-nuget
|
|
with:
|
|
path: |
|
|
~/.nuget/packages
|
|
~/.local/share/NuGet/Cache-*
|
|
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-nuget-
|
|
|
|
- name: 🎽 Setup .NET
|
|
uses: actions/setup-dotnet@v5
|
|
with:
|
|
dotnet-version: '10.0.x'
|
|
|
|
- name: 🔄 Replace placeholders in docker-compose.yml
|
|
run: |
|
|
echo "Replacing placeholders in docker-compose.yml..."
|
|
echo "Replace connection string..."
|
|
sed -i "s|#ConnectionString#|${{ secrets.CONNECTION_STRING }}|g" docker-compose.yml
|
|
echo "Replace license key..."
|
|
sed -i "s|#LuckyPennyLicenseKey#|${{ secrets.LUCKY_PENNY_LICENSE_KEY }}|g" docker-compose.yml
|
|
echo "Replace SEQ settings..."
|
|
sed -i "s|#SEQ_URL#|${{ vars.SEQ_URL }}|g" docker-compose.yml
|
|
sed -i "s|#SEQ_APIKEY#|${{ secrets.SEQ_APIKEY }}|g" docker-compose.yml
|
|
|
|
- name: 🐳 Build Docker image
|
|
run: |
|
|
docker build -t $IMAGE_NAME:latest \
|
|
--build-arg BUILD_PROJ="${{ vars.BUILD_PROJ }}" \
|
|
-f Dockerfile .
|
|
echo "Docker image built successfully"
|
|
|
|
- name: 🛑 Stop existing containers
|
|
run: |
|
|
echo "Stopping existing containers via docker compose..."
|
|
docker compose down || echo "No existing containers to stop"
|
|
|
|
- name: 🚀 Start containers with docker compose
|
|
run: |
|
|
echo "Starting containers via docker compose..."
|
|
docker compose up -d
|
|
echo "Containers started successfully at $(date)"
|
|
|
|
- name: ✅ Verify container status
|
|
run: |
|
|
echo "Waiting for containers to be healthy..."
|
|
sleep 5
|
|
|
|
echo "Listing running containers:"
|
|
docker compose ps
|
|
|
|
echo ""
|
|
echo "Recent logs:"
|
|
docker compose logs --tail=20
|
|
|
|
# Check if main service is running
|
|
if docker compose ps | grep -q "Up"; then
|
|
echo "Containers are running successfully"
|
|
else
|
|
echo "Error: Containers failed to start"
|
|
docker compose logs
|
|
exit 1
|
|
fi |