Skip to content

Commit d8be988

Browse files
authored
Add ADO pipeline (#99)
1 parent 37ec8b8 commit d8be988

4 files changed

+228
-0
lines changed

JavaJobTemplate.yml

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# JOB LEVEL TEMPLATE:
2+
# Used to build JavaScript
3+
# Reusable
4+
# Meant to be run from the single JavaScriptTemplate pipeline (default), or
5+
# from a multi-pipeline such as publishing (should specify alternate params)
6+
7+
parameters:
8+
- name: ApiSpecSource
9+
displayName: ApiSpecSource
10+
type: string
11+
default: -apiSpecGitUrl https://raw.githubusercontent.com/PlayFab/API_Specs/master/
12+
- name: CommitMessage
13+
displayName: CommitMessage
14+
type: string
15+
default: Automated build from ADO Pipeline
16+
- name: GitDestBranch
17+
displayName: GitDestBranch
18+
type: string
19+
default: doNotCommit
20+
- name: GitJSetupBranch
21+
displayName: GitJSetupBranch
22+
type: string
23+
default: master
24+
- name: GitSdkGenBranch
25+
displayName: GitSdkGenBranch
26+
type: string
27+
default: master
28+
- name: isVersioned
29+
displayName: isVersioned
30+
type: boolean
31+
default: false
32+
- name: TestServer
33+
displayName: TestServer
34+
default: false
35+
- name: SelfTemplateResource
36+
displayName: SelfTemplateResource
37+
type: string
38+
default: self
39+
40+
jobs:
41+
- job: JavaJobTemplate
42+
steps:
43+
- bash: echo JavaJobTemplate
44+
- job: JavaTemplate
45+
pool:
46+
vmImage: 'windows-latest'
47+
steps:
48+
- template: JavaStepTemplate.yml
49+
parameters:
50+
ApiSpecSource: ${{ parameters.ApiSpecSource }}
51+
CommitMessage: ${{ parameters.CommitMessage }}
52+
GitDestBranch: ${{ parameters.GitDestBranch }}
53+
GitJSetupBranch: ${{ parameters.GitJSetupBranch }}
54+
GitSdkGenBranch: ${{ parameters.GitSdkGenBranch }}
55+
isVersioned: ${{ parameters.isVersioned }}
56+
TestServer: ${{ parameters.TestServer }}
57+
SelfTemplateResource: ${{ parameters.SelfTemplateResource }}

JavaResourceTemplate.yml

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# TOP LEVEL TEMPLATE:
2+
# Can only be used to run the single JavaTemplate pipeline.
3+
# Why: Resources can only be defined once.
4+
# This determines the resources available to all "jobs" and "steps" no matter which templates are loaded after this
5+
# If resources is ever defined again, it'll break so badly that the pipeline won't even parse
6+
7+
resources:
8+
repositories:
9+
- repository: JenkinsSdkSetupScripts
10+
type: github
11+
endpoint: GitHub_PlayFab
12+
name: PlayFab/JenkinsSdkSetupScripts
13+
- repository: API_Specs
14+
type: github
15+
endpoint: GitHub_PlayFab
16+
name: PlayFab/API_Specs
17+
- repository: SdkGenerator
18+
type: github
19+
endpoint: GitHub_PlayFab
20+
name: PlayFab/SdkGenerator
21+
- repository: JavaSDK
22+
endpoint: GitHub_PlayFab
23+
type: github
24+
name: PlayFab/JavaSDK
25+
26+
jobs:
27+
- job: JavaResourceTemplate
28+
steps:
29+
- bash: echo JavaResourceTemplate
30+
- template: JavaJobTemplate.yml

JavaStepTemplate.yml

+133
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# STEPS LEVEL TEMPLATE:
2+
# Used to build Java
3+
# Reusable
4+
# Used to "hide" the additional variables specific to this SDK which shouldn't be set from a higher level, or
5+
# shared from a multi-build pipeline like a publish
6+
7+
parameters:
8+
- name: ApiSpecSource
9+
displayName: ApiSpecSource
10+
type: string
11+
default: -apiSpecGitUrl https://raw.githubusercontent.com/PlayFab/API_Specs/master/
12+
- name: CommitMessage
13+
displayName: CommitMessage
14+
type: string
15+
default: Automated build from ADO Pipeline
16+
- name: GitDestBranch
17+
displayName: GitDestBranch
18+
type: string
19+
default: doNotCommit
20+
- name: SdkName
21+
displayName: SdkName
22+
type: string
23+
default: JavaSDK
24+
- name: GitJSetupBranch
25+
displayName: GitJSetupBranch
26+
type: string
27+
default: master
28+
- name: GitSdkGenBranch
29+
displayName: GitSdkGenBranch
30+
type: string
31+
default: master
32+
- name: isVersioned
33+
displayName: isVersioned
34+
type: boolean
35+
default: false
36+
- name: TestServer
37+
displayName: TestServer
38+
default: false
39+
- name: SelfTemplateResource
40+
displayName: SelfTemplateResource
41+
type: string
42+
default: self
43+
44+
steps:
45+
- checkout: JenkinsSdkSetupScripts
46+
clean: true
47+
path: s
48+
- checkout: API_Specs
49+
clean: true
50+
path: s/API_Specs
51+
- checkout: SdkGenerator
52+
clean: true
53+
path: s/SdkGenerator
54+
- checkout: ${{ parameters.SelfTemplateResource }}
55+
clean: true
56+
submodules: true
57+
path: s/sdks/JavaSDK
58+
persistCredentials: true
59+
- bash: |
60+
set -e
61+
62+
echo alias the ADO variables into local variables
63+
ApiSpecSource="${{ parameters.ApiSpecSource }}"
64+
CommitMessage="${{ parameters.CommitMessage }}"
65+
GitDestBranch="${{ parameters.GitDestBranch }}"
66+
SdkName="${{ parameters.SdkName }}"
67+
TestServer="${{ parameters.TestServer }}"
68+
WORKSPACE=$(pwd -W)
69+
# Hack attempt to get WORKSPACE into a sub-environment
70+
export WORKSPACE="$WORKSPACE"
71+
72+
cd "$WORKSPACE/sdks/$SdkName"
73+
74+
. "$WORKSPACE/JenkinsSdkSetupScripts/JenkinsScripts/Pipeline/testInit.sh"
75+
76+
echo === Delete previous builds ===
77+
if [-d "$WORKSPACE/sdks/$SdkName/builds" ]; then
78+
cd "$WORKSPACE/sdks/$SdkName/builds"
79+
rm *.jar /F /Q || true
80+
fi
81+
82+
cd "$WORKSPACE/SDKGenerator/SDKBuildScripts"
83+
. ./shared_build.sh
84+
85+
echo === Build the Java Project ===
86+
cd "$WORKSPACE/sdks/"$SdkName"/PlayFabSDK"
87+
export PF_TEST_TITLE_DATA_JSON="$WORKSPACE\JenkinsSdkSetupScripts\Creds\testTitleData.json"
88+
./packageMe.sh
89+
90+
cd "$WORKSPACE/sdks/$SdkName/PlayFabClientSDK"
91+
./packageMe.sh
92+
93+
if [ "$TestServer" = "true" ]; then
94+
echo === testing server ===
95+
cd "$WORKSPACE/sdks/$SdkName/PlayFabServerSDK"
96+
./deploy.sh
97+
fi
98+
99+
if [ "$isVersioned" = "true" ]; then
100+
echo === publish to maven ===
101+
cd "$WORKSPACE/sdks/$SdkName/"
102+
103+
# =========== MANUAL BUILD NOTES ==========
104+
# This step ALWAYS ALWAYS ALWAYS requires a human on RDP
105+
# gpg-agent
106+
# Two options:
107+
# gpg-agent[<Process ID>]: gpg-agent running and available
108+
# gpg-agent[<Process ID>]: no gpg-agent running in this session
109+
# If it's already been started under the Jenkins service, it'll hang forever for no reason
110+
# Run this:
111+
# gpgconf --kill gpg-agent
112+
# Then, restart it manually via RDP
113+
# gpg -K
114+
# If you run it with a cmd prompt, from a keyboard, it will allow the password prompt to appear, when you run these commands:
115+
116+
pushd "PlayFabClientSDK"
117+
mvn clean deploy -e -X -P release && mvn nexus-staging:release
118+
popd
119+
120+
pushd "PlayFabSDK"
121+
mvn clean deploy -e -X -P release && mvn nexus-staging:release
122+
popd
123+
124+
pushd "PlayFabServerSDK"
125+
mvn clean deploy -e -X -P release && mvn nexus-staging:release
126+
popd
127+
fi
128+
displayName: 'Build/Test/Report'
129+
- task: PublishTestResults@2
130+
inputs:
131+
testResultsFormat: 'JUnit'
132+
testResultsFiles: '*.xml'
133+
testRunTitle: JavaTemplate

azure-pipelines.yml

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
pool:
2+
vmImage: 'ubuntu-latest'
3+
4+
trigger:
5+
- master
6+
7+
extends:
8+
template: JavaResourceTemplate.yml

0 commit comments

Comments
 (0)