https://github.com/wesleysbmartins/node_with_jenkins
Este é um projeto de estudos onde a ideia é implementar uma esteira de CI/CD usando Jenkins, uma ferramenta de automação extremamente poderosa e conhecida no mercado.
https://github.com/wesleysbmartins/node_with_jenkins
docker github-webhooks javascript jenkins jest nodejs
Last synced: 3 months ago
JSON representation
Este é um projeto de estudos onde a ideia é implementar uma esteira de CI/CD usando Jenkins, uma ferramenta de automação extremamente poderosa e conhecida no mercado.
- Host: GitHub
- URL: https://github.com/wesleysbmartins/node_with_jenkins
- Owner: wesleysbmartins
- Created: 2024-11-14T15:08:19.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-11-22T17:14:24.000Z (over 1 year ago)
- Last Synced: 2025-01-24T14:15:52.219Z (over 1 year ago)
- Topics: docker, github-webhooks, javascript, jenkins, jest, nodejs
- Language: JavaScript
- Homepage:
- Size: 51.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# NodeJs with Jekins [](https://skillicons.dev)
Este é um projeto de estudos onde a ideia é implementar uma esteira de CI/CD usando Jenkins, uma ferramenta de automação extremamente poderosa e conhecida no mercado.
Temos uma aplicação simples, que é um servidor REST que recebe requisições e as retorna um resultado de sucesso. Com a implementação de testes usando Jest e o encapsulamento da aplicação em um container do Docker.
A ideia é que a cada merge na minha branch master a Pipeline seja executada, onde eu uso o GitHub Webhook para disparar uma request ao meu servidor do Jenkins e ele é resposável por iniciar a Pipeline, onde a esteira de CI/CD do Jenkins realiza a validação da versão, executa os testes e em caso de sucesso uma nova versão é colocada em produção.
Explore o meu **Jenkinsfile** para entender na prática o que esta sendo executado na minha pipeline.
```groovy
pipeline {
agent any
tools {
nodejs 'NodeJS'
}
stages {
stage('Checkout') {
steps {
git branch: 'master', url: 'https://github.com/wesleysbmartins/node_with_jenkins.git'
}
}
stage('Install Dependencies') {
steps {
bat 'npm install'
}
}
stage('Tests') {
steps {
bat 'npm test'
}
}
stage('Build Docker Image') {
steps {
script {
def imageName = 'node_with_jenkins:latest'
echo "Building Docker image: ${imageName}"
bat "docker build -t ${imageName} ."
}
}
}
stage('Deploy') {
steps {
script {
def containerName = 'node_with_jenkins_container'
def imageName = 'node_with_jenkins:latest'
echo "Stopping and removing existing container, if any"
bat "docker stop ${containerName} || echo 'No container to stop'"
bat "docker rm ${containerName} || echo 'No container to remove'"
echo "Deploying new container"
bat "docker run -d --name ${containerName} -p 5050:5050 ${imageName}"
}
}
}
}
post {
success {
echo 'Pipeline completed successfully!'
}
failure {
echo 'Pipeline failed. Check logs for details.'
}
}
}
```