name: Build and Test on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '18' cache: 'npm' - name: Install dependencies run: npm ci - name: Run linting run: npm run lint - name: Build API (TypeScript) run: npm run build:api - name: Verify API build run: | if [ ! -f "dist/server.js" ]; then echo "API build failed - server.js not found" exit 1 fi echo "✅ API TypeScript build successful" docker-build: runs-on: ubuntu-latest needs: test steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build frontend Docker image uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile push: false tags: scriptshare-frontend:latest build-args: | VITE_APP_NAME=ScriptShare VITE_APP_URL=https://scriptshare.example.com VITE_ANALYTICS_ENABLED=false - name: Build API Docker image uses: docker/build-push-action@v5 with: context: . file: ./Dockerfile.api push: false tags: scriptshare-api:latest - name: Test Docker containers run: | # Test that images were built successfully docker images scriptshare-frontend docker images scriptshare-api # Verify images exist if ! docker images scriptshare-frontend --format "table {{.Repository}}\t{{.Tag}}" | grep -q "scriptshare-frontend"; then echo "Frontend Docker image build failed" exit 1 fi if ! docker images scriptshare-api --format "table {{.Repository}}\t{{.Tag}}" | grep -q "scriptshare-api"; then echo "API Docker image build failed" exit 1 fi echo "✅ All Docker images built successfully"