diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
new file mode 100644
index 00000000..5670fa30
--- /dev/null
+++ b/.devcontainer/Dockerfile
@@ -0,0 +1,8 @@
+ARG DOCKER_BASE_IMAGE="ubuntu:latest"
+FROM ${DOCKER_BASE_IMAGE}
+
+RUN apt update
+
+
+ENTRYPOINT ["tail", "-f", "/dev/null"]
+
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 00000000..c55e9ac3
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,15 @@
+{
+ "name": "Spring Framework Petclinic",
+ "build": {
+ "dockerfile": "Dockerfile",
+ "context": ".",
+ "args": {
+ "USERNAME": "${localEnv:USER}"
+ }
+ },
+ "containerEnv": {
+ "USER": "${localEnv:USER}"
+ }
+
+
+}
diff --git a/.pipelines/lib/app/jobs/build/build.yml b/.pipelines/lib/app/jobs/build/build.yml
new file mode 100644
index 00000000..593d930f
--- /dev/null
+++ b/.pipelines/lib/app/jobs/build/build.yml
@@ -0,0 +1,36 @@
+parameters:
+- name: APP
+ type: object
+
+- name: PUBLISH
+ type: boolean
+ default: True
+steps:
+
+- ${{ if ne(parameters.APP.build.setup_env, 'none') }}:
+ - template: ${{ parameters.APP.build.setup_env }}
+
+- task: Maven@3
+ inputs:
+ mavenPomFile: 'simple-java-project/pom.xml'
+ mavenOptions: '-Xmx3072m'
+ javaHomeOption: 'JDKVersion'
+ jdkVersionOption: '1.8'
+ jdkArchitectureOption: 'x64'
+ mavenAuthenticateFeed: true
+ publishJUnitResults: false
+ testResultsFiles: '**/surefire-reports/TEST-*.xml'
+ goals: 'deploy'
+
+- task: CopyFiles@2
+ displayName: Copy Artifacts from local to staging
+ inputs:
+ SourceFolder: $(Build.Repository.LocalPath)/target
+ Contents: '*.war'
+ TargetFolder: $(Build.ArtifactStagingDirectory)/${{ parameters.APP.name }}
+
+- ${{ if eq(parameters.PUBLISH, 'True') }}:
+ - publish: '$(Build.ArtifactStagingDirectory)/${{ parameters.APP.name }}'
+ artifact: BUILD_${{ parameters.APP.name }}
+ displayName: Publish Artifacts ${{ parameters.APP.name }}
+
\ No newline at end of file
diff --git a/.pipelines/lib/app/stages/build/build.yml b/.pipelines/lib/app/stages/build/build.yml
new file mode 100644
index 00000000..79027170
--- /dev/null
+++ b/.pipelines/lib/app/stages/build/build.yml
@@ -0,0 +1,22 @@
+parameters:
+- name: APP
+ type: object
+stages:
+- stage: build_${{ parameters.APP.name }}
+ displayName: BuildJavaApp
+ jobs:
+ - job: build_${{ parameters.APP.name }}
+ pool:
+ name: $[ variables.${{ parameters.APP.build.pool }}]
+ workspace:
+ clean: all
+ container: default_image
+ condition: eq(${{ parameters.APP.build.enabled }}, 'true')
+ steps:
+ - checkout: self
+ clean: true
+ submodules: recursive
+ #path: $(code_repo_name)
+ - template: ../../jobs/build/build.yml
+ parameters:
+ APP: ${{ parameters.APP }}
\ No newline at end of file
diff --git a/.pipelines/lib/custom/jobs/build/setup_build_env.yml b/.pipelines/lib/custom/jobs/build/setup_build_env.yml
new file mode 100644
index 00000000..fcfae9ce
--- /dev/null
+++ b/.pipelines/lib/custom/jobs/build/setup_build_env.yml
@@ -0,0 +1,6 @@
+steps:
+- bash: |
+ cd /scripts
+ chmod +x script.sh
+ ./script.sh
+ displayName: Setup env for Maven
\ No newline at end of file
diff --git a/.pipelines/production/pr_develop.yml b/.pipelines/production/pr_develop.yml
new file mode 100644
index 00000000..a916a197
--- /dev/null
+++ b/.pipelines/production/pr_develop.yml
@@ -0,0 +1,42 @@
+# Maven
+# Build your Java project and run tests with Apache Maven.
+# Add steps that analyze code, save build artifacts, deploy, and more:
+# https://docs.microsoft.com/azure/devops/pipelines/languages/java
+
+trigger: none
+pr:
+ branches:
+ include:
+ - main
+parameters:
+ - name: DOCKER_BUILD_IMAGE
+ displayName: Docker image
+ type: string
+ default: 'gnishanth777/spring:1.8.0'
+ - name: JAVA_APP
+ displayName: JavaApp
+ type: object
+ default:
+ - name: javaApp
+ build:
+ enabled: true
+ setup_env: ../../custom/jobs/build/setup_build_env.yml
+ docker_image: default_image
+ pool: default_pool
+
+
+resources:
+ containers:
+ - container: default_image
+ image: ${{ parameters.DOCKER_BUILD_IMAGE }}
+variables:
+- name: default_pool
+ value: 'Azure Pipelines'
+stages:
+- ${{ each app in parameters.JAVA_APP }}:
+ - template: ../lib/app/stages/build/build.yml
+ parameters:
+ APP: ${{ app }}
+
+
+
diff --git a/.pipelines/vars/global_variables.yml b/.pipelines/vars/global_variables.yml
new file mode 100644
index 00000000..38c1087b
--- /dev/null
+++ b/.pipelines/vars/global_variables.yml
@@ -0,0 +1,3 @@
+variables:
+ code_repo_name: simple-java-project
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 19f98e41..06600f84 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,6 +6,18 @@
works-with-heroku
1.0
war
+
+
+ artifacts
+ https://pkgs.dev.azure.com/udz1kor/azurepipelinestest/_packaging/artifacts/maven/v1
+
+ true
+
+
+ true
+
+
+
javax.servlet