/ script / vsts / platforms / linux.yml
linux.yml
  1  jobs:
  2    - job: Linux
  3      dependsOn: GetReleaseVersion
  4      timeoutInMinutes: 180
  5      variables:
  6        ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ]
  7      pool:
  8        # This image is used to host the Docker container that runs the build
  9        vmImage: ubuntu-16.04
 10      container: ubuntu:trusty
 11  
 12      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
 21  
 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: 10.2.1
 28          displayName: Install Node.js 10.2.1
 29  
 30        - script: npm install --global npm@6.2.0
 31          displayName: Update npm
 32  
 33        - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
 34          displayName: Restore node_modules cache
 35          inputs:
 36            keyfile: 'package.json, script/vsts/platforms/linux.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json'
 37            targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
 38            vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2'
 39  
 40        - script: script/bootstrap
 41          displayName: Bootstrap build environment
 42          env:
 43            CI: true
 44            CI_PROVIDER: VSTS
 45            CC: clang-5.0
 46            CXX: clang++-5.0
 47            npm_config_clang: 1
 48          condition: ne(variables['CacheRestored'], 'true')
 49  
 50        - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
 51          displayName: Save node_modules cache
 52          inputs:
 53            keyfile: 'package.json, script/vsts/platforms/linux.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json'
 54            targetfolder: '**/node_modules, !**/node_modules/**/node_modules'
 55            vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2'
 56  
 57        - script: script/lint
 58          displayName: Run linter
 59  
 60        - script: script/build --no-bootstrap --create-debian-package --create-rpm-package --compress-artifacts
 61          env:
 62            GITHUB_TOKEN: $(GITHUB_TOKEN)
 63            ATOM_RELEASE_VERSION: $(ReleaseVersion)
 64            CC: clang-5.0
 65            CXX: clang++-5.0
 66            npm_config_clang: 1
 67          displayName: Build Atom
 68  
 69        - script: script/test
 70          env:
 71            CI: true
 72            CI_PROVIDER: VSTS
 73            ATOM_JASMINE_REPORTER: list
 74            TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit
 75            DISPLAY: :99.0
 76          displayName: Run tests
 77          condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true'))
 78  
 79        - script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml"
 80          env:
 81            TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit
 82          displayName: Post-process test results
 83          condition: ne(variables['Atom.SkipTests'], 'true')
 84  
 85        - task: PublishTestResults@2
 86          inputs:
 87            testResultsFormat: JUnit
 88            searchFolder: $(Common.TestResultsDirectory)/junit
 89            testResultsFiles: '**/*.xml'
 90            mergeTestResults: true
 91            testRunTitle: Linux
 92          condition: ne(variables['Atom.SkipTests'], 'true')
 93  
 94        - task: PublishBuildArtifacts@1
 95          inputs:
 96            PathtoPublish: $(Build.SourcesDirectory)/out/atom.x86_64.rpm
 97            ArtifactName: atom.x86_64.rpm
 98            ArtifactType: Container
 99          displayName: Upload atom.x84_64.rpm
100          condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
101  
102        - task: PublishBuildArtifacts@1
103          inputs:
104            PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.deb
105            ArtifactName: atom-amd64.deb
106            ArtifactType: Container
107          displayName: Upload atom-amd64.deb
108          condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
109  
110        - task: PublishBuildArtifacts@1
111          inputs:
112            PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.tar.gz
113            ArtifactName: atom-amd64.tar.gz
114            ArtifactType: Container
115          displayName: Upload atom-amd64.tar.gz
116          condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))