From a2ae16fec39ecaf6e8ffa3ab0af4f42d2e1c6d0c Mon Sep 17 00:00:00 2001 From: kimscott Date: Mon, 3 Feb 2020 15:12:49 +0900 Subject: [PATCH] =?UTF-8?q?azure=20pipeline=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- azure-pipelines.yml | 144 ++++++++++++++++++++++++++++++++++++++++ kubernetes/deploy.yaml | 16 +++++ kubernetes/service.yaml | 12 ++++ 3 files changed, 172 insertions(+) create mode 100644 azure-pipelines.yml create mode 100644 kubernetes/deploy.yaml create mode 100644 kubernetes/service.yaml diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..cd6d729 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,144 @@ +# 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: 'product' +- 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) + secretType: 'dockerRegistry' + containerRegistryType: 'Azure Container Registry' diff --git a/kubernetes/deploy.yaml b/kubernetes/deploy.yaml new file mode 100644 index 0000000..cc0b9f9 --- /dev/null +++ b/kubernetes/deploy.yaml @@ -0,0 +1,16 @@ +apiVersion : apps/v1beta1 +kind: Deployment +metadata: + name: product +spec: + replicas: 1 + template: + metadata: + labels: + app: product + spec: + containers: + - name: product + image: myeventstormingregistry.azurecr.io/product + ports: + - containerPort: 8080 \ No newline at end of file diff --git a/kubernetes/service.yaml b/kubernetes/service.yaml new file mode 100644 index 0000000..fdeeef3 --- /dev/null +++ b/kubernetes/service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: product + labels: + app: product +spec: + ports: + - port: 8080 + targetPort: 8080 + selector: + app: product \ No newline at end of file