Skip to content

Commit 2752af3

Browse files
authored
Merge pull request #46 from atom-ide-community/CI_templates
2 parents 2a0260d + ef45a89 commit 2752af3

File tree

12 files changed

+353
-447
lines changed

12 files changed

+353
-447
lines changed

script/vsts/nightly-release.yml

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,7 @@ jobs:
3535
ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ]
3636

3737
steps:
38-
- task: NodeTool@0
39-
inputs:
40-
versionSpec: 12.13.1
41-
displayName: Install Node.js 12.13.1
38+
- template: platforms/templates/preparation.yml
4239

4340
#This has to be done separately because VSTS inexplicably
4441
#exits the script block after `npm install` completes.
@@ -74,23 +71,15 @@ jobs:
7471
vmImage: macos-10.14
7572

7673
steps:
77-
- task: NodeTool@0
78-
inputs:
79-
versionSpec: 12.13.1
80-
displayName: Install Node.js 12.13.1
74+
- template: platforms/templates/preparation.yml
8175

82-
- script: npm install --global [email protected]
83-
displayName: Update npm
76+
- template: platforms/templates/bootstrap.yml
8477

85-
- script: |
86-
script/bootstrap
87-
displayName: Bootstrap
88-
89-
- script: |
78+
- script: |
9079
cd script/lib
9180
npm install
9281
displayName: npm install
93-
- script: |
82+
- script: |
9483
cd script/lib/update-dependency
9584
node index.js
9685
displayName: Bump depedencies

script/vsts/platforms/linux.yml

Lines changed: 17 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -7,105 +7,32 @@ jobs:
77
pool:
88
# This image is used to host the Docker container that runs the build
99
vmImage: ubuntu-16.04
10-
container: ubuntu:trusty
1110

1211
steps:
13-
- script: |
14-
sudo apt-get update
15-
sudo apt-get install -y wget software-properties-common
16-
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
17-
sudo apt-add-repository "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main"
18-
sudo apt-get update
19-
sudo apt-get install -y build-essential ca-certificates clang-5.0 xvfb fakeroot git libsecret-1-dev rpm libx11-dev libxkbfile-dev xz-utils xorriso zsync libxss1 libgconf2-4 libgtk-3-0 libasound2 libicu-dev
20-
displayName: Install apt dependencies
12+
- template: templates/preparation.yml
2113

22-
- script: sudo /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16
23-
displayName: Start Xvfb
24-
25-
- task: NodeTool@0
26-
inputs:
27-
versionSpec: 12.13.1
28-
displayName: Install Node.js 12.13.1
29-
30-
- script: npm install --global [email protected]
31-
displayName: Update npm
32-
33-
- template: cache.yml
14+
- template: templates/cache.yml
3415
parameters:
3516
OS: linux
3617

37-
- script: script/bootstrap
38-
displayName: Bootstrap build environment
39-
env:
40-
CI: true
41-
CI_PROVIDER: VSTS
42-
CC: clang-5.0
43-
CXX: clang++-5.0
44-
npm_config_clang: 1
45-
condition: or(ne(variables['MainNodeModulesRestored'], 'true'), ne(variables['ScriptNodeModulesRestored'], 'true'), ne(variables['ApmNodeModulesRestored'], 'true'))
18+
- template: templates/bootstrap.yml
4619

4720
- script: script/lint
4821
displayName: Run linter
49-
50-
- script: script/build --no-bootstrap --create-debian-package --create-rpm-package --compress-artifacts
51-
env:
52-
GITHUB_TOKEN: $(GITHUB_TOKEN)
53-
ATOM_RELEASE_VERSION: $(ReleaseVersion)
54-
CC: clang-5.0
55-
CXX: clang++-5.0
56-
npm_config_clang: 1
57-
displayName: Build Atom
58-
59-
- script: |
60-
sudo chown root ./out/atom*-amd64/chrome-sandbox
61-
sudo chmod 4755 ./out/atom*-amd64/chrome-sandbox
62-
displayName: Tweaking chrome-sandbox binary
6322

64-
- script: script/test
65-
env:
66-
CI: true
67-
CI_PROVIDER: VSTS
68-
ATOM_JASMINE_REPORTER: list
69-
TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit
70-
DISPLAY: :99.0
71-
displayName: Run tests
72-
condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true'))
23+
- template: templates/build.yml
7324

74-
- script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml"
75-
env:
76-
TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit
77-
displayName: Post-process test results
78-
condition: ne(variables['Atom.SkipTests'], 'true')
25+
- template: templates/test.yml
7926

80-
- task: PublishTestResults@2
81-
inputs:
82-
testResultsFormat: JUnit
83-
searchFolder: $(Common.TestResultsDirectory)/junit
84-
testResultsFiles: '**/*.xml'
85-
mergeTestResults: true
86-
testRunTitle: Linux
87-
condition: ne(variables['Atom.SkipTests'], 'true')
88-
89-
- task: PublishBuildArtifacts@1
90-
inputs:
91-
PathtoPublish: $(Build.SourcesDirectory)/out/atom.x86_64.rpm
92-
ArtifactName: atom.x86_64.rpm
93-
ArtifactType: Container
94-
displayName: Upload atom.x84_64.rpm
95-
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
96-
97-
- task: PublishBuildArtifacts@1
98-
inputs:
99-
PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.deb
100-
ArtifactName: atom-amd64.deb
101-
ArtifactType: Container
102-
displayName: Upload atom-amd64.deb
103-
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
104-
105-
- task: PublishBuildArtifacts@1
106-
inputs:
107-
PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.tar.gz
108-
ArtifactName: atom-amd64.tar.gz
109-
ArtifactType: Container
110-
displayName: Upload atom-amd64.tar.gz
111-
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
27+
- template: templates/publish.yml
28+
parameters:
29+
artifacts:
30+
- filename: atom.x86_64.rpm
31+
dir: $(Build.SourcesDirectory)/out
32+
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
33+
- filename: atom-amd64.deb
34+
dir: $(Build.SourcesDirectory)/out
35+
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
36+
- filename: atom-amd64.tar.gz
37+
dir: $(Build.SourcesDirectory)/out
38+
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))

script/vsts/platforms/macos.yml

Lines changed: 25 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -12,76 +12,35 @@ jobs:
1212
vmImage: macos-10.14
1313

1414
steps:
15-
- task: NodeTool@0
16-
inputs:
17-
versionSpec: 12.13.1
18-
displayName: Install Node.js 12.13.1
15+
- template: templates/preparation.yml
1916

20-
- script: npm install --global [email protected]
21-
displayName: Update npm
22-
23-
- template: cache.yml
17+
- template: templates/cache.yml
2418
parameters:
2519
OS: macos
2620

27-
- script: script/bootstrap
28-
displayName: Bootstrap build environment
29-
env:
30-
CI: true
31-
CI_PROVIDER: VSTS
32-
NPM_BIN_PATH: /usr/local/bin/npm
33-
npm_config_build_from_source: true
34-
condition: or(ne(variables['MainNodeModulesRestored'], 'true'), ne(variables['ScriptNodeModulesRestored'], 'true'), ne(variables['ApmNodeModulesRestored'], 'true'))
21+
- template: templates/bootstrap.yml
3522

3623
- script: script/lint
3724
displayName: Run linter
3825

39-
- script: |
40-
if [ $SHOULD_SIGN == "true" ] && ([ $IS_RELEASE_BRANCH == "true" ] || [ $IS_SIGNED_ZIP_BRANCH == "true" ]); then
41-
script/build --no-bootstrap --code-sign --compress-artifacts
42-
else
43-
script/build --no-bootstrap --compress-artifacts
44-
fi
45-
displayName: Build Atom
46-
env:
47-
GITHUB_TOKEN: $(GITHUB_TOKEN)
48-
IS_RELEASE_BRANCH: $(IsReleaseBranch)
49-
IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch)
50-
ATOM_RELEASE_VERSION: $(ReleaseVersion)
51-
ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL: $(ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL)
52-
ATOM_MAC_CODE_SIGNING_CERT_PASSWORD: $(ATOM_MAC_CODE_SIGNING_CERT_PASSWORD)
53-
ATOM_MAC_CODE_SIGNING_KEYCHAIN: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN)
54-
ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD)
55-
AC_USER: $(AC_USER)
56-
AC_PASSWORD: $(AC_PASSWORD)
26+
- template: templates/build.yml
5727

5828
- script: |
5929
cp $(Build.SourcesDirectory)/out/*.zip $(Build.ArtifactStagingDirectory)
6030
displayName: Stage Artifacts
6131
62-
- task: PublishBuildArtifacts@1
63-
inputs:
64-
PathtoPublish: $(Build.ArtifactStagingDirectory)/atom-mac.zip
65-
ArtifactName: atom-mac.zip
66-
ArtifactType: Container
67-
displayName: Upload atom-mac.zip
68-
condition: succeeded()
69-
70-
- task: PublishBuildArtifacts@1
71-
inputs:
72-
PathtoPublish: $(Build.ArtifactStagingDirectory)/atom-mac-symbols.zip
73-
ArtifactName: atom-mac-symbols.zip
74-
ArtifactType: Container
75-
displayName: Upload atom-mac-symbols.zip
76-
condition: succeeded()
77-
78-
- task: PublishBuildArtifacts@1
79-
inputs:
80-
PathtoPublish: $(Build.SourcesDirectory)/docs/output/atom-api.json
81-
ArtifactName: atom-api.json
82-
ArtifactType: Container
83-
displayName: Upload atom-api.json
84-
condition: succeeded()
32+
- template: templates/publish.yml
33+
parameters:
34+
artifacts:
35+
- filename: atom-mac.zip
36+
dir: $(Build.ArtifactStagingDirectory)
37+
condition: succeeded()
38+
- filename: atom-mac-symbols.zip
39+
dir: $(Build.ArtifactStagingDirectory)
40+
condition: succeeded()
41+
- filename: atom-api.json
42+
dir: $(Build.SourcesDirectory)/docs/output
43+
condition: succeeded()
8544

8645
- job: macOS_tests
8746
displayName: macOS test
@@ -103,84 +62,20 @@ jobs:
10362
RunPackageTests: 2
10463

10564
steps:
106-
- task: NodeTool@0
107-
inputs:
108-
versionSpec: 12.13.1
109-
displayName: Install Node.js 12.13.1
110-
111-
- script: npm install --global [email protected]
112-
displayName: Update npm
65+
- template: templates/preparation.yml
11366

114-
- template: cache.yml
67+
- template: templates/cache.yml
11568
parameters:
11669
OS: macos
11770

11871
# The artifact caching task does not work on forks, so we need to
11972
# bootstrap again for pull requests coming from forked repositories.
120-
- script: script/bootstrap
121-
displayName: Bootstrap build environment
122-
env:
123-
CI: true
124-
CI_PROVIDER: VSTS
125-
NPM_BIN_PATH: /usr/local/bin/npm
126-
npm_config_build_from_source: true
127-
condition: or(ne(variables['MainNodeModulesRestored'], 'true'), ne(variables['ScriptNodeModulesRestored'], 'true'), ne(variables['ApmNodeModulesRestored'], 'true'))
128-
129-
- task: DownloadBuildArtifacts@0
130-
displayName: Download atom-mac.zip
131-
inputs:
132-
artifactName: 'atom-mac.zip'
133-
downloadPath: $(Build.SourcesDirectory)
134-
135-
- script: unzip atom-mac.zip/atom-mac.zip -d out
136-
displayName: Unzip atom-mac.zip
73+
- template: templates/bootstrap.yml
13774

138-
- task: DownloadBuildArtifacts@0
139-
displayName: Download atom-mac-symbols.zip
140-
inputs:
141-
artifactName: 'atom-mac-symbols.zip'
142-
downloadPath: $(Build.SourcesDirectory)
143-
144-
- script: unzip atom-mac-symbols.zip/atom-mac-symbols.zip -d out
145-
displayName: Unzip atom-mac-symbols.zip
146-
147-
- script: |
148-
osascript -e 'tell application "System Events" to keystroke "x"' # clear screen saver
149-
caffeinate -s script/test # Run with caffeinate to prevent screen saver
150-
env:
151-
CI: true
152-
CI_PROVIDER: VSTS
153-
ATOM_JASMINE_REPORTER: list
154-
TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit
155-
ATOM_RUN_CORE_TESTS: $(RunCoreTests)
156-
ATOM_RUN_PACKAGE_TESTS: $(RunPackageTests)
157-
displayName: Run tests
158-
condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true'))
159-
160-
- script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml"
161-
env:
162-
TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit
163-
displayName: Post-process test results
164-
condition: ne(variables['Atom.SkipTests'], 'true')
165-
166-
- task: PublishTestResults@2
167-
inputs:
168-
testResultsFormat: JUnit
169-
searchFolder: $(Common.TestResultsDirectory)/junit
170-
testResultsFiles: '**/*.xml'
171-
mergeTestResults: true
172-
testRunTitle: MacOS
173-
condition: ne(variables['Atom.SkipTests'], 'true')
174-
175-
- script: |
176-
mkdir -p $(Build.ArtifactStagingDirectory)/crash-reports
177-
cp ${HOME}/Library/Logs/DiagnosticReports/*.crash $(Build.ArtifactStagingDirectory)/crash-reports
178-
displayName: Stage Crash Reports
179-
condition: failed()
75+
- template: templates/download-unzip.yml
76+
parameters:
77+
artifacts:
78+
- atom-mac.zip
79+
- atom-mac-symbols.zip
18080

181-
- task: PublishBuildArtifacts@1
182-
inputs:
183-
PathtoPublish: $(Build.ArtifactStagingDirectory)/crash-reports
184-
ArtifactName: crash-reports.zip
185-
displayName: Upload Crash Reports
186-
condition: failed()
81+
- template: templates/test.yml
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
steps:
2+
- pwsh: |
3+
# OS specific env variables
4+
if ($env:AGENT_OS -eq "Windows_NT") {
5+
$env:NPM_BIN_PATH="C:/hostedtoolcache/windows/node/12.13.1/x64/npm.cmd"
6+
$env:npm_config_build_from_source=true
7+
}
8+
if ($env:AGENT_OS -eq "Darwin") {
9+
$env:NPM_BIN_PATH="/usr/local/bin/npm"
10+
$env:npm_config_build_from_source=true
11+
}
12+
if ($env:AGENT_OS -eq "Linux") {
13+
$env:NPM_BIN_PATH="/usr/local/bin/npm"
14+
$env:CC=clang
15+
$env:CXX=clang++
16+
$env:npm_config_clang=1
17+
}
18+
19+
# Bootstrap
20+
if (($env:AGENT_OS -eq "Windows_NT") -and ($env:BUILD_ARCH -eq "x86")) {
21+
node 'script\vsts\windows-run.js' 'script\bootstrap.cmd'
22+
}
23+
else {
24+
script/bootstrap
25+
}
26+
displayName: Bootstrap build environment
27+
env:
28+
GITHUB_TOKEN: $(GITHUB_TOKEN)
29+
CI: true
30+
CI_PROVIDER: VSTS
31+
condition: or(ne(variables['MainNodeModulesRestored'], 'true'), ne(variables['ScriptNodeModulesRestored'], 'true'), ne(variables['ApmNodeModulesRestored'], 'true'))

0 commit comments

Comments
 (0)