diff --git a/.gitignore b/.gitignore index 1b86f26..5e516d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ vscode +VS*/* \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..075c262 --- /dev/null +++ b/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' diff --git a/build.sh b/build.sh index ddef3d2..6344e85 100755 --- a/build.sh +++ b/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 diff --git a/check_tags.ps1 b/check_tags.ps1 new file mode 100644 index 0000000..5613f7b --- /dev/null +++ b/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" \ No newline at end of file