name: TaxBaik CI/CD on: push: branches: - master jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0' - name: Restore dependencies run: dotnet restore TaxBaik.sln - name: Build solution run: dotnet build TaxBaik.sln -c Release --no-restore - name: Publish Web run: dotnet publish TaxBaik.Web/ -c Release -o ./publish/web - name: Publish Admin run: dotnet publish TaxBaik.Admin/ -c Release -o ./publish/admin - name: Setup SSH key uses: webfactory/ssh-agent@v0.9.0 with: ssh-private-key: ${{ secrets.DEPLOY_SSH_KEY }} - name: Deploy Web run: | TIMESTAMP=$(date +%Y%m%d_%H%M%S) mkdir -p ~/.ssh echo "${{ secrets.DEPLOY_HOST }}" >> ~/.ssh/known_hosts || true ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} "mkdir -p ~/deployments/taxbaik_${TIMESTAMP}" rsync -az --delete ./publish/web/ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:~/deployments/taxbaik_${TIMESTAMP}/ ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} "ln -sfn ~/deployments/taxbaik_${TIMESTAMP} ~/taxbaik_active && sudo systemctl restart taxbaik" - name: Deploy Admin run: | TIMESTAMP=$(date +%Y%m%d_%H%M%S) ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} "mkdir -p ~/deployments/taxbaik_admin_${TIMESTAMP}" rsync -az --delete ./publish/admin/ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:~/deployments/taxbaik_admin_${TIMESTAMP}/ ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} "ln -sfn ~/deployments/taxbaik_admin_${TIMESTAMP} ~/taxbaik_admin_active && sudo systemctl restart taxbaik-admin"