Listings Söldner/Wessendorf, Azure-Tutorial Teil 2

Listing 1: Verzeichnis initialisieren und Code hochladen
cd <<Verzeichnis mit Quellcode>>
git init
git remote add origin https://user@dev.azure.com/project/rep/_git/xxx
git add .
git commit -m "Initial commit"
git push -u origin –all
Password for 'https://xxxx@dev.azure.com':

Counting objects: 34, done.
Delta compression using up to 4 threads.
…
Branch 'master' set up to track remote branch 'master' from 'origin'.

----------

Listing 2: XML-Dokument der Spring-Boot-Anwendung
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.3.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>de.myberechnungsservice</groupId>
    <artifactId>spring-boot-example</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Spring Boot Example</name>
    <description>A Spring Boot basic application which can be used as template</description>

    <properties>
      <java.version>11</java.version>
    </properties>

    <dependencies>
      <!-- spring boot -->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
...
    </dependencies>
</project>

----------

Listing 3: Build Stage der Pipeline
trigger:
- master

stages:
- stage: Build
    displayName: Build stage
    jobs:
    - job: Build
      displayName: Build
      pool:
        vmImage: 'ubuntu-latest'
      steps:
      - task: Maven@3
        inputs:
          mavenPomFile: 'pom.xml'
          mavenOptions: '-Xmx3072m'
          javaHomeOption: 'JDKVersion'
          jdkVersionOption: '1.11'
          jdkArchitectureOption: 'x64'
          publishJUnitResults: true
          testResultsFiles: '**/surefire-reports/TEST-*.xml'
          goals: 'clean package'

----------

Listing 4: npm-Task der Pipeline hinzufügen
- task: Npm@1
  displayName: 'npm install'
  inputs:
    command: install
    workingDir: src/angular7

- task: Npm@1
  displayName: 'Build Angular'
  inputs:
    command: custom
    customCommand: run build -- --prod
    workingDir: src/angular7

----------

Listing 5: Pipeline um eine Task ergänzen
- task: Docker@2
  inputs:
    containerRegistry: 'MyBerechnungsServiceConnection'
    repository: 'myberechnungsservice'
    command: 'buildAndPush'
      Dockerfile: '**/Dockerfile'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.SourcesDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

----------

Listing 6: Die Task des Deployments
- task: KubernetesManifest@0
  displayName: Create imagePullSecret
  inputs:
    action: createSecret
    secretName: $(imagePullSecret)
    dockerRegistryEndpoint: 'MyBerechnungsServiceConnection'

----------

Listing 7: Deployment in den Cluster
- task: KubernetesManifest@0
  displayName: Deploy to Kubernetes cluster
  inputs:
    action: deploy
    manifests: |
      $(Pipeline.Workspace)/manifests/deployment.yml
      $(Pipeline.Workspace)/manifests/service.yml
    imagePullSecrets: |
      $(imagePullSecret)
    containers: |
      MyBerechnungsServiceConnection/myberechnungsservice:$(tag)






