#GitHub Actions
Build CI/CD pipelines with GitHub Actions.
#Basic Workflow
yaml
1# .github/workflows/ci.yml
2name: CI
3
4on:
5 push:
6 branches: [main]
7 pull_request:
8 branches: [main]
9
10jobs:
11 build:
12 runs-on: ubuntu-latest
13
14 steps:
15 - uses: actions/checkout@v4
16
17 - name: Setup Node.js
18 uses: actions/setup-node@v4
19 with:
20 node-version: '20'
21 cache: 'npm'
22
23 - name: Install dependencies
24 run: npm ci
25
26 - name: Run tests
27 run: npm test
28
29 - name: Build
30 run: npm run build#Deploy Workflow
yaml
1name: Deploy
2
3on:
4 push:
5 branches: [main]
6
7jobs:
8 deploy:
9 runs-on: ubuntu-latest
10
11 steps:
12 - uses: actions/checkout@v4
13
14 - name: Login to Docker Hub
15 uses: docker/login-action@v3
16 with:
17 username: ${{ secrets.DOCKER_USERNAME }}
18 password: ${{ secrets.DOCKER_PASSWORD }}
19
20 - name: Build and push
21 uses: docker/build-push-action@v5
22 with:
23 push: true
24 tags: user/app:${{ github.sha }}
25
26 - name: Deploy to production
27 run: |
28 # Your deployment commands
29 echo "Deploying..."#Matrix Builds
yaml
1jobs:
2 test:
3 runs-on: ${{ matrix.os }}
4 strategy:
5 matrix:
6 os: [ubuntu-latest, windows-latest]
7 node: [18, 20]
8
9 steps:
10 - uses: actions/checkout@v4
11 - uses: actions/setup-node@v4
12 with:
13 node-version: ${{ matrix.node }}
14 - run: npm ci && npm test#Secrets Management
yaml
1# Use secrets in workflow
2env:
3 API_KEY: ${{ secrets.API_KEY }}
4
5# Use in steps
6- name: Deploy
7 env:
8 AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
9 AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
10 run: aws s3 sync ./dist s3://my-bucket[!TIP] Pro Tip: Use reusable workflows for common patterns across repos!