17 GitHub Actions Workflows for Development Teams
As a development team, managing the build, test, and deployment of your code can be a complex task. Fortunately, GitHub Actions provides an array of pre-built workflows that make it easy to automate these tasks. In this article, we’ll explore 17 different GitHub Actions workflows that can benefit your development team.
1. Code Formatting
Automate code formatting with the code-formatting workflow. This workflow uses tools like ESLint and Prettier to ensure your code is formatted consistently across all repositories.
“`yml
name: Code Formatting
on:
push
jobs:
format:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Format code
run: |
npm install prettier –save-dev
npx prettier –write .
“`
2. Code Analysis
The code-analysis workflow uses tools like SonarQube and Snyk to analyze your code for security vulnerabilities, performance issues, and other problems.
“`yml
name: Code Analysis
on:
push
jobs:
analysis:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Run SonarQube analysis
run: |
docker run –rm -v $(pwd):/app sonarqube:latest sonar scanner analyze -d /app
“`
3. Continuous Integration (CI)
The ci workflow is a basic example of a CI pipeline that runs tests and builds your code.
“`yml
name: Continuous Integration
on:
push
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Run tests
run: |
npm install
npm test
“`
4. Continuous Deployment (CD)
The cd workflow automates the deployment of your code to a production environment.
“`yml
name: Continuous Deployment
on:
push
jobs:
deploy:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Deploy to production
run: |
docker login my-docker-registry.com -u $GITHUB_USERNAME -p $GITHUB_PASSWORD
docker tag my-image:$GITHUB_SHA
docker push my-docker-registry.com/my-image:$GITHUB_SHA
“`
5. Docker Image
The docker-image workflow builds a Docker image from your code.
“`yml
name: Docker Image
on:
push
jobs:
build-docker-image:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Build Docker image
run: |
docker build -t my-image:$GITHUB_SHA .
“`
6. Security Scanning
The security-scanning workflow runs security scans on your code using tools like Snyk and Codecov.
“`yml
name: Security Scanning
on:
push
jobs:
scan:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Run security scanning
run: |
npx snyk test .
“`
7. Code Coverage
The code-coverage workflow reports on the percentage of your code that is covered by tests.
“`yml
name: Code Coverage
on:
push
jobs:
coverage:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Run test coverage analysis
run: |
npm install Istanbul –save-dev
npx istanbul cover .
“`
8. Dependency Updates
The dependency-updates workflow updates dependencies in your package.json file.
“`yml
name: Dependency Updates
on:
push
jobs:
update-dependencies:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Update dependencies
run: |
npm install –save-dev semantic-release@^16.5.0
“`
9. Semantic Release
The semantic-release workflow automates the process of creating a new release based on changes in your code.
“`yml
name: Semantic Release
on:
push
jobs:
release:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Create semantic release
run: |
npx semantic-release .
“`
10. Linting
The linting workflow checks your code for errors and warnings using tools like ESLint.
“`yml
name: Linting
on:
push
jobs:
lint:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Run linting
run: |
npm install eslint –save-dev
npx eslint .
“`
11. Type Checking
The type-checking workflow checks your TypeScript code for errors using tools like TSLint.
“`yml
name: Type Checking
on:
push
jobs:
typecheck:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Run type checking
run: |
npm install tslint –save-dev
npx tslint .
“`
12. Code Review
The code-review workflow provides a mechanism for reviewing changes to your code.
“`yml
name: Code Review
on:
pull_request
jobs:
review:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Run code review
run: |
npx semantic-release .
“`
13. Documentation
The documentation workflow generates documentation for your code.
“`yml
name: Documentation
on:
push
jobs:
docs:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Generate documentation
run: |
npm install docute –save-dev
npx docute .
“`
14. API Documentation
The api-documentation workflow generates API documentation for your code.
“`yml
name: API Documentation
on:
push
jobs:
api-docs:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Generate API documentation
run: |
npm install swagger-jsdoc –save-dev
npx swagger-jsdoc .
“`
15. Error Tracking
The error-tracking workflow tracks errors in your code.
“`yml
name: Error Tracking
on:
push
jobs:
track-errors:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Track errors
run: |
npx semantic-release .
“`
16. Security Monitoring
The security-monitoring workflow monitors your code for security vulnerabilities.
“`yml
name: Security Monitoring
on:
push
jobs:
monitor-security:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Run security monitoring
run: |
npm install snyk –save-dev
npx snyk .
“`
17. Code Quality
The code-quality workflow checks your code for quality issues.
“`yml
name: Code Quality
on:
push
jobs:
check-quality:
runs-on: ubuntu-latest
steps:
– name: Checkout code
uses: actions/checkout@v2
– name: Check code quality
run: |
npx eslint .
“`
In conclusion, these 17 GitHub Actions workflows can help you automate various tasks and improve the overall development process for your team. Remember to customize them according to your project’s needs and integrate them into your CI/CD pipeline for better results.