chore: publish development Bintray packages (#1611)

This commit includes several changes to adapt the CI configuration files
and Bintray publish script to perform development deployments.

- Move our Bintray details to the Makefile
- Deploy to a new Bintray component if `RELEASE_TYPE` is `snapshot`
- Call `publish-bintray-debian` and `publish-bintray-redhat` in the CI
  deployment script
- Call the Bintray deployment scripts for RPMs

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
This commit is contained in:
Juan Cruz Viotti 2017-08-01 10:29:09 -04:00 committed by GitHub
parent 1103492193
commit de62b2e65c
5 changed files with 62 additions and 40 deletions

View File

@ -67,7 +67,7 @@ script:
deploy: deploy:
provider: script provider: script
skip_cleanup: true skip_cleanup: true
script: scripts/ci/deploy-aws-s3.sh -o $HOST_OS -r $TARGET_ARCH script: scripts/ci/deploy.sh -o $HOST_OS -r $TARGET_ARCH
on: on:
branch: master branch: master

View File

@ -26,6 +26,29 @@ APPLICATION_NAME = $(shell jq -r '.displayName' package.json)
APPLICATION_DESCRIPTION = $(shell jq -r '.description' package.json) APPLICATION_DESCRIPTION = $(shell jq -r '.description' package.json)
APPLICATION_COPYRIGHT = $(shell cat electron-builder.yml | shyaml get-value copyright) APPLICATION_COPYRIGHT = $(shell cat electron-builder.yml | shyaml get-value copyright)
BINTRAY_ORGANIZATION = resin-io
BINTRAY_REPOSITORY_DEBIAN = debian
BINTRAY_REPOSITORY_REDHAT = redhat
# ---------------------------------------------------------------------
# Extra variables
# ---------------------------------------------------------------------
TARGET_ARCH_DEBIAN = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t debian)
TARGET_ARCH_REDHAT = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t redhat)
TARGET_ARCH_APPIMAGE = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t appimage)
TARGET_ARCH_ELECTRON_BUILDER = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t electron-builder)
PLATFORM_PKG = $(shell ./scripts/build/platform-convert.sh -r $(PLATFORM) -t pkg)
ENTRY_POINT_CLI = lib/cli/etcher.js
ETCHER_CLI_BINARY = $(APPLICATION_NAME_LOWERCASE)
ifeq ($(TARGET_PLATFORM),win32)
ETCHER_CLI_BINARY = $(APPLICATION_NAME_LOWERCASE).exe
endif
APPLICATION_NAME_LOWERCASE = $(shell echo $(APPLICATION_NAME) | tr A-Z a-z)
APPLICATION_VERSION_DEBIAN = $(shell echo $(APPLICATION_VERSION) | tr "-" "~")
APPLICATION_VERSION_REDHAT = $(shell echo $(APPLICATION_VERSION) | tr "-" "~")
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
# Release type # Release type
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
@ -36,11 +59,13 @@ PACKAGE_JSON_VERSION = $(shell jq -r '.version' package.json)
ifeq ($(RELEASE_TYPE),production) ifeq ($(RELEASE_TYPE),production)
APPLICATION_VERSION = $(PACKAGE_JSON_VERSION) APPLICATION_VERSION = $(PACKAGE_JSON_VERSION)
S3_BUCKET = resin-production-downloads S3_BUCKET = resin-production-downloads
BINTRAY_COMPONENT = $(APPLICATION_NAME_LOWERCASE)
endif endif
ifeq ($(RELEASE_TYPE),snapshot) ifeq ($(RELEASE_TYPE),snapshot)
CURRENT_COMMIT_HASH = $(shell git log -1 --format="%h") CURRENT_COMMIT_HASH = $(shell git log -1 --format="%h")
APPLICATION_VERSION = $(PACKAGE_JSON_VERSION)+$(CURRENT_COMMIT_HASH) APPLICATION_VERSION = $(PACKAGE_JSON_VERSION)+$(CURRENT_COMMIT_HASH)
S3_BUCKET = resin-nightly-downloads S3_BUCKET = resin-nightly-downloads
BINTRAY_COMPONENT = $(APPLICATION_NAME_LOWERCASE)-devel
endif endif
ifndef APPLICATION_VERSION ifndef APPLICATION_VERSION
$(error Invalid release type: $(RELEASE_TYPE)) $(error Invalid release type: $(RELEASE_TYPE))
@ -164,26 +189,6 @@ else
ELECTRON_BUILDER_OPTIONS += --extraMetadata.analytics.mixpanel.token=$(ANALYTICS_MIXPANEL_TOKEN) ELECTRON_BUILDER_OPTIONS += --extraMetadata.analytics.mixpanel.token=$(ANALYTICS_MIXPANEL_TOKEN)
endif endif
# ---------------------------------------------------------------------
# Extra variables
# ---------------------------------------------------------------------
TARGET_ARCH_DEBIAN = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t debian)
TARGET_ARCH_REDHAT = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t redhat)
TARGET_ARCH_APPIMAGE = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t appimage)
TARGET_ARCH_ELECTRON_BUILDER = $(shell ./scripts/build/architecture-convert.sh -r $(TARGET_ARCH) -t electron-builder)
PLATFORM_PKG = $(shell ./scripts/build/platform-convert.sh -r $(PLATFORM) -t pkg)
ENTRY_POINT_CLI = lib/cli/etcher.js
ETCHER_CLI_BINARY = $(APPLICATION_NAME_LOWERCASE)
ifeq ($(PLATFORM),win32)
ETCHER_CLI_BINARY = $(APPLICATION_NAME_LOWERCASE).exe
endif
PRODUCT_NAME = etcher
APPLICATION_NAME_LOWERCASE = $(shell echo $(APPLICATION_NAME) | tr A-Z a-z)
APPLICATION_VERSION_DEBIAN = $(shell echo $(APPLICATION_VERSION) | tr "-" "~")
APPLICATION_VERSION_REDHAT = $(shell echo $(APPLICATION_VERSION) | tr "-" "~")
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
# Rules # Rules
# --------------------------------------------------------------------- # ---------------------------------------------------------------------
@ -448,14 +453,14 @@ ifeq ($(RELEASE_TYPE),production)
-f $(publishable) \ -f $(publishable) \
-b $(S3_BUCKET) \ -b $(S3_BUCKET) \
-v $(APPLICATION_VERSION) \ -v $(APPLICATION_VERSION) \
-p $(PRODUCT_NAME))) -p $(APPLICATION_NAME_LOWERCASE)))
endif endif
ifeq ($(RELEASE_TYPE),snapshot) ifeq ($(RELEASE_TYPE),snapshot)
$(foreach publishable,$^,$(call execute-command,./scripts/publish/aws-s3.sh \ $(foreach publishable,$^,$(call execute-command,./scripts/publish/aws-s3.sh \
-f $(publishable) \ -f $(publishable) \
-b $(S3_BUCKET) \ -b $(S3_BUCKET) \
-v $(APPLICATION_VERSION) \ -v $(APPLICATION_VERSION) \
-p $(PRODUCT_NAME) \ -p $(APPLICATION_NAME_LOWERCASE) \
-k $(shell date +"%Y-%m-%d"))) -k $(shell date +"%Y-%m-%d")))
endif endif
@ -464,19 +469,28 @@ endif
ifdef PUBLISH_BINTRAY_DEBIAN ifdef PUBLISH_BINTRAY_DEBIAN
publish-bintray-debian: $(PUBLISH_BINTRAY_DEBIAN) publish-bintray-debian: $(PUBLISH_BINTRAY_DEBIAN)
$(foreach publishable,$^,$(call execute-command,./scripts/publish/bintray-debian.sh \ $(foreach publishable,$^,$(call execute-command,./scripts/publish/bintray.sh \
-f $(publishable) \ -f $(publishable) \
-v $(APPLICATION_VERSION_DEBIAN) \ -v $(APPLICATION_VERSION_DEBIAN) \
-r $(TARGET_ARCH) \ -r $(TARGET_ARCH) \
-c $(APPLICATION_NAME_LOWERCASE) \ -t $(RELEASE_TYPE) \
-t $(RELEASE_TYPE))) -o $(BINTRAY_ORGANIZATION) \
-p $(BINTRAY_REPOSITORY_DEBIAN) \
-c $(BINTRAY_COMPONENT)))
TARGETS += publish-bintray-debian TARGETS += publish-bintray-debian
endif endif
ifdef PUBLISH_BINTRAY_REDHAT ifdef PUBLISH_BINTRAY_REDHAT
publish-bintray-redhat: $(PUBLISH_BINTRAY_REDHAT) publish-bintray-redhat: $(PUBLISH_BINTRAY_REDHAT)
# TODO: Update this after we've created ./scripts/publish/bintray-redhat.sh $(foreach publishable,$^,$(call execute-command,./scripts/publish/bintray.sh \
-f $(publishable) \
-v $(APPLICATION_VERSION_REDHAT) \
-r $(TARGET_ARCH) \
-t $(RELEASE_TYPE) \
-o $(BINTRAY_ORGANIZATION) \
-p $(BINTRAY_REPOSITORY_REDHAT) \
-c $(BINTRAY_COMPONENT)))
TARGETS += publish-bintray-redhat TARGETS += publish-bintray-redhat
endif endif

View File

@ -43,7 +43,7 @@ test_script:
- bash .\scripts\ci\build-installers.sh -o win32 -r %TARGET_ARCH% - bash .\scripts\ci\build-installers.sh -o win32 -r %TARGET_ARCH%
deploy_script: deploy_script:
- bash .\scripts\ci\deploy-aws-s3.sh -o win32 -r %TARGET_ARCH% - if %APPVEYOR_REPO_BRANCH%==master (bash .\scripts\ci\deploy.sh -o win32 -r %TARGET_ARCH%)
notifications: notifications:

View File

@ -48,8 +48,8 @@ if [ "$ARGV_OPERATING_SYSTEM" == "linux" ]; then
./scripts/build/docker/run-command.sh \ ./scripts/build/docker/run-command.sh \
-r "$ARGV_ARCHITECTURE" \ -r "$ARGV_ARCHITECTURE" \
-s "$(pwd)" \ -s "$(pwd)" \
-c "make publish-aws-s3" -c "make installers-all"
else else
./scripts/build/check-dependency.sh make ./scripts/build/check-dependency.sh make
make publish-aws-s3 make installers-all
fi fi

View File

@ -1,6 +1,5 @@
#!/bin/bash #!/bin/bash
### ###
# Copyright 2016 resin.io # Copyright 2016 resin.io
# #
@ -28,26 +27,32 @@ function usage() {
echo "Options" echo "Options"
echo "" echo ""
echo " -f <file>" echo " -f <file>"
echo " -v <debian-friendly version>" echo " -v <version>"
echo " -r <architecture>" echo " -r <architecture>"
echo " -c <component name>"
echo " -t <release type (production|snapshot)>" echo " -t <release type (production|snapshot)>"
echo " -o <bintray organization>"
echo " -p <bintray repository>"
echo " -c <bintray component>"
exit 1 exit 1
} }
ARGV_FILE="" ARGV_FILE=""
ARGV_VERSION="" ARGV_VERSION=""
ARGV_ARCHITECTURE="" ARGV_ARCHITECTURE=""
ARGV_COMPONENT_NAME=""
ARGV_RELEASE_TYPE="" ARGV_RELEASE_TYPE=""
ARGV_ORGANIZATION=""
ARGV_REPOSITORY=""
ARGV_COMPONENT=""
while getopts ":f:v:r:c:t:" option; do while getopts ":f:v:r:t:o:p:c:" option; do
case $option in case $option in
f) ARGV_FILE="$OPTARG" ;; f) ARGV_FILE="$OPTARG" ;;
v) ARGV_VERSION="$OPTARG" ;; v) ARGV_VERSION="$OPTARG" ;;
r) ARGV_ARCHITECTURE="$OPTARG" ;; r) ARGV_ARCHITECTURE="$OPTARG" ;;
c) ARGV_COMPONENT_NAME="$OPTARG" ;;
t) ARGV_RELEASE_TYPE="$OPTARG" ;; t) ARGV_RELEASE_TYPE="$OPTARG" ;;
o) ARGV_ORGANIZATION="$OPTARG" ;;
p) ARGV_REPOSITORY="$OPTARG" ;;
c) ARGV_COMPONENT="$OPTARG" ;;
*) usage ;; *) usage ;;
esac esac
done done
@ -55,8 +60,10 @@ done
if [ -z "$ARGV_FILE" ] || \ if [ -z "$ARGV_FILE" ] || \
[ -z "$ARGV_VERSION" ] || \ [ -z "$ARGV_VERSION" ] || \
[ -z "$ARGV_ARCHITECTURE" ] || \ [ -z "$ARGV_ARCHITECTURE" ] || \
[ -z "$ARGV_COMPONENT_NAME" ] || \ [ -z "$ARGV_RELEASE_TYPE" ] || \
[ -z "$ARGV_RELEASE_TYPE" ] [ -z "$ARGV_ORGANIZATION" ] || \
[ -z "$ARGV_REPOSITORY" ] || \
[ -z "$ARGV_COMPONENT" ]
then then
usage usage
fi fi
@ -87,9 +94,10 @@ PACKAGE_ARCHITECTURE=$(./scripts/build/architecture-convert.sh -r "$ARGV_ARCHITE
curl --upload-file $ARGV_FILE \ curl --upload-file $ARGV_FILE \
--user $BINTRAY_USER:$BINTRAY_API_KEY \ --user $BINTRAY_USER:$BINTRAY_API_KEY \
--header "X-Bintray-Debian-Distribution: $PACKAGE_DISTRIBUTION" \ --header "X-Bintray-Debian-Distribution: $PACKAGE_DISTRIBUTION" \
--header "X-Bintray-Debian-Component: $ARGV_COMPONENT_NAME" \ --header "X-Bintray-Debian-Component: $ARGV_COMPONENT" \
--header "X-Bintray-Debian-Architecture: $PACKAGE_ARCHITECTURE" \ --header "X-Bintray-Debian-Architecture: $PACKAGE_ARCHITECTURE" \
--header "X-Bintray-Override: 1" \
--header "X-Bintray-Publish: 1" \ --header "X-Bintray-Publish: 1" \
https://api.bintray.com/content/resin-io/debian/$ARGV_COMPONENT_NAME/$ARGV_VERSION/$PACKAGE_FILE_NAME https://api.bintray.com/content/$ARGV_ORGANIZATION/$ARGV_REPOSITORY/$ARGV_COMPONENT/$ARGV_VERSION/$PACKAGE_FILE_NAME
echo "$ARGV_FILE has been uploaded successfully" echo "$ARGV_FILE has been uploaded successfully"