mirror of
https://github.com/VSCodium/vscodium.git
synced 2024-11-26 17:16:05 +03:00
Refactor update_version to support Windows builds
This commit is contained in:
parent
7b1c9aff73
commit
d7fe3923fc
8
sum.sh
8
sum.sh
@ -10,6 +10,10 @@ sum_file () {
|
||||
if [[ "$SHOULD_BUILD" == "yes" ]]; then
|
||||
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
sum_file VSCodium-darwin-*.zip
|
||||
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
|
||||
@ -21,7 +25,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
|
||||
|
@ -26,68 +26,123 @@ 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
|
||||
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
|
||||
|
||||
if [[ "$BUILDARCH" == "x64" ]]; then
|
||||
VERSION_PATH="win32/${BUILDARCH}/user"
|
||||
else
|
||||
VERSION_PATH="win32/user"
|
||||
fi
|
||||
JSON="$(generateJson ${ASSET_NAME} ${ASSET_PATH})"
|
||||
updateLatestVersion "$VERSION_PATH" "$JSON"
|
||||
|
||||
# windows archive
|
||||
ASSET_NAME=VSCodium-win32-${BUILDARCH}-${LATEST_MS_TAG}.zip
|
||||
|
||||
if [[ "$BUILDARCH" == "x64" ]]; then
|
||||
VERSION_PATH="win32/${BUILDARCH}/archive"
|
||||
else
|
||||
VERSION_PATH="win32/archive"
|
||||
fi
|
||||
JSON="$(generateJson ${ASSET_NAME} ${ASSET_PATH})"
|
||||
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 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 ..
|
||||
|
@ -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'
|
||||
@ -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
|
||||
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user