65 lines
2.0 KiB
YAML
65 lines
2.0 KiB
YAML
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 }}
|