name: LogMaster CI/CD on: push: branches: [main] pull_request: branches: [main] jobs: build-and-test: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' cache: 'npm' - name: Install dependencies run: npm ci - name: Build (TypeScript compile) run: npx tsc -p tsconfig.server.json - name: Generate sample logs run: node sample-logs/generate-logs.js - name: Start services run: | LOG_MODE=collector PORT=8081 COLLECTOR_UDP_ENABLED=false node dist-server/server.js & LOG_MODE=viewer PORT=9090 REMOTE_COLLECTOR_URL=http://localhost:8081 LOG_SOURCES=sample-logs/app.log,sample-logs/nginx-access.log,sample-logs/syslog,sample-logs/archived.log.gz node dist-server/server.js & LOG_MODE=monitor PORT=8082 MONITOR_ENABLED=true node dist-server/server.js & sleep 3 - name: Run integration tests run: node run-all-tests.js - name: Stop services if: always() run: pkill -f "node dist-server" || true docker: runs-on: ubuntu-latest needs: build-and-test if: github.ref == 'refs/heads/main' steps: - name: Checkout uses: actions/checkout@v4 - name: Build Docker image run: docker build -t logmaster:latest -t logmaster:${{ github.sha }} . - name: Login to Gitea Registry run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login git.kgessner.de -u "${{ secrets.REGISTRY_USER }}" --password-stdin - name: Tag and push run: | docker tag logmaster:latest git.kgessner.de/keviin/logmaster:latest docker tag logmaster:${{ github.sha }} git.kgessner.de/keviin/logmaster:${{ github.sha }} docker push git.kgessner.de/keviin/logmaster:latest docker push git.kgessner.de/keviin/logmaster:${{ github.sha }}