Jenkins&Docker로 Python의 유닛 테스트를 깨끗한 환경에서 실행할 수 있도록 했다.
개요
이전, Jenkins&Docker로 깨끗한 Angular6 앱의 빌드 환경을 구축해 보았다.에서 빌드 환경을 깨끗하게 해보고, 그럼 유닛 테스트도 깨끗한 환경에서 할 수 있도록 하려고 생각했기 때문에 해 본 이야기.
이번 대상은 Python으로, PEP8에서 정적 해석, nosetests로 유닛 테스트를 실시해, 결과를 Jenkins상에 출력했다.
전제
환경은 Angular6를 빌드하게 한 Jenkins를 재사용한다.
OS
Amazon Linux 2(ami-a9d09ed1)
Jenkins
jenkins.noarch-2.121.2-1.1
도커
docker-ce-18.06.0
git
git-2.9.5
Jenkins-plugin
WarningsPublisher
Jenkins-plugin
CoberturaPublisher
Jenkins-plugin
JUnitResultArchiver
설정 내용
이번 이용하는 프로젝트는, https://github.com/domenkozar/nose-selecttests를 포크했습니다.
여기, htps : // 기주 b. 코 m / 타츠 아키미 타니 / 노 세세 C
Dockerfile
Dockerfile의 내용은 이쪽.
Dockerfile.buildFROM centos:7
# Install Python and Node.js
RUN yum install -y https://centos7.iuscommunity.org/ius-release.rpm epel-release
RUN yum install -y wget unzip iproute python36u python36u-libs python36u-devel python36u-pip nodejs npm java
# Install tools
RUN pip3.6 install pyyaml boto3
RUN pip3.6 install flake8 nose coverage
ENV EXEC_ENV=TEXT
Jenkinsfile 설정
Jenkinsfile의 내용은 이쪽.
pipeline {
environment {
docker_image_name = "python3-unittests"
}
agent {
dockerfile {
filename 'Dockerfile.build'
dir '.'
label env.docker_image_name
}
}
stages {
stage('静的解析') {
steps {
parallel(
'Pep8': {
dir('.') {
script {
sh 'flake8 . --select=E101,E113,E125,E129,E304,E7,F4,F8,N8 --max-line-length=120 || true'
}
step([
$class: 'WarningsPublisher',
consoleParsers: [
[parserName: 'Pep8']
]
])
}
}
)
}
}
stage('ユニットテスト') {
steps {
script {
dir('.') {
sh 'nosetests -v --with-xunit --with-coverage --cover-inclusive --cover-erase --cover-tests --cover-branches --cover-xml --cover-package=functional_tests,noseselecttests || true'
}
}
step([
$class: 'JUnitResultArchiver',
testResults: 'nosetests.xml'
])
step([
$class: 'CoberturaPublisher',
autoUpdateHealth: false,
autoUpdateStability: false,
coberturaReportFile: 'coverage.xml',
failUnhealthy: false,
failUnstable: false,
maxNumberOfBuilds: 0,
onlyStable: false,
zoomCoverageChart: false
])
archiveArtifacts 'nosetests.xml'
archiveArtifacts 'coverage.xml'
}
}
}
}
Jenkins 작업 설정
파이프라인을 선택합니다.
파이프라인 설정에서 [Pipeline script from SCM]⇒[Git]⇒[]를 입력하고 [완료] 버튼을 클릭합니다.
작업 실행
작업 실행이 성공하면, 다음과 같이 파이프 라인 결과 및 커버리지가 출력된다.
또, 복수회 실행하면 처음으로 PEP8과 테스트 결과, 커버리지의 그래프가 표시가 출현하는 것을 알 수 있다.
끝.
Reference
이 문제에 관하여(Jenkins&Docker로 Python의 유닛 테스트를 깨끗한 환경에서 실행할 수 있도록 했다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tatsuakimitani/items/7eb72295f01bdcad7060
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
환경은 Angular6를 빌드하게 한 Jenkins를 재사용한다.
OS
Amazon Linux 2(ami-a9d09ed1)
Jenkins
jenkins.noarch-2.121.2-1.1
도커
docker-ce-18.06.0
git
git-2.9.5
Jenkins-plugin
WarningsPublisher
Jenkins-plugin
CoberturaPublisher
Jenkins-plugin
JUnitResultArchiver
설정 내용
이번 이용하는 프로젝트는, https://github.com/domenkozar/nose-selecttests를 포크했습니다.
여기, htps : // 기주 b. 코 m / 타츠 아키미 타니 / 노 세세 C
Dockerfile
Dockerfile의 내용은 이쪽.
Dockerfile.buildFROM centos:7
# Install Python and Node.js
RUN yum install -y https://centos7.iuscommunity.org/ius-release.rpm epel-release
RUN yum install -y wget unzip iproute python36u python36u-libs python36u-devel python36u-pip nodejs npm java
# Install tools
RUN pip3.6 install pyyaml boto3
RUN pip3.6 install flake8 nose coverage
ENV EXEC_ENV=TEXT
Jenkinsfile 설정
Jenkinsfile의 내용은 이쪽.
pipeline {
environment {
docker_image_name = "python3-unittests"
}
agent {
dockerfile {
filename 'Dockerfile.build'
dir '.'
label env.docker_image_name
}
}
stages {
stage('静的解析') {
steps {
parallel(
'Pep8': {
dir('.') {
script {
sh 'flake8 . --select=E101,E113,E125,E129,E304,E7,F4,F8,N8 --max-line-length=120 || true'
}
step([
$class: 'WarningsPublisher',
consoleParsers: [
[parserName: 'Pep8']
]
])
}
}
)
}
}
stage('ユニットテスト') {
steps {
script {
dir('.') {
sh 'nosetests -v --with-xunit --with-coverage --cover-inclusive --cover-erase --cover-tests --cover-branches --cover-xml --cover-package=functional_tests,noseselecttests || true'
}
}
step([
$class: 'JUnitResultArchiver',
testResults: 'nosetests.xml'
])
step([
$class: 'CoberturaPublisher',
autoUpdateHealth: false,
autoUpdateStability: false,
coberturaReportFile: 'coverage.xml',
failUnhealthy: false,
failUnstable: false,
maxNumberOfBuilds: 0,
onlyStable: false,
zoomCoverageChart: false
])
archiveArtifacts 'nosetests.xml'
archiveArtifacts 'coverage.xml'
}
}
}
}
Jenkins 작업 설정
파이프라인을 선택합니다.
파이프라인 설정에서 [Pipeline script from SCM]⇒[Git]⇒[]를 입력하고 [완료] 버튼을 클릭합니다.
작업 실행
작업 실행이 성공하면, 다음과 같이 파이프 라인 결과 및 커버리지가 출력된다.
또, 복수회 실행하면 처음으로 PEP8과 테스트 결과, 커버리지의 그래프가 표시가 출현하는 것을 알 수 있다.
끝.
Reference
이 문제에 관하여(Jenkins&Docker로 Python의 유닛 테스트를 깨끗한 환경에서 실행할 수 있도록 했다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tatsuakimitani/items/7eb72295f01bdcad7060
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
FROM centos:7
# Install Python and Node.js
RUN yum install -y https://centos7.iuscommunity.org/ius-release.rpm epel-release
RUN yum install -y wget unzip iproute python36u python36u-libs python36u-devel python36u-pip nodejs npm java
# Install tools
RUN pip3.6 install pyyaml boto3
RUN pip3.6 install flake8 nose coverage
ENV EXEC_ENV=TEXT
pipeline {
environment {
docker_image_name = "python3-unittests"
}
agent {
dockerfile {
filename 'Dockerfile.build'
dir '.'
label env.docker_image_name
}
}
stages {
stage('静的解析') {
steps {
parallel(
'Pep8': {
dir('.') {
script {
sh 'flake8 . --select=E101,E113,E125,E129,E304,E7,F4,F8,N8 --max-line-length=120 || true'
}
step([
$class: 'WarningsPublisher',
consoleParsers: [
[parserName: 'Pep8']
]
])
}
}
)
}
}
stage('ユニットテスト') {
steps {
script {
dir('.') {
sh 'nosetests -v --with-xunit --with-coverage --cover-inclusive --cover-erase --cover-tests --cover-branches --cover-xml --cover-package=functional_tests,noseselecttests || true'
}
}
step([
$class: 'JUnitResultArchiver',
testResults: 'nosetests.xml'
])
step([
$class: 'CoberturaPublisher',
autoUpdateHealth: false,
autoUpdateStability: false,
coberturaReportFile: 'coverage.xml',
failUnhealthy: false,
failUnstable: false,
maxNumberOfBuilds: 0,
onlyStable: false,
zoomCoverageChart: false
])
archiveArtifacts 'nosetests.xml'
archiveArtifacts 'coverage.xml'
}
}
}
}
Reference
이 문제에 관하여(Jenkins&Docker로 Python의 유닛 테스트를 깨끗한 환경에서 실행할 수 있도록 했다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tatsuakimitani/items/7eb72295f01bdcad7060텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)