mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
81 lines
2.3 KiB
YAML
81 lines
2.3 KiB
YAML
name: Automatic Deployment
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- dev
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
environment:
|
|
name: 🌍 Setup Environment
|
|
runs-on: [self-hosted]
|
|
outputs:
|
|
target: ${{ steps.dev.outputs.target || steps.staging.outputs.target }}
|
|
steps:
|
|
- name: 🛠️ Set Development Environment
|
|
id: dev
|
|
if: ${{github.ref_name == 'dev'}}
|
|
run: |
|
|
echo "target=dev" >> $GITHUB_OUTPUT
|
|
- name: 🚀 Set Staging Environment
|
|
id: staging
|
|
if: ${{github.ref_name == 'staging'}}
|
|
run: |
|
|
echo "target=staging" >> $GITHUB_OUTPUT
|
|
|
|
build-base-image:
|
|
name: 🏗️ Build Base Image
|
|
runs-on: [self-hosted, dev]
|
|
needs: [environment]
|
|
steps:
|
|
- name: 🔍 Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 🐳 Build Docker Image
|
|
run: docker build -t edr-${{needs.environment.outputs.target}} .
|
|
|
|
deploy-service:
|
|
name: ${{ matrix.display_name }}
|
|
runs-on: [self-hosted, dev]
|
|
needs: [build-base-image, environment]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- service: freight-api
|
|
env_file: .env.freight-api
|
|
display_name: 🚚 Deploy Freight API Service
|
|
- service: passenger-api
|
|
env_file: .env.passenger-api
|
|
display_name: 🧑🦲 Deploy Passenger API Service
|
|
|
|
steps:
|
|
- name: 🔍 Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 📋 Copy ${{ matrix.service }} Environment
|
|
run: cp ~/environment/edr/${{needs.environment.outputs.target}}/${{ matrix.env_file }} .env
|
|
|
|
- name: 🚀 Start ${{ matrix.service }} Service
|
|
run: docker compose --project-name="edr-${{needs.environment.outputs.target}}" up -d --force-recreate ${{ matrix.service }} --build
|
|
|
|
cleanup:
|
|
name: 🧹 Cleanup Docker Resources
|
|
runs-on: [self-hosted]
|
|
needs:
|
|
- deploy-service
|
|
if: always() # Run even if previous jobs fail
|
|
steps:
|
|
- name: 🗑️ Remove unused Docker resources
|
|
run: |
|
|
echo "🧹 Cleaning up Docker resources..."
|
|
# Remove all stopped containers
|
|
docker container prune -f
|
|
# Remove unused images (both dangling and unreferenced)
|
|
docker image prune -a -f
|
|
|
|
echo "✅ Docker cleanup completed!"
|