Skip to content

Commit 586a1a1

Browse files
authored
Add official build yml files (#759)
1 parent 10a363d commit 586a1a1

File tree

4 files changed

+336
-0
lines changed

4 files changed

+336
-0
lines changed

eng/ci/official-build.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
trigger:
2+
batch: true
3+
branches:
4+
include:
5+
- dev
6+
- release/* # azure-functions-java-worker github repo restricts creation of release/* branches, so using a pattern is safe here.
7+
8+
# CI only, does not trigger on PRs.
9+
pr: none
10+
11+
resources:
12+
repositories:
13+
- repository: 1es
14+
type: git
15+
name: 1ESPipelineTemplates/1ESPipelineTemplates
16+
ref: refs/tags/release
17+
- repository: eng
18+
type: git
19+
name: engineering
20+
ref: refs/tags/release
21+
22+
variables:
23+
- template: ci/variables/build.yml@eng
24+
- template: ci/variables/cfs.yml@eng
25+
26+
extends:
27+
template: v1/1ES.Official.PipelineTemplate.yml@1es
28+
parameters:
29+
pool:
30+
name: 1es-pool-azfunc
31+
image: 1es-windows-2022
32+
os: windows
33+
34+
stages:
35+
- stage: Build
36+
37+
jobs:
38+
- template: /eng/ci/templates/official/jobs/build-artifacts.yml@self
39+
40+
- stage: TestWindows
41+
dependsOn: Build
42+
43+
jobs:
44+
- template: /eng/ci/templates/official/jobs/run-e2e-tests-windows.yml@self
45+
46+
- stage: TestLinux
47+
dependsOn:
48+
- Build
49+
- TestWindows
50+
51+
jobs:
52+
- template: /eng/ci/templates/official/jobs/run-e2e-tests-linux.yml@self
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
jobs:
2+
- job: "Build"
3+
displayName: 'Build java worker'
4+
5+
templateContext:
6+
outputParentDirectory: $(Build.ArtifactStagingDirectory)
7+
outputs:
8+
- output: pipelineArtifact
9+
targetPath: $(Build.ArtifactStagingDirectory)
10+
artifactName: 'buildDrop'
11+
- output: nuget
12+
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/dev'), eq(variables['UPLOADPACKAGETOPRERELEASEFEED'], true))
13+
useDotNetTask: false
14+
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
15+
packageParentPath: '$(Build.ArtifactStagingDirectory)'
16+
publishVstsFeed: 'e6a70c92-4128-439f-8012-382fe78d6396/f37f760c-aebd-443e-9714-ce725cd427df'
17+
nuGetFeedType: 'internal'
18+
allowPackageConflicts: true
19+
20+
pool:
21+
name: 1es-pool-azfunc
22+
image: 1es-windows-2022
23+
os: windows
24+
25+
variables:
26+
${{ if contains(variables['Build.SourceBranch'], '/tags/' ) }}:
27+
isTagTemp: true
28+
isTag: $[variables.isTagTemp]
29+
30+
steps:
31+
- task: NuGetToolInstaller@1
32+
inputs:
33+
checkLatest: true
34+
displayName: 'Install NuGet Tool'
35+
- pwsh: |
36+
Get-Command mvn
37+
displayName: 'Check Maven is installed'
38+
- pwsh: |
39+
java -version
40+
displayName: 'Check default java version'
41+
- pwsh: |
42+
if ("$(isTag)"){
43+
$buildNumber="$(Build.SourceBranchName)"
44+
Write-Host "Found git tag."
45+
}
46+
else {
47+
$buildNumber="$(Build.BuildNumber)-v4"
48+
Write-Host "git tag not found. Setting package suffix to '$buildNumber'"
49+
}
50+
Write-Host "##vso[task.setvariable variable=buildNumber;isOutput=true;]$buildNumber"
51+
.\package-pipeline.ps1 -buildNumber $buildNumber
52+
name: output
53+
displayName: 'Executing build script'
54+
- pwsh: |
55+
mvn dependency-check:check
56+
condition: and(eq(variables['Build.SourceBranch'], 'refs/heads/dev'), eq(variables['SkipMavenDependencyCheck'], 'false'))
57+
displayName: 'Maven dependency check'
58+
- task: CopyFiles@2
59+
inputs:
60+
SourceFolder: '$(Build.Repository.LocalPath)/pkg'
61+
Contents: '*.nupkg'
62+
TargetFolder: '$(Build.ArtifactStagingDirectory)'
63+
CleanTargetFolder: true
64+
displayName: 'Copying files for artifacts'
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
jobs:
2+
- job: "TestLinux"
3+
displayName: 'Test java worker - Linux'
4+
5+
pool:
6+
name: 1es-pool-azfunc
7+
image: 1es-ubuntu-22.04
8+
os: linux
9+
10+
variables:
11+
buildNumber: $[ stageDependencies.Build.Build.outputs['output.buildNumber'] ]
12+
ApplicationInsightAgentVersion: 3.5.1
13+
14+
strategy:
15+
maxParallel: 1
16+
matrix:
17+
open-jdk-8-linux:
18+
JDK_DOWNLOAD_LINK: 'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u392-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u392b08.tar.gz'
19+
JAVA_VERSION: 'OpenJDK8U-jdk_x64_linux_hotspot_8u392b08'
20+
JDK_PATH: 'jdk8u392-b08'
21+
JAVA_VERSION_SPEC: '8'
22+
microsoft-open-jdk-11-linux:
23+
JDK_DOWNLOAD_LINK: 'https://aka.ms/download-jdk/microsoft-jdk-11.0.21-linux-x64.tar.gz'
24+
JAVA_VERSION: 'microsoft-jdk-11.0.21-linux-x64'
25+
JDK_PATH: 'jdk-11.0.21+9'
26+
JAVA_VERSION_SPEC: '11'
27+
microsoft-open-jdk-17-linux:
28+
JDK_DOWNLOAD_LINK: 'https://aka.ms/download-jdk/microsoft-jdk-17.0.9-linux-x64.tar.gz'
29+
JAVA_VERSION: 'microsoft-jdk-17.0.9-linux-x64'
30+
JDK_PATH: 'jdk-17.0.9+8'
31+
JAVA_VERSION_SPEC: '17'
32+
microsoft-open-jdk-21-linux:
33+
JDK_DOWNLOAD_LINK: 'https://aka.ms/download-jdk/microsoft-jdk-21.0.1-linux-x64.tar.gz'
34+
JAVA_VERSION: 'microsoft-jdk-21.0.1-linux-x64'
35+
JDK_PATH: 'jdk-21.0.1+12'
36+
JAVA_VERSION_SPEC: '21'
37+
38+
steps:
39+
- task: NuGetToolInstaller@1
40+
inputs:
41+
checkLatest: true
42+
displayName: 'Install NuGet Tool'
43+
- pwsh: |
44+
Get-Command mvn
45+
displayName: 'Check Maven is installed'
46+
- task: JavaToolInstaller@0 # This step is necessary as Linux image has Java 11 as default
47+
inputs:
48+
versionSpec: '8'
49+
jdkArchitectureOption: 'x64'
50+
jdkSourceOption: 'PreInstalled'
51+
displayName: 'Setup Java for Linux'
52+
- pwsh: |
53+
java -version
54+
displayName: 'Check default java version'
55+
- pwsh: |
56+
.\package-pipeline.ps1 -buildNumber $(buildNumber)
57+
displayName: 'Executing build script'
58+
- task: UseDotNet@2
59+
displayName: 'Install .NET 6'
60+
inputs:
61+
version: 6.0.x
62+
- pwsh: | # Download JDK for later installation
63+
Invoke-WebRequest $(JDK_DOWNLOAD_LINK) -OutFile "$(JAVA_VERSION).tar.gz"
64+
$current = get-location | select -ExpandProperty Path
65+
Write-Host "##vso[task.setvariable variable=downloadPath;]$current"
66+
displayName: 'Download jdk for Linux'
67+
- task: JavaToolInstaller@0 # Install JDK downloaded from previous task
68+
inputs:
69+
versionSpec: $(JAVA_VERSION_SPEC)
70+
jdkArchitectureOption: 'x64'
71+
jdkSourceOption: LocalDirectory
72+
jdkFile: "$(downloadPath)/$(JAVA_VERSION).tar.gz"
73+
jdkDestinationDirectory: "$(downloadPath)/externals"
74+
cleanDestinationDirectory: true
75+
displayName: 'Setup Java for Linux'
76+
- pwsh: |
77+
.\setup-tests-pipeline.ps1
78+
displayName: 'Setup test environment -- Install the Core Tools'
79+
- bash: |
80+
chmod +x ./Azure.Functions.Cli/func
81+
chmod +x ./Azure.Functions.Cli/gozip
82+
export PATH=$PATH:./Azure.Functions.Cli
83+
func --version
84+
displayName: 'Setup Core Tools - Linux'
85+
- pwsh: |
86+
cd ./endtoendtests
87+
mvn clean package `-Dmaven`.javadoc`.skip=true `-Dmaven`.test`.skip `-Dorg`.slf4j`.simpleLogger`.log`.org`.apache`.maven`.cli`.transfer`.Slf4jMavenTransferListener=warn `-B
88+
Copy-Item "confluent_cloud_cacert.pem" "./target/azure-functions/azure-functions-java-endtoendtests"
89+
displayName: 'Package Java for E2E'
90+
- task: DotNetCoreCLI@2
91+
inputs:
92+
command: 'test'
93+
projects: |
94+
endtoendtests/Azure.Functions.Java.Tests.E2E/Azure.Functions.Java.Tests.E2E/Azure.Functions.Java.Tests.E2E.csproj
95+
env:
96+
JAVA_HOME: $(JavaHome)
97+
AzureWebJobsStorage: $(AzureWebJobsStorage)
98+
AzureWebJobsCosmosDBConnectionString: $(AzureWebJobsCosmosDBConnectionString)
99+
AzureWebJobsSqlConnectionString: $(AzureWebJobsSqlConnectionString)
100+
AzureWebJobsServiceBus: $(AzureWebJobsServiceBus)
101+
AzureWebJobsEventHubReceiver: $(AzureWebJobsEventHubReceiver)
102+
AzureWebJobsEventHubSender_2: $(AzureWebJobsEventHubSender_2)
103+
AzureWebJobsEventHubSender: $(AzureWebJobsEventHubSender)
104+
AzureWebJobsEventHubPath: $(AzureWebJobsEventHubPath)
105+
SBTopicName: $(SBTopicName)
106+
SBTopicSubName: $(SBTopicSubName)
107+
CosmosDBDatabaseName: $(CosmosDBDatabaseName)
108+
SBQueueName: $(SBQueueName)
109+
BrokerList": $(BrokerList)
110+
ConfluentCloudUsername: $(ConfluentCloudUsername)
111+
ConfluentCloudPassword: $(ConfluentCloudPassword)
112+
AzureWebJobsEventGridOutputBindingTopicUriString: $(AzureWebJobsEventGridOutputBindingTopicUriString)
113+
AzureWebJobsEventGridOutputBindingTopicKeyString: $(AzureWebJobsEventGridOutputBindingTopicKeyString)
114+
ApplicationInsightAPIKey: $(ApplicationInsightAPIKey)
115+
ApplicationInsightAPPID: $(ApplicationInsightAPPID)
116+
ApplicationInsightAgentVersion: $(ApplicationInsightAgentVersion)
117+
displayName: 'Build & Run tests'
118+
continueOnError: false
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
jobs:
2+
- job: "TestWindows"
3+
displayName: 'Test java worker - Windows'
4+
5+
pool:
6+
name: 1es-pool-azfunc
7+
image: 1es-windows-2022
8+
os: windows
9+
10+
variables:
11+
buildNumber: $[ stageDependencies.Build.Build.outputs['output.buildNumber'] ]
12+
ApplicationInsightAgentVersion: 3.5.1
13+
14+
strategy:
15+
maxParallel: 1
16+
matrix:
17+
open-jdk-8-windows:
18+
JDK_DOWNLOAD_LINK: 'https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u392-b08/OpenJDK8U-jdk_x64_windows_hotspot_8u392b08.zip'
19+
JAVA_VERSION: 'OpenJDK8U-jdk_x64_windows_hotspot_8u392b08'
20+
JDK_PATH: 'jdk8u392-b08'
21+
microsoft-open-jdk-11-windows:
22+
JDK_DOWNLOAD_LINK: 'https://aka.ms/download-jdk/microsoft-jdk-11.0.21-windows-x64.zip'
23+
JAVA_VERSION: 'microsoft-jdk-11.0.21-windows-x64'
24+
JDK_PATH: 'jdk-11.0.21+9'
25+
microsoft-open-jdk-17-windows:
26+
JDK_DOWNLOAD_LINK: 'https://aka.ms/download-jdk/microsoft-jdk-17.0.9-windows-x64.zip'
27+
JAVA_VERSION: 'microsoft-jdk-17.0.9-windows-x64'
28+
JDK_PATH: 'jdk-17.0.9+8'
29+
microsoft-open-jdk-21-windows:
30+
JDK_DOWNLOAD_LINK: 'https://aka.ms/download-jdk/microsoft-jdk-21.0.1-windows-x64.zip'
31+
JAVA_VERSION: 'microsoft-jdk-21.0.1-windows-x64'
32+
JDK_PATH: 'jdk-21.0.1+12'
33+
34+
steps:
35+
- task: NuGetToolInstaller@1
36+
inputs:
37+
checkLatest: true
38+
displayName: 'Install NuGet Tool'
39+
- pwsh: |
40+
Get-Command mvn
41+
displayName: 'Check Maven is installed'
42+
- pwsh: |
43+
java -version
44+
displayName: 'Check default java version'
45+
- pwsh: |
46+
.\package-pipeline.ps1 -buildNumber $(buildNumber)
47+
displayName: 'Executing build script'
48+
- task: UseDotNet@2
49+
displayName: 'Install .NET 6'
50+
inputs:
51+
version: 6.0.x
52+
- pwsh: |
53+
Invoke-WebRequest $(JDK_DOWNLOAD_LINK) -OutFile "$(JAVA_VERSION).zip"
54+
Expand-Archive -Force "$(JAVA_VERSION).zip" .
55+
cd $(JDK_PATH)
56+
$current = get-location | select -ExpandProperty Path
57+
cd ..
58+
Write-Host "##vso[task.setvariable variable=JavaHome;]$current"
59+
displayName: 'Download and setup Java for Windows'
60+
61+
- pwsh: |
62+
.\setup-tests-pipeline.ps1
63+
displayName: 'Setup test environment -- Install the Core Tools'
64+
- pwsh: |
65+
$currDir = Get-Location
66+
$Env:Path = $Env:Path+";$currDir/Azure.Functions.Cli"
67+
func --version
68+
displayName: 'Setup Core Tools - Windows'
69+
- pwsh: |
70+
cd ./endtoendtests
71+
mvn clean package `-Dmaven`.javadoc`.skip=true `-Dmaven`.test`.skip `-Dorg`.slf4j`.simpleLogger`.log`.org`.apache`.maven`.cli`.transfer`.Slf4jMavenTransferListener=warn `-B
72+
Copy-Item "confluent_cloud_cacert.pem" "./target/azure-functions/azure-functions-java-endtoendtests"
73+
displayName: 'Package Java for E2E'
74+
- task: DotNetCoreCLI@2
75+
inputs:
76+
command: 'test'
77+
projects: |
78+
endtoendtests/Azure.Functions.Java.Tests.E2E/Azure.Functions.Java.Tests.E2E/Azure.Functions.Java.Tests.E2E.csproj
79+
env:
80+
JAVA_HOME: $(JavaHome)
81+
AzureWebJobsStorage: $(AzureWebJobsStorage)
82+
AzureWebJobsCosmosDBConnectionString: $(AzureWebJobsCosmosDBConnectionString)
83+
AzureWebJobsSqlConnectionString: $(AzureWebJobsSqlConnectionString)
84+
AzureWebJobsServiceBus: $(AzureWebJobsServiceBus)
85+
AzureWebJobsEventHubReceiver: $(AzureWebJobsEventHubReceiver)
86+
AzureWebJobsEventHubSender_2: $(AzureWebJobsEventHubSender_2)
87+
AzureWebJobsEventHubSender: $(AzureWebJobsEventHubSender)
88+
AzureWebJobsEventHubPath: $(AzureWebJobsEventHubPath)
89+
SBTopicName: $(SBTopicName)
90+
SBTopicSubName: $(SBTopicSubName)
91+
CosmosDBDatabaseName: $(CosmosDBDatabaseName)
92+
SBQueueName: $(SBQueueName)
93+
BrokerList": $(BrokerList)
94+
ConfluentCloudUsername: $(ConfluentCloudUsername)
95+
ConfluentCloudPassword: $(ConfluentCloudPassword)
96+
AzureWebJobsEventGridOutputBindingTopicUriString: $(AzureWebJobsEventGridOutputBindingTopicUriString)
97+
AzureWebJobsEventGridOutputBindingTopicKeyString: $(AzureWebJobsEventGridOutputBindingTopicKeyString)
98+
ApplicationInsightAPIKey: $(ApplicationInsightAPIKey)
99+
ApplicationInsightAPPID: $(ApplicationInsightAPPID)
100+
ApplicationInsightAgentVersion: $(ApplicationInsightAgentVersion)
101+
displayName: 'Build & Run tests'
102+
continueOnError: false

0 commit comments

Comments
 (0)