Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows version update #164

Merged
merged 8 commits into from
May 20, 2019
24 changes: 20 additions & 4 deletions sum.sh
Original file line number Diff line number Diff line change
@@ -1,15 +1,31 @@
#!/bin/bash

# shasum blows up in Azure, so using this
# node package which has similar syntax and identical output
if [[ "$CI_WINDOWS" == "True" ]]; then
npm i -g checksum
fi

sum_file () {
if [[ -f "$1" ]]; then
shasum -a 256 $1 > $1.sha256
shasum $1 > $1.sha1
if [[ "$CI_WINDOWS" == "True" ]]; then
checksum -a sha256 "$1" > "$1".sha256
checksum -a sha1 "$1" > "$1".sha1
else
shasum -a 256 "$1" > "$1".sha256
shasum "$1" > "$1".sha1
fi
fi
}

if [[ "$SHOULD_BUILD" == "yes" ]]; then
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
sum_file VSCodium-darwin-*.zip
sum_file VSCodium*.dmg
elif [[ "$CI_WINDOWS" == "True" ]]; then
sum_file VSCodiumSetup-*.exe
sum_file VSCodiumUserSetup-*.exe
sum_file VSCodium-win32-*.zip
else # linux
if [[ "$BUILDARCH" == "x64" ]]; then
deb_arch=amd64
Expand All @@ -21,7 +37,7 @@ if [[ "$SHOULD_BUILD" == "yes" ]]; then
sum_file VSCodium-linux*.tar.gz
sum_file vscode/.build/linux/deb/${deb_arch}/deb/*.deb
sum_file vscode/.build/linux/rpm/${rpm_arch}/*.rpm
cp vscode/.build/linux/deb/${deb_arch}/deb/*.sha256 .
cp vscode/.build/linux/rpm/${rpm_arch}/*.sha256 .
cp vscode/.build/linux/deb/${deb_arch}/deb/*.{sha256,sha1} .
cp vscode/.build/linux/rpm/${rpm_arch}/*.{sha256,sha1} .
fi
fi
142 changes: 95 additions & 47 deletions update_version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,68 +26,116 @@ fi

URL_BASE=https://github.com/VSCodium/vscodium/releases/download/${LATEST_MS_TAG}

# to make testing on forks easier
if [[ "$CI_WINDOWS" == "True" ]]; then
# BUILD_REPOSITORY_URI = e.g. https://github.com/VSCodium/vscodium
VERSIONS_REPO=$(echo ${BUILD_REPOSITORY_URI} | awk -F"/" '{ print $4 }')/versions

git config --global core.autocrlf true
else
# TRAVIS_REPO_SLUG = e.g. VSCodium/vscodium
VERSIONS_REPO=$(echo ${TRAVIS_REPO_SLUG} | awk -F"/" '{ print $1 }')/versions
fi

# generateJson <assetName>
# e.g. generateJson VSCodium-darwin-1.33.0.zip
generateJson() {
local assetName=$1

# generate parts
local url=${URL_BASE}/${assetName}
local name=$LATEST_MS_TAG
local version=$LATEST_MS_COMMIT
local productVersion=$LATEST_MS_TAG
local timestamp=$(node -e 'console.log(Date.now())')

local sha1hash=$(cat ${assetName}.sha1 | awk '{ print $1 }')
local sha256hash=$(cat ${assetName}.sha256 | awk '{ print $1 }')

# check that nothing is blank (blank indicates something awry with build)
for key in url name version productVersion sha1hash timestamp sha256hash; do
if [[ "${!key}" == "" ]]; then
echo "Missing data for version update; exiting..."
exit 1
fi
done

# generate json
local json=$(jq \
--arg url "${url}" \
--arg name "${name}" \
--arg version "${version}" \
--arg productVersion "${productVersion}" \
--arg hash "${sha1hash}" \
--arg timestamp "${timestamp}" \
--arg sha256hash "${sha256hash}" \
'. | .url=$url | .name=$name | .version=$version | .productVersion=$productVersion | .hash=$hash | .timestamp=$timestamp | .sha256hash=$sha256hash' \
<<<'{}')

echo "$json"
}

updateLatestVersion() {
cd versions

local versionPath=$1
local json=$2

# create/update the latest.json file in the correct location
mkdir -p $versionPath
echo $json > $versionPath/latest.json

cd ..
}

# init versions repo for later commiting + pushing the json file to it
# thank you https://www.vinaygopinath.me/blog/tech/commit-to-master-branch-on-github-using-travis-ci/
git clone https://github.com/${VERSIONS_REPO}.git
cd versions
git config user.email "travis@travis-ci.org"
git config user.name "Travis CI"
git remote rm origin
git remote add origin https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/${VERSIONS_REPO}.git > /dev/null 2>&1
cd ..

if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
# zip, sha1, and sha256 files are all at top level dir
ASSET_PATH=.
ASSET_NAME=VSCodium-darwin-${LATEST_MS_TAG}.zip
VERSION_PATH="darwin"
JSON="$(generateJson ${ASSET_NAME})"
updateLatestVersion "$VERSION_PATH" "$JSON"
elif [[ "$CI_WINDOWS" == "True" ]]; then
# TODO: make this logic work for Windows builds too
# or re-implement it in PowerShell and call that from the Windows build
exit
# windows update service supports user and archive types
# so we will run the commands twice

# user installer
ASSET_NAME=VSCodiumUserSetup-${BUILDARCH}-${LATEST_MS_TAG}.exe
VERSION_PATH="win32/${BUILDARCH}/user"
JSON="$(generateJson ${ASSET_NAME})"
updateLatestVersion "$VERSION_PATH" "$JSON"

# windows archive
ASSET_NAME=VSCodium-win32-${BUILDARCH}-${LATEST_MS_TAG}.zip
VERSION_PATH="win32/${BUILDARCH}/archive"
JSON="$(generateJson ${ASSET_NAME})"
updateLatestVersion "$VERSION_PATH" "$JSON"
else # linux
# update service links to tar.gz file
# see https://update.code.visualstudio.com/api/update/linux-x64/stable/VERSION
# and https://update.code.visualstudio.com/api/update/linux-ia32/stable/VERSION
# as examples
ASSET_PATH=.
ASSET_NAME=VSCodium-linux-${BUILDARCH}-${LATEST_MS_TAG}.tar.gz
VERSION_PATH="linux/${BUILDARCH}"
JSON="$(generateJson ${ASSET_NAME})"
updateLatestVersion "$VERSION_PATH" "$JSON"
fi

# generate parts
url=${URL_BASE}/${ASSET_NAME}
name=$LATEST_MS_TAG
version=$LATEST_MS_COMMIT
productVersion=$LATEST_MS_TAG
sha1hash=$(cat ${ASSET_PATH}/${ASSET_NAME}.sha1 | awk '{ print $ 1 }')
timestamp=$(node -e 'console.log(Date.now())')
sha256hash=$(cat ${ASSET_PATH}/${ASSET_NAME}.sha256 | awk '{ print $ 1 }')

# check that nothing is blank (blank indicates something awry with build)
for key in url name version productVersion sha1hash timestamp sha256hash; do
if [[ "${!key}" == "" ]]; then
echo "Missing data for version update; exiting..."
exit 1
fi
done

# generate json
JSON=$(jq \
--arg url "${url}" \
--arg name "${name}" \
--arg version "${version}" \
--arg productVersion "${productVersion}" \
--arg hash "${sha1hash}" \
--arg timestamp "${timestamp}" \
--arg sha256hash "${sha256hash}" \
'. | .url=$url | .name=$name | .version=$version | .productVersion=$productVersion | .hash=$hash | .timestamp=$timestamp | .sha256hash=$sha256hash' \
<<<'{}')

echo $JSON

# clone down the current versions repo
# create/update the latest.json file in the correct location
# commit and push (thank you https://www.vinaygopinath.me/blog/tech/commit-to-master-branch-on-github-using-travis-ci/)
git clone https://github.com/VSCodium/versions.git
cd versions
git config user.email "travis@travis-ci.org"
git config user.name "Travis CI"
mkdir -p $VERSION_PATH
echo $JSON > $VERSION_PATH/latest.json
git add $VERSION_PATH

git pull origin master # in case another build just pushed
git add .
dateAndMonth=`date "+%D %T"`
git commit -m "Travis update: $dateAndMonth (Build $TRAVIS_BUILD_NUMBER)"
git remote rm origin
git remote add origin https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/VSCodium/versions.git > /dev/null 2>&1
git push origin master --quiet

cd ..
13 changes: 9 additions & 4 deletions win32-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@ steps:
inputs:
scriptPath: get_repo.sh
- powershell: |
$LATEST_MS_COMMIT="$(git -C vscode rev-list --tags --max-count=1)"
$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'
Write-Host "##vso[task.setvariable variable=LATEST_MS_COMMIT]$LATEST_MS_COMMIT"
displayName: 'set env LATEST_MS_TAG, LATEST_MS_COMMIT'
- task: PowerShell@2
inputs:
filePath: 'check_tags.ps1'
Expand All @@ -40,9 +42,7 @@ steps:
if [[ "$SHOULD_BUILD" == "yes" ]]; then mv vscode\\.build\\win32-$(BUILDARCH)\\archive\\VSCode-win32-$(BUILDARCH).zip VSCodium-win32-$(BUILDARCH)-${LATEST_MS_TAG}.zip; fi
displayName: 'move the zip folder'
- powershell: |
Get-FileHash VSCodiumSetup-$(BUILDARCH)-$(LATEST_MS_TAG).exe -Algorithm SHA256 | Format-List > VSCodiumSetup-$(BUILDARCH)-$(LATEST_MS_TAG).sha256
Get-FileHash VSCodiumUserSetup-$(BUILDARCH)-$(LATEST_MS_TAG).exe -Algorithm SHA256 | Format-List > VSCodiumUserSetup-$(BUILDARCH)-$(LATEST_MS_TAG).sha256
Get-FileHash VSCodium-win32-$(BUILDARCH)-$(LATEST_MS_TAG).zip -Algorithm SHA256 | Format-List > VSCodium-win32-$(BUILDARCH)-$(LATEST_MS_TAG).sha256
bash ./sum.sh
condition: eq(variables['SHOULD_BUILD'], 'yes')
displayName: 'compute sums'
- task: CopyFiles@2
Expand All @@ -61,3 +61,8 @@ steps:
inputs:
PathtoPublish: $(Build.ArtifactStagingDirectory)
ArtifactName: 'everything'
- bash: ./update_version.sh
displayName: 'update version json'
env:
GITHUB_TOKEN: $(GITHUB_TOKEN)
GITHUB_USERNAME: $(GITHUB_USERNAME)