Skip to content

Commit 0957b55

Browse files
authored
Set up CI with Azure Pipelines (#307)
yasssss let's get this done. Supercedes #207, which seems fitting somehow
1 parent c666bdd commit 0957b55

5 files changed

Lines changed: 190 additions & 0 deletions

File tree

.ci/esy-build-steps.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Cross-platform set of build steps for building esy projects
2+
3+
steps:
4+
- script: npm install -g esy@0.5.6
5+
displayName: 'npm install -g esy@0.5.6'
6+
- script: esy install
7+
displayName: 'esy install'
8+
- script: esy build
9+
displayName: 'esy build'
10+
# Run tests or any additional steps here
11+
# - script: esy b dune runtest
12+
- bash: ./_build/default/src/analyze_example_tests/ExamplesTests.exe
13+
- bash: ./_build/default/util_tests/UtilTests.exe
14+
- bash: mkdir -p rls-release
15+
- bash: cp _build/default/bin/Bin.exe rls-release/reason-language-server.exe
16+
- task: PublishBuildArtifacts@1
17+
displayName: 'Upload binary'
18+
inputs:
19+
pathToPublish: 'rls-release'
20+
artifactName: 'rls-$(Agent.OS)'
21+
parallel: true
22+
parallelCount: 8

.ci/publish-build-cache.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Steps for publishing project cache
2+
3+
steps:
4+
- bash: 'mkdir -p $(STAGING_DIRECTORY_UNIX)'
5+
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
6+
displayName: '[Cache][Publish] Create cache directory'
7+
8+
- bash: 'cd $(ESY__CACHE_INSTALL_PATH) && tar -czf $(STAGING_DIRECTORY_UNIX)/esy-cache.tar .'
9+
workingDirectory: ''
10+
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
11+
displayName: '[Cache][Publish] Tar esy cache directory'
12+
13+
# - bash: 'cd $(ESY__NPM_ROOT) && tar -czf $(STAGING_DIRECTORY_UNIX)/npm-cache.tar .'
14+
# condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
15+
# displayName: '[Cache][Publish] Tar npm cache directory'
16+
17+
- task: PublishBuildArtifacts@1
18+
displayName: '[Cache][Publish] Upload tarball'
19+
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
20+
inputs:
21+
pathToPublish: '$(STAGING_DIRECTORY)'
22+
artifactName: 'cache-$(Agent.OS)-install'
23+
parallel: true
24+
parallelCount: 8
25+

.ci/restore-build-cache.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Steps for restoring project cache
2+
3+
steps:
4+
- task: DownloadBuildArtifacts@0
5+
condition: succeeded()
6+
# condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))
7+
displayName: '[Cache][Restore] Restore install'
8+
inputs:
9+
buildType: 'specific'
10+
project: '$(System.TeamProject)'
11+
pipeline: '$(Build.DefinitionName)'
12+
branchName: 'refs/heads/master'
13+
buildVersionToDownload: 'latestFromBranch'
14+
downloadType: 'single'
15+
artifactName: 'cache-$(Agent.OS)-install'
16+
downloadPath: '$(STAGING_DIRECTORY)'
17+
continueOnError: true
18+
19+
- bash: 'mkdir -p $(ESY__CACHE_INSTALL_PATH)'
20+
condition: succeeded()
21+
# condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))
22+
displayName: '[Cache][Restore] Create cache directory'
23+
24+
# - bash: 'cd $(ESY__NPM_ROOT) && tar -xf $(STAGING_DIRECTORY_UNIX)/cache-$(Agent.OS)-install/npm-cache.tar -C .'
25+
# continueOnError: true
26+
# condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))
27+
# displayName: '[Cache][Restore] Untar npm cache directory'
28+
29+
- bash: 'cd $(ESY__CACHE_INSTALL_PATH) && tar -xf $(STAGING_DIRECTORY_UNIX)/cache-$(Agent.OS)-install/esy-cache.tar -C .'
30+
continueOnError: true
31+
condition: succeeded()
32+
# condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))
33+
displayName: '[Cache][Restore] Untar esy cache directory'
34+
35+
- bash: 'rm -rf *'
36+
continueOnError: true
37+
workingDirectory: '$(STAGING_DIRECTORY)'
38+
condition: succeeded()
39+
# condition: and(succeeded(), ne(variables['Build.SourceBranch'], 'refs/heads/master'))
40+
displayName: '[Cache][Restore] Clean up'

.ci/use-node.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
steps:
2+
- task: NodeTool@0
3+
displayName: 'Use Node 8.x'
4+
inputs:
5+
versionSpec: 8.x

azure-pipelines.yml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# Starter pipeline
2+
# Start with a minimal pipeline that you can customize to build and deploy your code.
3+
# Add steps that build, run tests, deploy, and more:
4+
# https://aka.ms/yaml
5+
6+
7+
name: $(Build.SourceVersion)
8+
jobs:
9+
- job: Linux
10+
timeoutInMinutes: 0
11+
pool:
12+
vmImage: 'Ubuntu 16.04'
13+
14+
variables:
15+
STAGING_DIRECTORY: /home/vsts/STAGING
16+
STAGING_DIRECTORY_UNIX: /home/vsts/STAGING
17+
ESY__CACHE_INSTALL_PATH: /home/vsts/.esy/3_____________________________________________________________________/i
18+
ESY__CACHE_SOURCE_TARBALL_PATH: /home/vsts/.esy/source/i
19+
# ESY__NPM_ROOT: /opt/hostedtoolcache/node/8.14.0/x64/lib/node_modules/esy
20+
21+
steps:
22+
- template: .ci/use-node.yml
23+
- template: .ci/restore-build-cache.yml
24+
- template: .ci/esy-build-steps.yml
25+
- template: .ci/publish-build-cache.yml
26+
27+
- job: MacOS
28+
timeoutInMinutes: 0
29+
pool:
30+
vmImage: 'macOS 10.13'
31+
32+
variables:
33+
STAGING_DIRECTORY: /Users/vsts/STAGING
34+
STAGING_DIRECTORY_UNIX: /Users/vsts/STAGING
35+
ESY__CACHE_INSTALL_PATH: /Users/vsts/.esy/3____________________________________________________________________/i
36+
ESY__CACHE_SOURCE_TARBALL_PATH: /Users/vsts/.esy/source/i
37+
# ESY__NPM_ROOT: /usr/local/lib/node_modules/esy
38+
39+
steps:
40+
- template: .ci/use-node.yml
41+
- template: .ci/restore-build-cache.yml
42+
- template: .ci/esy-build-steps.yml
43+
- template: .ci/publish-build-cache.yml
44+
45+
- job: Windows
46+
timeoutInMinutes: 0
47+
pool:
48+
vmImage: 'vs2017-win2016'
49+
50+
variables:
51+
STAGING_DIRECTORY: C:\Users\VssAdministrator\STAGING
52+
STAGING_DIRECTORY_UNIX: /C/Users/VssAdministrator/STAGING
53+
ESY__CACHE_INSTALL_PATH: /C/Users/VssAdministrator/.esy/3_/i
54+
ESY__CACHE_SOURCE_TARBALL_PATH: /C/Users/VssAdministrator/.esy/source/i
55+
# ESY__NPM_ROOT: /C/npm/prefix/node_modules/esy
56+
57+
steps:
58+
- template: .ci/use-node.yml
59+
- template: .ci/restore-build-cache.yml
60+
- template: .ci/esy-build-steps.yml
61+
- template: .ci/publish-build-cache.yml
62+
63+
- job: Release
64+
timeoutInMinutes: 0
65+
displayName: Release
66+
dependsOn:
67+
- Linux
68+
- MacOS
69+
- Windows
70+
condition: succeeded()
71+
pool:
72+
vmImage: ubuntu-16.04
73+
steps:
74+
- task: PublishBuildArtifacts@1
75+
displayName: 'Release Package'
76+
inputs:
77+
PathtoPublish: '.'
78+
ArtifactName: npm-package
79+
80+
81+
# - name: release
82+
# jobs:
83+
# - job: Release
84+
# timeoutInMinutes: 0
85+
# displayName: Release
86+
# pool:
87+
# vmImage: ubuntu-16.04
88+
# steps:
89+
# - task: GitHubRelease@0
90+
# inputs:
91+
# gitHubConnection: jaredly
92+
# repositoryName: '$(Build.Repository.Name)'
93+
# action: 'create'
94+
# target: '$(Build.SourceVersion)'
95+
# tagSource: manual
96+
# tag: $(Release Tag)
97+
# isDraft: true
98+
# addChangeLog: true

0 commit comments

Comments
 (0)