144 lines
4.6 KiB
Groovy
144 lines
4.6 KiB
Groovy
pipeline {
|
|
agent any
|
|
|
|
parameters {
|
|
booleanParam(name: 'DeployAll', defaultValue: false, description: 'Deploy Site/WS ?')
|
|
booleanParam(name: 'deploySite', defaultValue: false, description: 'Deploy Site ?')
|
|
}
|
|
|
|
triggers {
|
|
pollSCM('* * * * *')
|
|
}
|
|
|
|
environment {
|
|
now = new Date().format('yyyyMMdd-HHmm', TimeZone.getTimeZone('UTC'))
|
|
DOCKER_HOST = 'tcp://192.168.2.20:2375'
|
|
DOCKER_TAG = "${env.BUILD_ID}"
|
|
DOCKER_REGISTRY = 'Shini89' //'your-docker-registry.com' // Registro Docker
|
|
|
|
REACT_DIR = 'geradoresfe'
|
|
REACT_DOCKER_IMAGE = 'geradoresfe:lastest'
|
|
|
|
SERVICE_DIR = 'GeradoresService'
|
|
API_DIR = 'GeradoresWS'
|
|
API_DOCKER_IMAGE = 'geradoresws:lastest'
|
|
}
|
|
|
|
stages {
|
|
stage('Validate Docker Connection') {
|
|
steps {
|
|
script {
|
|
echo "Validando conexão com Docker remoto: ${DOCKER_HOST}"
|
|
// Testa a conexão com o Docker remoto
|
|
sh "docker info"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Check for Changes') {
|
|
steps {
|
|
script {
|
|
CodeChanges = currentBuild.changeSets != []
|
|
if (CodeChanges) {
|
|
def changeLogSets = currentBuild.changeSets
|
|
for (int i = 0; i < changeLogSets.size(); i++) {
|
|
def entries = changeLogSets[i].items
|
|
for (int j = 0; j < entries.length; j++) {
|
|
def entry = entries[j]
|
|
message = message + "<br>Autor: ${entry.author.fullName} ( ${entry.author} ) <br> Commit: ${entry.msg}"
|
|
def files = new ArrayList(entry.affectedFiles)
|
|
message = message + '<br>Ficheiros:<br><ul>'
|
|
for (int k = 0; k < files.size(); k++) {
|
|
def file = files[k]
|
|
message = message + "<li> ${file.path} ( ${file.editType.name} ) </li>"
|
|
}
|
|
message = message + '</ul>'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Checkout Code') {
|
|
steps {
|
|
git branch: 'master', url: 'https://git.homeware.pt/Marco/Geradores.git'
|
|
}
|
|
}
|
|
/*******************************************************
|
|
Stage BUILD
|
|
*******************************************************/
|
|
stage('Build DLL') {
|
|
steps {
|
|
dir("${env.SERVICE_DIR}") {
|
|
sh 'dotnet build -c Release'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Build WS') {
|
|
steps {
|
|
dir("${env.API_DIR}") {
|
|
sh 'dotnet build -c Release'
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Build WS Docker Image') {
|
|
steps {
|
|
// Construir a imagem Docker do Backend usando o Dockerfile existente
|
|
script {
|
|
docker.build("${API_DOCKER_IMAGE}", "-f Fe/Dockerfile .")
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Build React') {
|
|
steps {
|
|
dir("${env.REACT_DIR}") {
|
|
sh 'npm install'
|
|
sh 'npm run build'
|
|
|
|
/*
|
|
sh """
|
|
docker build -t ${env.DOCKER_REGISTRY}/react-frontend:latest .
|
|
docker push ${env.DOCKER_REGISTRY}/react-frontend:latest
|
|
"""*/
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Build React Docker Image') {
|
|
steps {
|
|
dir("${env.REACT_DIR}") {
|
|
script {
|
|
docker.build("${env.REACT_DOCKER_IMAGE}", ".")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Push Docker Images') {
|
|
steps {
|
|
script {
|
|
// Fazer login no Docker Hub (ou outro registro Docker)
|
|
sh 'docker login -u Shini89 -p Spongebob!1'
|
|
|
|
// Publicar as imagens
|
|
sh "docker push ${env.API_DOCKER_IMAGE}"
|
|
sh "docker push ${env.REACT_DOCKER_IMAGE}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success {
|
|
echo 'Services deployed successfully!'
|
|
sh 'docker system prune -f'
|
|
}
|
|
failure {
|
|
echo 'Failed to deploy services. Check logs.'
|
|
}
|
|
}
|
|
}
|