Tools: GitHub Actions Has Free CI/CD — 2,000 Minutes/Month for Open Source - Full Analysis

Tools: GitHub Actions Has Free CI/CD — 2,000 Minutes/Month for Open Source - Full Analysis

Every Push Should Be Tested

GitHub Actions: CI/CD Built Into GitHub

Free Tier

Your First Workflow

Deploy on Merge

Useful Patterns

20,000+ Marketplace Actions

GitHub Actions vs Alternatives

Get Started You merge a PR. Tests pass locally. Production breaks. Because nobody ran the tests against the actual environment. CI/CD exists to catch this. GitHub Actions makes it free. GitHub Actions runs workflows directly in your GitHub repository. No external service. No webhook setup. No separate dashboard. Push this file. Every PR now runs tests automatically. Merge to main → build → deploy to Cloudflare Workers. Automatically. Matrix Testing (Test on Multiple Versions) Create .github/workflows/ci.yml in your repo. Push. Done. Automate your data collection with CI/CD. 88+ scrapers on Apify. Custom: [email protected] Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Command

Copy

# .github/workflows/ci.yml name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 - run: -weight: 500;">npm ci - run: -weight: 500;">npm test # .github/workflows/ci.yml name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 - run: -weight: 500;">npm ci - run: -weight: 500;">npm test # .github/workflows/ci.yml name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 - run: -weight: 500;">npm ci - run: -weight: 500;">npm test name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: -weight: 500;">npm ci && -weight: 500;">npm run build - uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CF_API_TOKEN }} name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: -weight: 500;">npm ci && -weight: 500;">npm run build - uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CF_API_TOKEN }} name: Deploy on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: -weight: 500;">npm ci && -weight: 500;">npm run build - uses: cloudflare/wrangler-action@v3 with: apiToken: ${{ secrets.CF_API_TOKEN }} jobs: test: strategy: matrix: node-version: [18, 20, 22] os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: -weight: 500;">npm test jobs: test: strategy: matrix: node-version: [18, 20, 22] os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: -weight: 500;">npm test jobs: test: strategy: matrix: node-version: [18, 20, 22] os: [ubuntu-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - run: -weight: 500;">npm test on: schedule: - cron: '0 9 * * 1' # Every Monday at 9 AM on: schedule: - cron: '0 9 * * 1' # Every Monday at 9 AM on: schedule: - cron: '0 9 * * 1' # Every Monday at 9 AM jobs: call-tests: uses: ./.github/workflows/tests.yml with: environment: staging jobs: call-tests: uses: ./.github/workflows/tests.yml with: environment: staging jobs: call-tests: uses: ./.github/workflows/tests.yml with: environment: staging - 2,000 minutes/month (Linux) for private repos - Unlimited minutes for public repos - 500MB storage for artifacts - Concurrent jobs: up to 20 - actions/cache: Cache dependencies for faster builds - -weight: 500;">docker/build-push-action: Build and push Docker images - peaceiris/actions-gh-pages: Deploy to GitHub Pages - actions/upload-artifact: Share files between jobs