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'))