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