Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
2 TRY

Example Voting App
=========

Expand Down
23 changes: 23 additions & 0 deletions result/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM node:22.4.0-slim

# Install curl for health checks and tini for process management
RUN apt-get update && \
apt-get install -y --no-install-recommends curl tini && \
rm -rf /var/lib/apt/lists/*

WORKDIR /usr/local/app

# Install nodemon for development (optional)
RUN npm install -g nodemon

COPY package*.json ./
RUN npm ci && \
npm cache clean --force && \
mv /usr/local/app/node_modules /node_modules

COPY . .
ENV PORT 80
EXPOSE 80

ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["node", "server.js"]
84 changes: 84 additions & 0 deletions result/Jenkinsfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
pipeline {
agent none

stages {
stage("build") {
when {
changeset "**/worker/**"
}
agent {
docker {
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}
steps {
echo 'Compiling worker app..'
dir('worker') {
sh 'mvn compile'
}
}
}

stage("test") {
when {
changeset "**/worker/**"
}
agent {
docker {
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}
steps {
echo 'Running Unit Tests on worker app..'
dir('worker') {
sh 'mvn clean test'
}
}
}

stage("package") {
when {
branch 'master'
changeset "**/worker/**"
}
agent {
docker {
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}
steps {
echo 'Packaging worker app'
dir('worker') {
sh 'mvn package -DskipTests'
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
}
}
}

stage('docker-package') {
agent any
when {
branch 'master'
changeset "**/result/**"
}
steps {
script {
docker.withRegistry('https://index.docker.io/v1/', 'dockerlogin') {
def resultImage = docker.build("norahns/result:v${env.BUILD_ID}", "./result")
resultImage.push()
resultImage.push("latest")
}
}
}
}
}

post {
always {
echo 'Building multibranch pipeline for worker is completed..'
}
}
}
38 changes: 38 additions & 0 deletions result/Jenkinsfile.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
pipeline {
agent any
tools {
maven 'maven 3.9.8'
}
stages {
stage("build") {
steps {
echo 'Compiling worker app..'
dir('worker') {
sh 'mvn compile'
}
}
}
stage("test") {
steps {
echo 'Running Unit Tests on worker app..'
dir('worker') {
sh 'mvn clean test'
}
}
}
stage("package") {
steps {
echo 'Packaging worker app'
dir('worker') {
sh 'mvn package -DskipTests'
}
}
}
}
post {
always {
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
echo 'Building multibranch pipeline for worker is completed..'
}
}
}
1 change: 1 addition & 0 deletions result/test/mock.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ describe('mock test 5', () => {
});
});


describe('mock test 6', () => {
it('unit test 6', () => {
expect(true).to.be.true;
Expand Down
22 changes: 22 additions & 0 deletions vote/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM python:3.11-slim AS base

# Install curl for health checks
RUN apt-get update && \
apt-get install -y --no-install-recommends curl && \
rm -rf /var/lib/apt/lists/*

WORKDIR /usr/local/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# Development stage (optional)
FROM base AS dev
RUN pip install watchdog
ENV FLASK_ENV=development
CMD ["python", "app.py"]

# Production stage
FROM base AS final
COPY . .
EXPOSE 80
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:80", "--log-file", "-", "--access-logfile", "-", "--workers", "4", "--keep-alive", "0"]
6 changes: 6 additions & 0 deletions worker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM maven:3.9.8-sapmachine-21
WORKDIR /app
COPY . .
RUN mvn package && \
mv target/worker-jar-with-dependencies.jar /run/worker.jar && rm -rf /app/*
CMD ["java", "-jar", "/run/worker.jar"]
89 changes: 89 additions & 0 deletions worker/Jenkinsfile.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
pipeline {

agent none

stages{
stage("build"){
when{
changeset "**/worker/**"
}

agent{
docker{
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}

steps{
echo 'Compiling worker app..'
dir('worker'){
sh 'mvn compile'
}
}
}
stage("test"){
when{
changeset "**/worker/**"
}
agent{
docker{
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}
steps{
echo 'Running Unit Tets on worker app..'
dir('worker'){
sh 'mvn clean test'
}

}
}
stage("package"){
when{
branch 'master'
changeset "**/worker/**"
}
agent{
docker{
image 'maven:3.9.8-sapmachine-21'
args '-v $HOME/.m2:/root/.m2'
}
}
steps{
echo 'Packaging worker app'
dir('worker'){
sh 'mvn package -DskipTests'
archiveArtifacts artifacts: '**/target/*.jar', fingerprint: true
}

}
}

stage('docker-package'){
agent any
when{
changeset "**/worker/**"
branch 'master'
}
steps{
echo 'Packaging worker app with docker'
script{
docker.withRegistry('https://index.docker.io/v1/', 'dockerlogin') {
def workerImage = docker.build("norahns/worker:v${env.BUILD_ID}", "./worker")
workerImage.push()
workerImage.push("${env.BRANCH_NAME}")
workerImage.push("latest")
}
}
}
}
}

post{
always{
echo 'Building multibranch pipeline for worker is completed..'
}
}
}