Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: prefeiturasp/SME-PTRF-BackEnd
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 8.7.2
Choose a base ref
...
head repository: prefeiturasp/SME-PTRF-BackEnd
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
Showing 678 changed files with 36,892 additions and 5,402 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -72,6 +72,7 @@ celerybeat-schedule
venv/
ENV/
.back_venv
.venv3_11_6

# Rope project settings
.ropeproject
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM python:3.10-buster
FROM python:3.11-buster
ENV PYTHONUNBUFFERED 1
ADD . /code
WORKDIR /code
190 changes: 81 additions & 109 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -3,10 +3,13 @@ pipeline {
branchname = env.BRANCH_NAME.toLowerCase()
kubeconfig = getKubeconf(env.branchname)
registryCredential = 'jenkins_registry'
namespace = "${env.branchname == 'develop' ? 'sme-ptrf-dev' : env.branchname == 'homolog' ? 'sme-ptrf-hom' : env.branchname == 'homolog-r2' ? 'sme-ptrf-hom2' : 'sme-ptrf' }"
}
agent {
node { label 'AGENT-NODES' }
}
agent { kubernetes {
label 'builder'
defaultContainer 'builder'
}
}


options {
@@ -21,68 +24,56 @@ pipeline {
steps { checkout scm }
}

stage('Preparando BD') {
when { anyOf { branch 'master'; branch 'develop'; branch 'homolog-r2'; branch 'pre-release'; branch 'atualizarpython' } }
agent { label 'AGENT-NODES' }
steps {
sh '''
docker run -d --rm --cap-add SYS_TIME --name ptrf-db$BUILD_NUMBER$BRANCH_NAME --network python-network -p 5432 -e TZ="America/Sao_Paulo" -e POSTGRES_DB=ptrf -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres postgres:14-alpine
'''
}
}

stage('Istalando dependencias') {
when { anyOf { branch 'master'; branch 'develop'; branch 'homolog-r2'; branch 'pre-release'; branch 'atualizarpython' } }
agent { label 'AGENT-PYTHON310' }
stage('Testes Lint') {
when { anyOf { branch 'master'; branch 'develop'; branch 'homolog-r2'; branch 'pre-release'; branch 'atualizarpython_'; branch 'homolog_' } }
agent {
kubernetes {
label 'python311'
defaultContainer 'python311'
}
}
steps {
checkout scm
sh 'pip install --user pipenv -r requirements/local.txt'
}

}


stage('Testes Lint') {
when { anyOf { branch 'master'; branch 'develop'; branch 'homolog-r2'; branch 'pre-release'; branch 'atualizarpython' } }
agent { label 'AGENT-PYTHON310' }
steps {
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh 'pip install --user pipenv -r requirements/local.txt' //instalação das dependências
catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE') {
sh '''
export POSTGRES_HOST=ptrf-db$BUILD_NUMBER$BRANCH_NAME
pwd
export PATH=$PATH:/root/.local/bin
python manage.py collectstatic --noinput
flake8 --format=pylint --exit-zero --exclude migrations,__pycache__,manage.py,settings.py,.env,__tests__,tests --output-file=flake8-output.txt
flake8 --format=pylint --exit-zero --exclude migrations,__pycache__,manage.py,settings.py,.env,__tests__,tests --output-file=flake8-output.txt
'''
}
}
post {
success{
//Publicando arquivo de relatorio flake8
recordIssues(tools: [flake8(pattern: 'flake8-output.txt')])
}
}
}
}

}
}
stage('Testes Unitarios') {
when { anyOf { branch 'master'; branch 'develop'; branch 'homolog-r2'; branch 'pre-release'; branch 'atualizarpython' } }
agent { label 'AGENT-PYTHON310' }
when { anyOf { branch 'master'; branch 'develop'; branch 'homolog-r2'; branch 'pre-release'; branch 'atualizarpython_'; branch 'homolog_' } }
agent {
kubernetes {
label 'python311'
defaultContainer 'python311'
}
}
steps {
sh '''
export POSTGRES_HOST=ptrf-db$BUILD_NUMBER$BRANCH_NAME
coverage run -m pytest
checkout scm
sh 'pip install --user pipenv -r requirements/local.txt' //instalação das dependências
sh '''
export PATH=$PATH:/root/.local/bin
python manage.py collectstatic --noinput
coverage run -m pytest
coverage xml
'''
}
post {
success{
//Publicando arquivo de cobertura
publishCoverage adapters: [cobertura('coverage.xml')], sourceFileResolver: sourceFiles('NEVER_STORE')
}
}

}

stage('AnaliseCodigo') {
when { anyOf { branch 'master'; branch 'develop'; branch 'homolog-r2'; branch 'pre-release'; branch 'atualizarpython' } }
agent { label 'AGENT-PYTHON310' }
agent { kubernetes {
label 'python311'
defaultContainer 'builder'
}
}
steps {
withSonarQubeEnv('sonarqube-local'){
sh 'echo "[ INFO ] Iniciando analise Sonar..." && sonar-scanner \
@@ -98,16 +89,13 @@ pipeline {
steps {
script {
imagename1 = "registry.sme.prefeitura.sp.gov.br/${env.branchname}/ptrf-backend"
//imagename2 = "registry.sme.prefeitura.sp.gov.br/${env.branchname}/sme-outra"
dockerImage1 = docker.build(imagename1, "-f Dockerfile .")
//dockerImage2 = docker.build(imagename2, "-f Dockerfile_outro .")
docker.withRegistry( 'https://registry.sme.prefeitura.sp.gov.br', registryCredential ) {
dockerImage1.push()
//dockerImage2.push()

}
sh "docker rmi $imagename1"
//sh "docker rmi $imagename2"
}
}
}
}

@@ -117,84 +105,68 @@ pipeline {
script{
if ( env.branchname == 'main' || env.branchname == 'master' || env.branchname == 'homolog' || env.branchname == 'release' ) {

withCredentials([string(credentialsId: 'aprovadores-ptrf', variable: 'aprovadores')]) {
withCredentials([string(credentialsId: 'aprovadores-ptrf', variable: 'aprovadores')]) {
timeout(time: 24, unit: "HOURS") {
input message: 'Deseja realizar o deploy?', ok: 'SIM', submitter: "${aprovadores}"
}
}
}
withCredentials([file(credentialsId: "${kubeconfig}", variable: 'config')]){

if ( env.branchname == 'homolog-r2' ) {
sh('rm -f '+"$home"+'/.kube/config')
sh('cp $config '+"$home"+'/.kube/config')
sh 'kubectl rollout restart deployment/ptrf-backend -n sme-ptrf-hom2'
sh 'kubectl rollout restart deployment/ptrf-celery -n sme-ptrf-hom2'
sh 'kubectl rollout restart deployment/ptrf-flower -n sme-ptrf-hom2'
sh('rm -f '+"$home"+'/.kube/config')
}
else if( env.branchname == 'atualizarpython' ){
sh('rm -f '+"$home"+'/.kube/config')
if( env.branchname == 'atualizarpython' ){
sh('rm -f '+"$home"+'/.kube/config')
sh('cp $config '+"$home"+'/.kube/config')
sh 'kubectl rollout restart deployment/sigescolapre-backend -n sme-sigescola-pre'
sh 'kubectl rollout restart deployment/sigescolapre-celery -n sme-sigescola-pre'
sh 'kubectl rollout restart deployment/sigescolapre-flower -n sme-sigescola-pre'
sh('rm -f '+"$home"+'/.kube/config')
}
else {
sh('rm -f '+"$home"+'/.kube/config')
sh('rm -f '+"$home"+'/.kube/config')
} else {
sh('rm -f '+"$home"+'/.kube/config')
sh('cp $config '+"$home"+'/.kube/config')
sh 'kubectl rollout restart deployment/ptrf-backend -n sme-ptrf'
sh 'kubectl rollout restart deployment/ptrf-celery -n sme-ptrf'
sh 'kubectl rollout restart deployment/ptrf-flower -n sme-ptrf'
sh('rm -f '+"$home"+'/.kube/config')
}
}
sh "echo ${namespace}"
sh "kubectl rollout restart deployment/ptrf-backend -n ${namespace}"
sh "kubectl rollout restart deployment/ptrf-celery -n ${namespace}"
sh "kubectl rollout restart deployment/ptrf-flower -n ${namespace}"
}
}
}
}
}


stage('Deploy Ambientes'){
when { anyOf { branch 'master'; branch 'main' } }
parallel {
stage('Deploy Treino'){
stage('Deploy Treino'){
when { anyOf { branch 'master'; branch 'main' } }
steps {
sh 'kubectl rollout restart deployment/treinamento-backend -n sigescola-treinamento'
sh 'kubectl rollout restart deployment/treinamento-celery -n sigescola-treinamento'
sh 'kubectl rollout restart deployment/treinamento-flower -n sigescola-treinamento'
withCredentials([file(credentialsId: "config_release", variable: 'config')]){
sh('rm -f '+"$home"+'/.kube/config')
sh('cp $config '+"$home"+'/.kube/config')
sh 'kubectl rollout restart deployment/treinamento-backend -n sme-ptrf-treino'
sh 'kubectl rollout restart deployment/treinamento-celery -n sme-ptrf-treino'
sh 'kubectl rollout restart deployment/treinamento-flower -n sme-ptrf-treino'
sh('rm -f '+"$home"+'/.kube/config')
}
}

stage('Deploy Treinamento2'){
}
}
stage('Deploy QA'){
when { anyOf { branch 'homolog' } }
steps {
sh 'kubectl rollout restart deployment/treinamento-backend -n sigescola-treinamento2'
sh 'kubectl rollout restart deployment/treinamento-celery -n sigescola-treinamento2'
sh 'kubectl rollout restart deployment/treinamento-flower -n sigescola-treinamento2'
withCredentials([file(credentialsId: "config_release", variable: 'config')]){
sh('rm -f '+"$home"+'/.kube/config')
sh('cp $config '+"$home"+'/.kube/config')
sh 'kubectl rollout restart deployment/qa-backend -n sme-ptrf-qa'
sh('rm -f '+"$home"+'/.kube/config')
}
}

}
}
}
}
}
post {
always{
node('AGENT-NODES'){
//Limpando containers de banco
sh 'docker rm -f ptrf-db$BUILD_NUMBER$BRANCH_NAME'
}
}
}
}

def getKubeconf(branchName) {
if("main".equals(branchName)) { return "config_prd"; }
else if ("master".equals(branchName)) { return "config_prd"; }
else if ("homolog".equals(branchName)) { return "config_hom"; }
else if ("homolog-r2".equals(branchName)) { return "config_hom"; }
else if ("release".equals(branchName)) { return "config_hom"; }
else if ("development".equals(branchName)) { return "config_dev"; }
else if ("develop".equals(branchName)) { return "config_dev"; }
else if ("homolog".equals(branchName)) { return "config_release"; }
else if ("homolog-r2".equals(branchName)) { return "config_release"; }
else if ("release".equals(branchName)) { return "config_release"; }
else if ("development".equals(branchName)) { return "config_release"; }
else if ("develop".equals(branchName)) { return "config_release"; }
else if ("pre-release".equals(branchName)) { return "config_prd"; }
else if ("atualizarpython".equals(branchName)) { return "config_prd"; }
}
}
Loading