Răsfoiți Sursa

Windows builds with Azure Pipelines (#58)

Pavan Agrawal 6 ani în urmă
părinte
comite
098cab67bd
4 a modificat fișierele cu 114 adăugiri și 9 ștergeri
  1. 1 0
      .gitignore
  2. 65 0
      azure-pipelines.yml
  3. 16 9
      build.sh
  4. 32 0
      check_tags.ps1

+ 1 - 0
.gitignore

@@ -1 +1,2 @@
 vscode
+VS*/*

+ 65 - 0
azure-pipelines.yml

@@ -0,0 +1,65 @@
+# Node.js with Grunt
+# Build a Node.js project using the Grunt task runner.
+# Add steps that analyze code, save build artifacts, deploy, and more:
+# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
+
+pool:
+  vmImage: 'vs2017-win2016'
+
+steps:
+- script: |
+    choco install jq 
+  displayName: 'install jq from choco'
+- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@2
+  displayName: 'Install Yarn'
+- task: UsePythonVersion@0
+  displayName: 'Use Python 2.x'
+  inputs:
+    versionSpec: 2.x
+- task: ShellScript@2
+  displayName: 'get VSCode sources'
+  inputs: 
+    scriptPath: get_repo.sh
+    #args: '' # Optional
+    #disableAutoCwd: false # Optional
+    #cwd: '' # Optional
+    #failOnStandardError: false
+- powershell: |
+    $LATEST_MS_TAG="$(git -C vscode describe --tags)"
+    Write-Host "##vso[task.setvariable variable=LATEST_MS_TAG]$LATEST_MS_TAG"
+  displayName: 'set env LATEST_MS_TAG'
+- task: PowerShell@2
+  inputs:
+    filePath: 'check_tags.ps1'
+  env:
+    GITHUB_TOKEN: $(GITHUB_TOKEN)
+- script: |
+    git -C vscode status
+  displayName: 'vscode status'
+- powershell: |
+    bash ./build.sh
+  displayName: 'go build it!'
+- bash: |
+    mv vscode\\.build\\win32-x64\\system-setup\\VSCodeSetup.exe VSCodiumSetup-x64-${LATEST_MS_TAG}.exe
+  displayName: 'move the system setup'
+- bash: |
+    mv vscode\\.build\\win32-x64\\user-setup\\VSCodeSetup.exe VSCodiumUserSetup-x64-${LATEST_MS_TAG}.exe
+  displayName: 'move the user setup'
+- bash: |
+    mv vscode\\.build\\win32-x64\\archive\\VSCode-win32-x64.zip VSCodium-win32-x64-${LATEST_MS_TAG}.zip
+  displayName: 'move the zip folder'
+- task: PublishBuildArtifacts@1
+  displayName: 'Publish artifacts: system-setup'
+  inputs:
+    PathtoPublish: 'VSCodiumSetup-x64-$(LATEST_MS_TAG).exe'
+    ArtifactName: 'system_setup'
+- task: PublishBuildArtifacts@1
+  displayName: 'Publish artifacts: user-setup'
+  inputs:
+    PathtoPublish: 'VSCodiumUserSetup-x64-$(LATEST_MS_TAG).exe'
+    ArtifactName: 'user_setup'
+- task: PublishBuildArtifacts@1
+  displayName: 'Publish artifacts: archive'
+  inputs:
+    PathtoPublish: 'VSCodium-win32-x64-$(LATEST_MS_TAG).zip'
+    ArtifactName: 'archive'

+ 16 - 9
build.sh

@@ -1,5 +1,4 @@
 #!/bin/bash
-
 if [[ "$SHOULD_BUILD" == "yes" ]]; then
   cp -rp src/* vscode/
   cd vscode
@@ -7,7 +6,6 @@ if [[ "$SHOULD_BUILD" == "yes" ]]; then
   if [[ "$BUILDARCH" == "ia32" ]]; then
     export npm_config_arch=ia32
   fi
-
   ../update_settings.sh
 
   yarn
@@ -18,28 +16,37 @@ if [[ "$SHOULD_BUILD" == "yes" ]]; then
 
   export NODE_ENV=production
 
-  if [[ "$TRAVIS_OS_NAME" != "osx" ]]; then
+  if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
     # microsoft adds their apt repo to sources
     # unless the app name is code-oss
     # as we are renaming the application to vscodium
     # we need to edit a line in the post install template
     sed -i "s/code-oss/vscodium/" resources/linux/debian/postinst.template
-  fi
+    fi
 
   if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
     npm run gulp vscode-darwin-min
   elif [[ "$BUILDARCH" == "ia32" ]]; then
-    npm run gulp vscode-linux-ia32-min
-    npm run gulp vscode-linux-ia32-build-deb
-    npm run gulp vscode-linux-ia32-build-rpm
-    unset npm_config_arch
+      npm run gulp vscode-linux-ia32-min
+      npm run gulp vscode-linux-ia32-build-deb
+      npm run gulp vscode-linux-ia32-build-rpm
+      unset npm_config_arch
   elif [[ "$BUILDARCH" == "arm64" ]]; then
     npm run gulp vscode-linux-arm64-min
     npm run gulp vscode-linux-arm64-build-deb
     # npm run gulp vscode-linux-arm64-build-rpm
+  elif [[ "$CI_WINDOWS" == "True" ]]; then
+    npx gulp vscode-win32-x64-min
+    npx gulp vscode-win32-x64-copy-inno-updater
+    npx gulp vscode-win32-x64-inno-updater
+    npx gulp vscode-win32-x64-system-setup
+    npx gulp vscode-win32-x64-user-setup
+    npx gulp vscode-win32-x64-archive
   else
     npm run gulp vscode-linux-x64-min
     npm run gulp vscode-linux-x64-build-deb
     npm run gulp vscode-linux-x64-build-rpm
-  fi
+  fi  
+
+  cd ..
 fi

+ 32 - 0
check_tags.ps1

@@ -0,0 +1,32 @@
+echo "token: $env:GITHUB_TOKEN"
+echo "tag: $env:LATEST_MS_TAG"
+$GITHUB_RESPONSE = curl.exe -s -H "Authorization: token $env:GITHUB_TOKEN" "https://api.github.com/repos/vscodium/vscodium/releases/tags/$env:LATEST_MS_TAG"
+echo "Github response: ${GITHUB_RESPONSE}"
+$VSCODIUM_ASSETS= $GITHUB_RESPONSE | jq '.assets'
+echo "VSCodium assets: ${VSCODIUM_ASSETS}"
+
+# if we just don't have the github token, get out fast
+if (!$env:GITHUB_TOKEN) {
+  return
+}
+if (!$VSCODIUM_ASSETS) {
+  echo "Release assets do not exist at all, continuing build"
+  $SHOULD_BUILD = 'yes'
+}
+
+$WindowsAssets = ($VSCODIUM_ASSETS | ConvertFrom-Json) | Where-Object { $_.name.Contains('exe') }
+$SYSTEM_SETUP = $WindowsAssets | Where-Object { $_.name.Contains('Setup') }
+$USER_SETUP = $WindowsAssets | Where-Object { $_.name.Contains('User') }
+if (!$SYSTEM_SETUP) {
+  echo "Building on Windows because we have no system-setup.exe";
+  $SHOULD_BUILD = 'yes'
+}
+elseif (!$USER_SETUP) {
+  echo "Building on Windows because we have no user-setup.exe";
+  $SHOULD_BUILD = 'yes'
+}
+else {
+  echo "Already have all the Windows builds"
+}
+
+Write-Host "##vso[task.setvariable variable=SHOULD_BUILD]$SHOULD_BUILD"