From 2c64f0da2357fbd485bd578eb0d73bbd29caf430 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Tue, 10 Jan 2017 21:37:54 -0400 Subject: [PATCH] chore: add support for snapshot builds (#968) This commit introduces a `RELEASE_TYPE` option to the Makefile, which can be either `production` or `snapshot`. If its `production`, the behaviour its same as it was before. If `RELEASE_TYPE` is `snapshot`, the shorter version of the current commit hash is appended to the version (replacing the `APPLICATION_VERSION` in the Makefile, as well as the `package.json` version inside the `.asar`), and the publish scripts get configured to deploy to different "snapshot" locations. This commit also reduces the size of the version tag in the bottom right corner a bit so that it fits when the commit hash is appended to it. Signed-off-by: Juan Cruz Viotti --- Makefile | 79 +++++++++++++----- docs/PUBLISHING.md | 6 +- lib/gui/css/main.css | 1 + lib/gui/scss/main.scss | 1 + screenshot.png | Bin 127561 -> 127440 bytes .../build/electron-create-resources-app.sh | 10 ++- scripts/publish/aws-s3.sh | 43 ++++++++-- scripts/publish/bintray-debian.sh | 68 ++++++++++----- 8 files changed, 153 insertions(+), 55 deletions(-) diff --git a/Makefile b/Makefile index f9198e2c..c9d33129 100644 --- a/Makefile +++ b/Makefile @@ -22,12 +22,25 @@ ELECTRON_VERSION = $(shell jq -r '.devDependencies["electron-prebuilt"]' package COMPANY_NAME = $(shell jq -r '.companyName' package.json) APPLICATION_NAME = $(shell jq -r '.displayName' package.json) APPLICATION_DESCRIPTION = $(shell jq -r '.description' package.json) -APPLICATION_VERSION = $(shell jq -r '.version' package.json) APPLICATION_COPYRIGHT = $(shell jq -r '.copyright' package.json) APPLICATION_CATEGORY = public.app-category.developer-tools APPLICATION_BUNDLE_ID = io.resin.etcher APPLICATION_FILES = lib,assets +# Add the current commit to the version if release type is "snapshot" +RELEASE_TYPE ?= snapshot +PACKAGE_JSON_VERSION = $(shell jq -r '.version' package.json) +ifeq ($(RELEASE_TYPE),production) +APPLICATION_VERSION = $(PACKAGE_JSON_VERSION) +endif +ifeq ($(RELEASE_TYPE),snapshot) +CURRENT_COMMIT_HASH = $(shell git log -1 --format="%h") +APPLICATION_VERSION = $(PACKAGE_JSON_VERSION)+$(CURRENT_COMMIT_HASH) +endif +ifndef APPLICATION_VERSION +$(error Invalid release type: $(RELEASE_TYPE)) +endif + # --------------------------------------------------------------------- # Operating system and architecture detection # --------------------------------------------------------------------- @@ -127,6 +140,13 @@ ifeq ($(TARGET_ARCH),x64) TARGET_ARCH_DEBIAN = amd64 endif +ifeq ($(RELEASE_TYPE),production) + PRODUCT_NAME = etcher +endif +ifeq ($(RELEASE_TYPE),snapshot) + PRODUCT_NAME = etcher-snapshots +endif + APPLICATION_NAME_LOWERCASE = $(shell echo $(APPLICATION_NAME) | tr A-Z a-z) APPLICATION_VERSION_DEBIAN = $(shell echo $(APPLICATION_VERSION) | tr "-" "~") @@ -166,15 +186,17 @@ $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/bower | $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies ./scripts/build/dependencies-bower.sh -p -x $| -$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app: \ +$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app: \ $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/node_modules \ $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-dependencies/bower_components \ | $(BUILD_DIRECTORY) - ./scripts/build/electron-create-resources-app.sh -s . -f "$(APPLICATION_FILES)" -o $@ + ./scripts/build/electron-create-resources-app.sh -s . -o $@ \ + -v $(APPLICATION_VERSION) \ + -f "$(APPLICATION_FILES)" $(foreach prerequisite,$^,$(call execute-command,cp -rf $(prerequisite) $@)) -$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app.asar: \ - $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app \ +$(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app.asar: \ + $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app \ | $(BUILD_DIRECTORY) ./scripts/build/electron-create-asar.sh -d $< -o $@ @@ -186,8 +208,8 @@ $(BUILD_DIRECTORY)/electron-$(ELECTRON_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH -s "$(TARGET_PLATFORM)" \ -o $@ -$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(TARGET_PLATFORM)-$(TARGET_ARCH): \ - $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(TARGET_ARCH)-app.asar \ +$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH): \ + $(BUILD_DIRECTORY)/electron-$(TARGET_PLATFORM)-$(APPLICATION_VERSION)-$(TARGET_ARCH)-app.asar \ $(BUILD_DIRECTORY)/electron-$(ELECTRON_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH).zip \ | $(BUILD_DIRECTORY) ifeq ($(TARGET_PLATFORM),darwin) @@ -228,8 +250,8 @@ endif endif endif -$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-rw.dmg: \ - $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-darwin-$(TARGET_ARCH) \ +$(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-rw.dmg: \ + $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-darwin-$(TARGET_ARCH) \ | $(BUILD_DIRECTORY) ./scripts/build/electron-create-readwrite-dmg-darwin.sh -p $< -o $@ \ -n "$(APPLICATION_NAME)" \ @@ -237,7 +259,7 @@ $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(TARGET_PLATFORM)-$(TARGET_ARCH)-rw.dmg: -b assets/osx/installer.png $(BUILD_OUTPUT_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-darwin-$(TARGET_ARCH).zip: \ - $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-darwin-$(TARGET_ARCH) \ + $(BUILD_DIRECTORY)/$(APPLICATION_NAME)-$(APPLICATION_VERSION)-darwin-$(TARGET_ARCH) \ | $(BUILD_OUTPUT_DIRECTORY) ifdef CODE_SIGN_IDENTITY ./scripts/build/electron-sign-app-darwin.sh -a $ ``` Publishing to S3 @@ -92,14 +92,14 @@ access resin.io's production downloads S3 bucket. Run the following command to publish a specific file: ```sh -./scripts/publish/aws-s3.sh +./scripts/publish/aws-s3.sh -f -b -v -t ``` Or run the following command to publish all files for the current combination of _platform_ and _arch_ (building them if necessary) : ```sh -make publish-aws-s3 +make publish-aws-s3 RELEASE_TYPE= ``` Also add links to each AWS S3 file in [GitHub Releases][github-releases]. See diff --git a/lib/gui/css/main.css b/lib/gui/css/main.css index 35c3438d..9bf83ad5 100644 --- a/lib/gui/css/main.css +++ b/lib/gui/css/main.css @@ -6673,6 +6673,7 @@ body { .section-footer .caption[os-open-external]:hover, .section-footer .page-main [os-open-external].icon-caption:hover, .page-main .section-footer [os-open-external].icon-caption:hover { color: #85898c; } .section-footer .footer-right { + font-size: 10px; position: absolute; right: 0; top: 50%; } diff --git a/lib/gui/scss/main.scss b/lib/gui/scss/main.scss index 5dc335b6..807b7eb6 100644 --- a/lib/gui/scss/main.scss +++ b/lib/gui/scss/main.scss @@ -80,6 +80,7 @@ body { } .footer-right { + font-size: 10px; position: absolute; right: 0; top: 50%; diff --git a/screenshot.png b/screenshot.png index a84fdedf1a17ff334ca8334e76b7fd8566f9bed9..0551a76339400aa824904aeac6c83a11fe6c2e59 100644 GIT binary patch delta 39668 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" + echo " -v " echo " -f " echo " -o " exit 1 } ARGV_SOURCE_DIRECTORY="" +ARGV_APPLICATION_VERSION="" ARGV_FILES="" ARGV_OUTPUT="" -while getopts ":s:f:o:" option; do +while getopts ":s:v:f:o:" option; do case $option in s) ARGV_SOURCE_DIRECTORY=$OPTARG ;; + v) ARGV_APPLICATION_VERSION=$OPTARG ;; f) ARGV_FILES=$OPTARG ;; o) ARGV_OUTPUT=$OPTARG ;; *) usage ;; @@ -44,6 +49,7 @@ while getopts ":s:f:o:" option; do done if [ -z "$ARGV_SOURCE_DIRECTORY" ] || + [ -z "$ARGV_APPLICATION_VERSION" ] || \ [ -z "$ARGV_FILES" ] || \ [ -z "$ARGV_OUTPUT" ]; then usage @@ -51,7 +57,7 @@ fi mkdir -p "$ARGV_OUTPUT" -cp "$ARGV_SOURCE_DIRECTORY/package.json" "$ARGV_OUTPUT" +jq ".version = \"$ARGV_APPLICATION_VERSION\"" "$ARGV_SOURCE_DIRECTORY/package.json" > "$ARGV_OUTPUT/package.json" for file in $(echo "$ARGV_FILES" | sed "s/,/ /g"); do cp -rf "$file" "$ARGV_OUTPUT" diff --git a/scripts/publish/aws-s3.sh b/scripts/publish/aws-s3.sh index ca149d99..4805cb44 100755 --- a/scripts/publish/aws-s3.sh +++ b/scripts/publish/aws-s3.sh @@ -22,16 +22,45 @@ set -e ./scripts/build/check-dependency.sh aws -if [ "$#" -ne 1 ]; then - echo "Usage: $0 " 1>&2 +function usage() { + echo "Usage: $0" + echo "" + echo "Options" + echo "" + echo " -f " + echo " -b " + echo " -v " + echo " -p " exit 1 +} + +ARGV_FILE="" +ARGV_BUCKET="" +ARGV_VERSION="" +ARGV_PRODUCT_NAME="" + +while getopts ":f:b:v:p" option; do + case $option in + f) ARGV_FILE="$OPTARG" ;; + b) ARGV_BUCKET="$OPTARG" ;; + v) ARGV_VERSION="$OPTARG" ;; + p) ARGV_PRODUCT_NAME="$OPTARG" ;; + *) usage ;; + esac +done + +if [ -z "$ARGV_FILE" ] || \ + [ -z "$ARGV_BUCKET" ] || \ + [ -z "$ARGV_VERSION" ] || \ + [ -z "$ARGV_PRODUCT_NAME" ] +then + usage fi -ETCHER_VERSION=`node -e "console.log(require('./package.json').version)"` -S3_BUCKET="resin-production-downloads" +FILENAME=$(basename "$ARGV_FILE") aws s3api put-object \ - --bucket $S3_BUCKET \ + --bucket "$ARGV_BUCKET" \ --acl public-read \ - --key etcher/$ETCHER_VERSION/`basename $1` \ - --body $1 + --key "$ARGV_PRODUCT_NAME/$ARGV_VERSION/$FILENAME" \ + --body "$ARGV_FILE" diff --git a/scripts/publish/bintray-debian.sh b/scripts/publish/bintray-debian.sh index e8a311ff..41f218e6 100755 --- a/scripts/publish/bintray-debian.sh +++ b/scripts/publish/bintray-debian.sh @@ -22,9 +22,43 @@ set -e ./scripts/build/check-dependency.sh curl -if [ "$#" -ne 1 ]; then - echo "Usage: $0 " 1>&2 +function usage() { + echo "Usage: $0" + echo "" + echo "Options" + echo "" + echo " -f " + echo " -v " + echo " -r " + echo " -c " + echo " -t " exit 1 +} + +ARGV_FILE="" +ARGV_VERSION="" +ARGV_ARCHITECTURE="" +ARGV_COMPONENT_NAME="" +ARGV_RELEASE_TYPE="" + +while getopts ":f:v:r:c:t" option; do + case $option in + f) ARGV_FILE="$OPTARG" ;; + v) ARGV_VERSION="$OPTARG" ;; + r) ARGV_ARCHITECTURE="$OPTARG" ;; + c) ARGV_COMPONENT_NAME="$OPTARG" ;; + t) ARGV_RELEASE_TYPE="$OPTARG" ;; + *) usage ;; + esac +done + +if [ -z "$ARGV_FILE" ] || \ + [ -z "$ARGV_VERSION" ] || \ + [ -z "$ARGV_ARCHITECTURE" ] || \ + [ -z "$ARGV_COMPONENT_NAME" ] || \ + [ -z "$ARGV_RELEASE_TYPE" ] +then + usage fi set +u @@ -37,30 +71,24 @@ if [ -z "$BINTRAY_USER" ] || [ -z "$BINTRAY_API_KEY" ]; then fi set -u -ARGV_FILE=$1 -PACKAGE_COMPONENT=etcher -PACKAGE_DISTRIBUTION=stable +if [ "$ARGV_RELEASE_TYPE" == "production" ]; then + PACKAGE_DISTRIBUTION=stable +elif [ "$ARGV_RELEASE_TYPE" == "snapshot" ]; then + PACKAGE_DISTRIBUTION=devel +else + echo "Invalid release type: $ARGV_RELEASE_TYPE" 1>&2 + exit 1 +fi + PACKAGE_FILE_NAME=$(basename $ARGV_FILE) PACKAGE_NAME=${PACKAGE_FILE_NAME%.*} -PACKAGE_VERSION=$(echo $PACKAGE_NAME | cut -d_ -f2 | tr "~" "-") -PACKAGE_ARCH=$(echo $PACKAGE_NAME | cut -d_ -f3) - -if [ -z $PACKAGE_VERSION ]; then - echo "Couldn't infer the version from the package file name" 1>&2 - exit 1 -fi - -if [ -z $PACKAGE_ARCH ]; then - echo "Couldn't infer the architecture from the package file name" 1>&2 - exit 1 -fi curl --upload-file $ARGV_FILE \ --user $BINTRAY_USER:$BINTRAY_API_KEY \ --header "X-Bintray-Debian-Distribution: $PACKAGE_DISTRIBUTION" \ - --header "X-Bintray-Debian-Component: $PACKAGE_COMPONENT" \ - --header "X-Bintray-Debian-Architecture: $PACKAGE_ARCH" \ + --header "X-Bintray-Debian-Component: $ARGV_COMPONENT_NAME" \ + --header "X-Bintray-Debian-Architecture: $ARGV_ARCHITECTURE" \ --header "X-Bintray-Publish: 1" \ - https://api.bintray.com/content/resin-io/debian/$PACKAGE_COMPONENT/$PACKAGE_VERSION/$PACKAGE_FILE_NAME + https://api.bintray.com/content/resin-io/debian/$ARGV_COMPONENT_NAME/$ARGV_VERSION/$PACKAGE_FILE_NAME echo "$ARGV_FILE has been uploaded successfully"