azure pipeline 추가
This commit is contained in:
10
DockerfileAutoBuild
Normal file
10
DockerfileAutoBuild
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
FROM maven:3.5.2-jdk-8-alpine AS MAVEN_TOOL_CHAIN
|
||||||
|
COPY pom.xml /tmp/
|
||||||
|
COPY src /tmp/src/
|
||||||
|
WORKDIR /tmp/
|
||||||
|
RUN mvn package -B
|
||||||
|
|
||||||
|
FROM openjdk:8u212-jdk-alpine
|
||||||
|
COPY --from=MAVEN_TOOL_CHAIN /tmp/target/*.jar app.jar
|
||||||
|
EXPOSE 8080
|
||||||
|
ENTRYPOINT ["java","-Xmx400M","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=docker"]
|
||||||
146
azure-pipelines.yml
Normal file
146
azure-pipelines.yml
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
# Deploy to Azure Kubernetes Service
|
||||||
|
# Build and push image to Azure Container Registry; Deploy to Azure Kubernetes Service
|
||||||
|
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- master
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- repo: self
|
||||||
|
|
||||||
|
variables:
|
||||||
|
- group: common-value
|
||||||
|
# containerRegistry: 'event.azurecr.io'
|
||||||
|
# containerRegistryDockerConnection: 'acr'
|
||||||
|
# environment: 'aks.default'
|
||||||
|
- name: imageRepository
|
||||||
|
value: 'gateway'
|
||||||
|
- name: dockerfilePath
|
||||||
|
value: '**/Dockerfile'
|
||||||
|
- name: tag
|
||||||
|
value: '$(Build.BuildId)'
|
||||||
|
# Agent VM image name
|
||||||
|
- name: vmImageName
|
||||||
|
value: 'ubuntu-latest'
|
||||||
|
- name: MAVEN_CACHE_FOLDER
|
||||||
|
value: $(Pipeline.Workspace)/.m2/repository
|
||||||
|
- name: MAVEN_OPTS
|
||||||
|
value: '-Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)'
|
||||||
|
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: Build
|
||||||
|
displayName: Build stage
|
||||||
|
jobs:
|
||||||
|
- job: Build
|
||||||
|
displayName: Build
|
||||||
|
pool:
|
||||||
|
vmImage: $(vmImageName)
|
||||||
|
steps:
|
||||||
|
- task: Cache@2
|
||||||
|
inputs:
|
||||||
|
key: 'maven | "$(Agent.OS)" | **/pom.xml'
|
||||||
|
restoreKeys: |
|
||||||
|
maven | "$(Agent.OS)"
|
||||||
|
maven
|
||||||
|
path: $(MAVEN_CACHE_FOLDER)
|
||||||
|
displayName: Cache Maven local repo
|
||||||
|
- task: Maven@3
|
||||||
|
inputs:
|
||||||
|
mavenPomFile: 'pom.xml'
|
||||||
|
options: '-Dmaven.test.skip=true -Dmaven.repo.local=$(MAVEN_CACHE_FOLDER)'
|
||||||
|
javaHomeOption: 'JDKVersion'
|
||||||
|
jdkVersionOption: '1.8'
|
||||||
|
jdkArchitectureOption: 'x64'
|
||||||
|
goals: 'package'
|
||||||
|
- task: CopyFiles@2
|
||||||
|
inputs:
|
||||||
|
SourceFolder: '$(system.defaultworkingdirectory)'
|
||||||
|
Contents: |
|
||||||
|
**/*.jar
|
||||||
|
Dockerfile
|
||||||
|
kubernetes/*
|
||||||
|
TargetFolder: '$(build.artifactstagingdirectory)'
|
||||||
|
- task: PublishBuildArtifacts@1
|
||||||
|
inputs:
|
||||||
|
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
||||||
|
ArtifactName: 'artifact'
|
||||||
|
publishLocation: 'Container'
|
||||||
|
- task: Docker@2
|
||||||
|
inputs:
|
||||||
|
containerRegistry: $(containerRegistryDockerConnection)
|
||||||
|
repository: $(imageRepository)
|
||||||
|
command: 'buildAndPush'
|
||||||
|
Dockerfile: '**/Dockerfile'
|
||||||
|
tags: |
|
||||||
|
$(tag)
|
||||||
|
|
||||||
|
- stage: Deploy
|
||||||
|
displayName: Deploy stage
|
||||||
|
dependsOn: Build
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- deployment: Deploy
|
||||||
|
displayName: Deploy
|
||||||
|
pool:
|
||||||
|
vmImage: $(vmImageName)
|
||||||
|
environment: $(environment)
|
||||||
|
strategy:
|
||||||
|
runOnce:
|
||||||
|
deploy:
|
||||||
|
steps:
|
||||||
|
- task: Kubernetes@1
|
||||||
|
inputs:
|
||||||
|
connectionType: 'Kubernetes Service Connection'
|
||||||
|
namespace: 'default'
|
||||||
|
command: 'apply'
|
||||||
|
useConfigurationFile: true
|
||||||
|
configurationType: 'inline'
|
||||||
|
inline: |
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: $(imageRepository)
|
||||||
|
labels:
|
||||||
|
app: $(imageRepository)
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: $(imageRepository)
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: $(imageRepository)
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: $(imageRepository)
|
||||||
|
image: $(containerRegistry)/$(imageRepository):$(tag)
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
secretType: 'dockerRegistry'
|
||||||
|
containerRegistryType: 'Azure Container Registry'
|
||||||
|
- task: Kubernetes@1
|
||||||
|
inputs:
|
||||||
|
connectionType: 'Kubernetes Service Connection'
|
||||||
|
namespace: 'default'
|
||||||
|
command: 'apply'
|
||||||
|
useConfigurationFile: true
|
||||||
|
configurationType: 'inline'
|
||||||
|
inline: |
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: $(imageRepository)
|
||||||
|
labels:
|
||||||
|
app: $(imageRepository)
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 8080
|
||||||
|
targetPort: 8080
|
||||||
|
selector:
|
||||||
|
app: $(imageRepository)
|
||||||
|
type:
|
||||||
|
LoadBalancer
|
||||||
|
secretType: 'dockerRegistry'
|
||||||
|
containerRegistryType: 'Azure Container Registry'
|
||||||
Reference in New Issue
Block a user