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
For Using this package into your app, please follow the below steps
- Install this npm package to your repo first
yarn add @genesisx/jenkins
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
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.
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
- 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