https://github.com/youngermaster/react-native-continuous-integration
Comprehensive guide and configurations for setting up continuous integration pipelines for React Native applications.
https://github.com/youngermaster/react-native-continuous-integration
continuous-integration jenkins react-native react-native-cicd
Last synced: about 2 months ago
JSON representation
Comprehensive guide and configurations for setting up continuous integration pipelines for React Native applications.
- Host: GitHub
- URL: https://github.com/youngermaster/react-native-continuous-integration
- Owner: Youngermaster
- License: apache-2.0
- Created: 2024-01-15T03:12:20.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-15T10:53:00.000Z (over 2 years ago)
- Last Synced: 2025-01-27T09:28:07.027Z (over 1 year ago)
- Topics: continuous-integration, jenkins, react-native, react-native-cicd
- Language: TypeScript
- Homepage:
- Size: 496 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# React Native Continuous Integration
This repository provides a comprehensive guide and configurations for setting up continuous integration and continuous deployment (CI/CD) pipelines specifically tailored for React Native applications. By leveraging tools like Husky, lint-staged, Jenkins, and SonarQube, you can ensure fast, reliable, and automated builds, testing, and deployment for your React Native projects.
## Table of Contents
- [React Native Continuous Integration](#react-native-continuous-integration)
- [Table of Contents](#table-of-contents)
- [Introduction](#introduction)
- [Getting Started](#getting-started)
- [Husky](#husky)
- [Lint-staged](#lint-staged)
- [Jenkins](#jenkins)
- [SonarQube](#sonarqube)
## Introduction
This repository aims to provide a step-by-step guide to setting up an efficient CI/CD pipeline for your React Native applications. The following tools and services will be utilized:
- **Husky**: A tool for configuring Git hooks, particularly pre-commit hooks, to enforce code quality and consistency before each commit.
- **lint-staged**: A library that runs linters on only the staged files, making the pre-commit checks faster and more efficient.
- **Jenkins**: A popular open-source automation server that enables the creation and management of CI/CD pipelines.
- **SonarQube**: A platform for continuous inspection of code quality, detecting bugs, vulnerabilities, and code smells, and providing detailed reports and recommendations.
## Getting Started
### Husky
1. Install Husky as a development dependency in your React Native project:
```bash
npm install husky --save-dev
```
2. Add the following configuration to your `package.json`:
```json
{
"scripts": {
...
"prepare": "husky install"
}
}
```
### Lint-staged
1. Install lint-staged as a development dependency in your React Native project:
```bash
npm install lint-staged --save-dev
```
2. Add the following configuration to your `package.json`:
```json
{
"**/*.{js,jsx,ts,tsx}": ["eslint"]
}
```
3. Add the `eslint` config running `npx eslint --init` and select your desired configuration, or copy the content of `.eslintrc.js` from this project to your project.
### Jenkins
1. Install and configure Jenkins on your server or local machine. Follow the official [Jenkins Installation Guide](https://www.jenkins.io/doc/book/installing/) to get started.
2. Install the necessary plugins in Jenkins, such as the [GitHub Plugin](https://plugins.jenkins.io/github/), [SonarQube Scanner Plugin](https://plugins.jenkins.io/sonar/), and any other required plugins for your specific project.
3. Create a new Jenkins pipeline and configure it with your GitHub repository.
4. Add a `Jenkinsfile` to your React Native project to define the pipeline stages, such as building the application, running tests, and performing static code analysis with SonarQube.
### SonarQube
1. Install and configure SonarQube on your server or local machine. Follow the official [SonarQube Installation Guide](https://docs.sonarqube.org/latest/setup/install-server/) to get started.
2. Configure your React Native project with a `sonar-project.properties` file, specifying the required properties such as `sonar.projectKey`, `sonar.projectName`, `sonar.sources`, and any other necessary settings.
3. In your `Jenkinsfile`, add a stage for running the SonarQube Scanner to analyze your code and send the results to your SonarQube.