Windows builds with Azure Pipelines (#58)

This commit is contained in:
Pavan Agrawal 2018-11-27 08:19:34 -06:00 committed by Peter Squicciarini
parent dc649ff259
commit 098cab67bd
4 changed files with 114 additions and 9 deletions

1
.gitignore vendored
View file

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

65
azure-pipelines.yml Normal file
View file

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

View file

@ -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
check_tags.ps1 Normal file
View file

@ -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"