name: Build and Deploy TenantApi + SkuWorker on: push: branches: - dev jobs: build-and-deploy: runs-on: host steps: - name: Checkout code run: | cd /opt/deploy/tenantapi || mkdir -p /opt/deploy/tenantapi cd /opt/deploy/tenantapi # 如果已有仓库就 pull,否则 clone if [ -d ".git" ]; then git fetch origin dev git reset --hard origin/dev git submodule update --init --recursive else git clone --branch dev ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.TenantApi.git . git submodule init git config submodule.TakeoutSaaS.BuildingBlocks.url ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.BuildingBlocks.git git config submodule.TakeoutSaaS.Docs.url ssh://git@git.laosankeji.com:2222/msumshk/TakeoutSaaS.Docs.git git submodule update fi - name: Build on host run: | cd /opt/deploy/tenantapi dotnet restore TakeoutSaaS.sln dotnet publish src/Api/TakeoutSaaS.TenantApi/TakeoutSaaS.TenantApi.csproj -c Release -o /opt/deploy/tenantapi/publish --no-restore dotnet publish src/Worker/TakeoutSaaS.SkuWorker/TakeoutSaaS.SkuWorker.csproj -c Release -o /opt/deploy/tenantapi/publish-worker --no-restore - name: Apply database migrations run: | cd /opt/deploy/tenantapi export ASPNETCORE_ENVIRONMENT=Development export TAKEOUTSAAS_APPSETTINGS_DIR=/opt/deploy/tenantapi/src/Api/TakeoutSaaS.TenantApi dotnet tool restore dotnet tool run dotnet-ef database update \ --context TakeoutAppDbContext \ --project src/Infrastructure/TakeoutSaaS.Infrastructure \ --startup-project src/Infrastructure/TakeoutSaaS.Infrastructure - name: Build Docker images run: | cd /opt/deploy/tenantapi docker build -t takeoutsaas-tenantapi:latest -f src/Api/TakeoutSaaS.TenantApi/Dockerfile . docker build -t takeoutsaas-skuworker:latest -f src/Worker/TakeoutSaaS.SkuWorker/Dockerfile . - name: Deploy containers run: | docker stop tenantapi || true docker rm tenantapi || true docker stop skuworker || true docker rm skuworker || true docker run -d \ --name tenantapi \ --restart unless-stopped \ -p 7903:7903 \ -e ASPNETCORE_ENVIRONMENT=Development \ takeoutsaas-tenantapi:latest docker run -d \ --name skuworker \ --restart unless-stopped \ -e ASPNETCORE_ENVIRONMENT=Development \ takeoutsaas-skuworker:latest - name: Clean up old images run: | docker image prune -f