@genesisx/jenkins
v4.0.1-beta0.1
Published
This Generator enables Easy and quick way to setup jenkins pipeline for the project.
Downloads
19
Maintainers
Keywords
Readme
Genesis - jenkins package
This package will add a Jenkinsfile template to the root of your project that can serve as a starting point for a CI/CD pipeline. It comprises of followig stages
- Checkout
- Prepare
- Lint
- UnitTest
- Build
- Docker
- Deployment
Usage
Prerequsite
For Using this package into your app, please follow the below steps
- Install this npm package to your repo first
yarn add @genesisx/jenkins
- or
npm install @genesisx/jenkins
- Now follow the either of the two modes to use this generator
Via NX Console
- Goto nx console -> Genrate > search for @genesisx/jenkins - template
Use Nx Console > Genrate > @genesisx/jenkins:template
Fill the form as below which will be entered into your jenkins file atomatically
- credentialsID * Enter your credentials ID
- directory
Path of the directory in which the jenkinsfile will be placed - gitWorkFlow Git workflow for use with Jenkins files
- name The name of the project that will be used in the Jenkinsfile.
- namespace This is the namespace that will be utilised in the Jenkinsfile.
- passwordVariable This is the password that will be utilised in the Jenkinsfile.
- registry This is the registry that will be utilised in the Jenkinsfile.
- releaseName This is the releaseName that will be utilised in the Jenkinsfile.
- usernameVariable
This is the usernameVariable that will be utilised in the Jenkinsfile. - version This is the version that will be utilised in the Jenkinsfile.
- This will create a file JenkinsFile with the above entered configuration.
Via Command line
Alternatively, below command can be used
nx generate @genesisx/jenkins:template
Fill the required parameters asked after that
e.g
- Suppose you have generated a new react applicationw ithname myReactApp ,
- Run below commands
nx generate @genesisx/jenkins:template
✔ What project name would you like to use? myReactApp
✔ Which directory would you like to create the Jenkinsfile in? /
✔ What version would you like to use? 2.3.1
✔ What namespace would you like to use? myReactApp
✔ What release name would you like to use? BetaRelease
✔ What Git workflow name would you like to use? gitflow
✔ What registry would you like to use? npm
✔ What credentials ID would you like to use? ssh
✔ What password would you like to use? abcdef
✔ What username would you like to use? usernameabc
CREATE Jenkinsfile
``
- You can validate the Jenkinsfile at the root of your workspace, you can now customize it
## Build Stages
### Checkout
This stage setup git modules and checkout code merge is possible for feature & master branch
### Prepare
This stage setup the base modules needed by respective projects for subsequent stages.
### Lint & UnitTest
These Stages runs linting and unit test check against config made in the projects.eg files: jest.config.js, .eslintrc.json
### Build & Docker
These stages build the apps and create docker images for affected applications and publish those images to artefactory store. '''here PS docker registry been used'''
### Deployment
This stage leverage the k8 config in each apps to deploy app to infra configured in those files. i.e: ingress,service, deployment yaml.
## Note
By leveraging nx framework we are able to make pipeline optimised in easier way to run affected apps. eg:
'''yarn nx affected:apps --all'''
## Documentation
- Refer additional [documentation](https://genesis.pscloudhub.com/documentation/docs/jenkinsfile-info) for more details
## Contribution
### Build and Test
Run `nx build jenkins` to build the package.
Run `nx lint jenkins` to run lint checks on the package.
Run `nx test jenkins` to execute the unit tests via [Jest](https://jestjs.io).
## Publishing
To publish the package you must first be logged into NPM (npm login) then run this command from the root of the project.
- Make sure the package name in package.json should start with @genesisx/
- Also use the correct version number in package.json same will be used for the published package.
- Use your NPM js credentials (Publicis Sapient) with publish rights
- Verify the package at https://www.npmjs.com/settings/genesisx/packages
npm publish dist/packages/jenkins --access public