added files
This commit is contained in:
@@ -1,2 +1,67 @@
|
||||
# devops-lib
|
||||
|
||||
---
|
||||
|
||||
## Parameters
|
||||
Most of the functionality depends on the parameters provided by the users in form of groovy map of key and value pairs. The supported parameters are as below:
|
||||
|
||||
### Required parameters
|
||||
**repo_name**: The key repo_name is required for checking out the code in a subdirectory. The value is the repository name that you want to checkout
|
||||
|
||||
**build_tool**: This parameter is required to identify which build_tool to use in the pipeline. The supported values are *maven*, *gradle*, *docker*, *python*, *node*, *go*, *php* (and their prefixed variants such as *maven-3.3-jdk-17*, *python-3*, *node-16*, *go1.21*)
|
||||
|
||||
**maintainer** : This parameter is required to send the notification in the slack channel *#ci-cd-status*. Please provide your slack username here
|
||||
|
||||
### Optional parameter
|
||||
|
||||
`devops-lib` is Meesho's Jenkins Shared Library that provides a unified CI/CD pipeline for all microservices across the organisation. Consumer repos load it via `@Library('devops-lib@main')` and call a single `eksCICD(repo)` entry point — the library handles language-specific building (Maven, Go, Gradle, Node.js, Python, PHP), code quality gates (Sonar), Docker image publishing to GAR/ECR, Helm chart updates, and ArgoCD-based deployment to GKE/EKS clusters. Build status and deployment metadata are reported back to Ringmaster and Slack.
|
||||
|
||||
**Stack:** Groovy (Jenkins Shared Library) · ArgoCD · Helm · GCP (GKE, GAR, GCS, Vault, Sonar) · AWS (EKS, ECR, S3)
|
||||
|
||||
## Dependencies
|
||||
|
||||
**push_to_jfrog**: By default master, main, gcp-main, and gcp-master branches push artifacts to jfrog/s3 repository, set this parameter to true to push artifacts from non-master branches
|
||||
|
||||
---
|
||||
|
||||
## config.yaml schema (consumer services)
|
||||
|
||||
Every service that uses this library must provide a `config.yaml`:
|
||||
|
||||
| Key | Required | Description |
|
||||
|-----|----------|-------------|
|
||||
| `repo_name` | yes | GitHub repo slug — must match exactly |
|
||||
| `build_tool` | yes | `maven`, `go`, `gradle`, `node-*`, `python-*`, `php`, `docker` |
|
||||
| `dockerBuildVersion` | yes | Drives Dockerfile template: `maven-21`, `go-1.22`, `node-20`, etc. |
|
||||
| `team` | yes | Team slug — validated against `buTeamMapping` |
|
||||
| `bu` | yes | Business unit: `supply`, `demand`, `central`, `dataengg`, `datascience`, `mcache`, `infra` |
|
||||
| `maintainer` | yes | GitHub handle for Slack notifications |
|
||||
| `deployment_order` | yes | List of ArgoCD application names to deploy |
|
||||
| `notify_channel` | no | Slack channel (default: `ci-cd-status`) |
|
||||
| `skip_sonar` | no | Whitelist-gated; see `constructParam.groovy` |
|
||||
| `deployArgo` | no | Set `false` to skip ArgoCD sync |
|
||||
| `appConfigEnabled` | no | Required `true` for `stg`; whitelist-gated |
|
||||
| `skip_test` | no | Skip unit tests (Maven) |
|
||||
| `push_to_jfrog` | no | Publish JAR to JFrog Artifactory |
|
||||
| `push_to_s3` | no | Push artifact to S3 |
|
||||
| `build_packages` | no | System development packages required while compiling (currently consumed by Rust builds; for example `libpq-dev`) |
|
||||
| `runtime_packages` | no | System runtime libraries required by the compiled binary (currently consumed by Rust builds; for example `libpq5`) |
|
||||
|
||||
## Adding this library to a new service
|
||||
|
||||
```groovy
|
||||
// Jenkinsfile
|
||||
@Library('devops-lib@main') _
|
||||
|
||||
eksCICD([
|
||||
repo_name: 'my-service'
|
||||
])
|
||||
```
|
||||
|
||||
Place `config.yaml` at the repo root with the required fields above.
|
||||
|
||||
## Adding a new build stage
|
||||
|
||||
1. Create `src/com/meesho/stages/build<Lang>.groovy` implementing `def run(Map config)`.
|
||||
2. Add a `case` in `src/com/meesho/stages/buildObjHelper.groovy`.
|
||||
3. Add a Dockerfile template in `resources/com/meesho/<lang>-Dockerfile` if needed.
|
||||
|
||||
Reference in New Issue
Block a user