Page MenuHomePhabricator (Chris)

No OneTemporary

Size
12 KB
Referenced Files
None
Subscribers
None
diff --git a/.travis.yml b/.travis.yml
index b057cc4..f01b234 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,37 +1,32 @@
language: cpp
compiler: gcc
sudo: require
dist: focal
before_install:
- sudo add-apt-repository ppa:beineri/opt-qt-5.14.2-focal -y
- sudo apt-get update -q
install:
- sudo apt-get -y install qt514base qt514svg libgl1-mesa-dev libssl-dev zlib1g-dev ruby
- source /opt/qt*/bin/qt*-env.sh
script:
+ - export PATH=./packaging/continuous-x86_64:$PATH
- ruby prepare.rb
- - mkdir -p _bin/ && cp /usr/lib/x86_64-linux-gnu/libz.a _bin/ # FIXME: Why is this needed?
+ - mkdir -p _bin/ && cp /usr/lib/x86_64-linux-gnu/libz.a _bin/
- qmake CONFIG+=release PREFIX=/usr
- make -j$(nproc)
- # FIXME: make: Nothing to be done for `install'.
- # make INSTALL_ROOT=appdir -j$(nproc) install ; find appdir/
- mkdir -p appdir/usr/bin && cp _bin/Guitar appdir/usr/bin/guitar && strip appdir/usr/bin/guitar && chmod a+x appdir/usr/bin/guitar
- mkdir -p appdir/usr/share/icons/hicolor/scalable/apps && cp LinuxDesktop/Guitar.svg appdir/usr/share/icons/hicolor/scalable/apps/guitar.svg
- mkdir -p appdir/usr/share/applications && cp LinuxDesktop/guitar.desktop appdir/usr/share/applications/
- mkdir -p appdir/usr/share/metainfo && cp LinuxDesktop/guitar.appdata.xml appdir/usr/share/metainfo/
- - find appdir/
- - wget -c -nv "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage"
- - chmod a+x linuxdeployqt-continuous-x86_64.AppImage
- - ./linuxdeployqt-continuous-x86_64.AppImage appdir/usr/share/applications/*.desktop -appimage
+ - linuxdeployqt appdir/usr/share/applications/*.desktop -appimage
after_success:
- - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh
- - bash upload.sh Guitar*.AppImage*
+ - ./packaging/continuous-x86_64/upload.sh Guitar*.AppImage*
branches:
except:
- # Do not build tags that we create when we upload to GitHub Releases
- /^(?i:continuous)/
diff --git a/packaging/continuous-x86_64/appimagetool b/packaging/continuous-x86_64/appimagetool
new file mode 100755
index 0000000..872c650
Binary files /dev/null and b/packaging/continuous-x86_64/appimagetool differ
diff --git a/packaging/continuous-x86_64/linuxdeployqt b/packaging/continuous-x86_64/linuxdeployqt
new file mode 100755
index 0000000..b1bcb55
Binary files /dev/null and b/packaging/continuous-x86_64/linuxdeployqt differ
diff --git a/packaging/continuous-x86_64/upload.sh b/packaging/continuous-x86_64/upload.sh
new file mode 100755
index 0000000..bd8f412
--- /dev/null
+++ b/packaging/continuous-x86_64/upload.sh
@@ -0,0 +1,269 @@
+#!/bin/bash
+
+set +x # Do not leak information
+
+# Exit immediately if one of the files given as arguments is not there
+# because we don't want to delete the existing release if we don't have
+# the new files that should be uploaded
+for file in "$@"
+do
+ if [ ! -e "$file" ]
+ then echo "$file is missing, giving up." >&2; exit 1
+ fi
+done
+
+if [ $# -eq 0 ]; then
+ echo "No artifacts to use for release, giving up."
+ exit 0
+fi
+
+if command -v sha256sum >/dev/null 2>&1 ; then
+ shatool="sha256sum"
+elif command -v shasum >/dev/null 2>&1 ; then
+ shatool="shasum -a 256" # macOS fallback
+else
+ echo "Neither sha256sum nor shasum is available, cannot check hashes"
+fi
+
+# The calling script (usually .travis.yml) can set a suffix to be used for
+# the tag and release name. This way it is possible to have a release for
+# the output of the CI/CD pipeline (marked as 'continuous') and also test
+# builds for other branches.
+# If this build was triggered by a tag, call the result a Release
+if [ ! -z "$UPLOADTOOL_SUFFIX" ] ; then
+ if [ "$UPLOADTOOL_SUFFIX" = "$TRAVIS_TAG" ] ; then
+ RELEASE_NAME="$TRAVIS_TAG"
+ RELEASE_TITLE="Release build ($TRAVIS_TAG)"
+ is_prerelease="false"
+ else
+ RELEASE_NAME="continuous-$UPLOADTOOL_SUFFIX"
+ RELEASE_TITLE="Continuous build ($UPLOADTOOL_SUFFIX)"
+ is_prerelease="true"
+ fi
+else
+ # ,, is a bash-ism to convert variable to lower case
+ case $(tr '[:upper:]' '[:lower:]' <<< "$TRAVIS_TAG") in
+ "")
+ # Do not use "latest" as it is reserved by GitHub
+ RELEASE_NAME="continuous"
+ RELEASE_TITLE="Continuous build"
+ is_prerelease="true"
+ ;;
+ *-alpha*|*-beta*|*-rc*)
+ RELEASE_NAME="$TRAVIS_TAG"
+ RELEASE_TITLE="Pre-release build ($TRAVIS_TAG)"
+ is_prerelease="true"
+ ;;
+ *)
+ RELEASE_NAME="$TRAVIS_TAG"
+ RELEASE_TITLE="Release build ($TRAVIS_TAG)"
+ is_prerelease="false"
+ ;;
+ esac
+fi
+
+if [ "$ARTIFACTORY_BASE_URL" != "" ]; then
+ echo "ARTIFACTORY_BASE_URL set, trying to upload to artifactory"
+
+ if [ "$ARTIFACTORY_API_KEY" == "" ]; then
+ echo "Please set ARTIFACTORY_API_KEY"
+ exit 1
+ fi
+
+ files="$@"
+
+ # artifactory doesn't support any kind of "artifact description", so we're uploading a text file containing the
+ # relevant details along with the other artifacts
+ tempdir=$(mktemp -d)
+ info_file="$tempdir"/build-info.txt
+ echo "Travis CI build log: ${TRAVIS_BUILD_WEB_URL}" > "$info_file"
+ files+=("$info_file")
+
+ set +x
+
+ for file in ${files[@]}; do
+ url="${ARTIFACTORY_BASE_URL}/travis-${TRAVIS_BUILD_NUMBER}/"$(basename "$file")
+ md5sum=$(md5sum "$file" | cut -d' ' -f1)
+ sha1sum=$(sha1sum "$file" | cut -d' ' -f1)
+ sha256sum=$(sha256sum "$file" | cut -d' ' -f1)
+ echo "Uploading $file to $url"
+ hashsums=(-H "X-Checksum-Md5:$md5sum")
+ hashsums+=(-H "X-Checksum-Sha1:$sha1sum")
+ hashsums+=(-H "X-Checksum-Sha256:$sha256sum")
+ if ! curl -H 'X-JFrog-Art-Api:'"$ARTIFACTORY_API_KEY" "${hashsums[@]}" -T "$file" "$url"; then
+ echo "Failed to upload file, exiting"
+ rm -r "$tempdir"
+ exit 1
+ fi
+ echo
+ echo "MD5 checksum: $md5sum"
+ echo "SHA1 checksum: $sha1sum"
+ echo "SHA256 checksum: $sha256sum"
+ done
+ rm -r "$tempdir"
+fi
+
+# Do not upload non-master branch builds
+# if [ "$TRAVIS_TAG" != "$TRAVIS_BRANCH" ] && [ "$TRAVIS_BRANCH" != "master" ]; then export TRAVIS_EVENT_TYPE=pull_request; fi
+if [ "$TRAVIS_EVENT_TYPE" == "pull_request" ] ; then
+ echo "Release uploading disabled for pull requests"
+ if [ "$ARTIFACTORY_BASE_URL" != "" ]; then
+ echo "Releases have already been uploaded to Artifactory, exiting"
+ exit 0
+ else
+ echo "Release uploading disabled for pull requests, uploading to transfersh.com instead"
+ rm -f ./uploaded-to
+ for FILE in "$@" ; do
+ BASENAME="$(basename "${FILE}")"
+ curl --upload-file $FILE "https://transfersh.com/$BASENAME" > ./one-upload
+ echo "$(cat ./one-upload)" # this way we get a newline
+ echo -n "$(cat ./one-upload)\\n" >> ./uploaded-to # this way we get a \n but no newline
+ done
+ fi
+# review_url="https://api.github.com/repos/${TRAVIS_REPO_SLUG}/pulls/${TRAVIS_PULL_REQUEST}/reviews"
+# if [ -z $UPLOADTOOL_PR_BODY ] ; then
+# body="Travis CI has created build artifacts for this PR here:"
+# else
+# body="$UPLOADTOOL_PR_BODY"
+# fi
+# body="$body\n$(cat ./uploaded-to)\nThe link(s) will expire 14 days from now."
+# review_comment=$(curl -X POST \
+# --header "Authorization: token ${GITHUB_TOKEN}" \
+# --data '{"commit_id": "'"$TRAVIS_COMMIT"'","body": "'"$body"'","event": "COMMENT"}' \
+# $review_url)
+# if echo $review_comment | grep -q "Bad credentials" 2>/dev/null ; then
+# echo '"Bad credentials" response for --data {"commit_id": "'"$TRAVIS_COMMIT"'","body": "'"$body"'","event": "COMMENT"}'
+# fi
+ $shatool "$@"
+ exit 0
+fi
+
+if [ ! -z "$TRAVIS_REPO_SLUG" ] ; then
+ # We are running on Travis CI
+ echo "Running on Travis CI"
+ echo "TRAVIS_COMMIT: $TRAVIS_COMMIT"
+ REPO_SLUG="$TRAVIS_REPO_SLUG"
+ if [ -z "$GITHUB_TOKEN" ] ; then
+ echo "\$GITHUB_TOKEN missing, please set it in the Travis CI settings of this project"
+ echo "You can get one from https://github.com/settings/tokens"
+ exit 1
+ fi
+else
+ # We are not running on Travis CI
+ echo "Not running on Travis CI"
+ if [ -z "$REPO_SLUG" ] ; then
+ read -r -p "Repo Slug (GitHub and Travis CI username/reponame): " REPO_SLUG
+ fi
+ if [ -z "$GITHUB_TOKEN" ] ; then
+ read -r -s -p "Token (https://github.com/settings/tokens): " GITHUB_TOKEN
+ fi
+fi
+
+tag_url="https://api.github.com/repos/$REPO_SLUG/git/refs/tags/$RELEASE_NAME"
+tag_infos=$(curl -XGET --header "Authorization: token ${GITHUB_TOKEN}" "${tag_url}")
+echo "tag_infos: $tag_infos"
+tag_sha=$(echo "$tag_infos" | grep '"sha":' | head -n 1 | cut -d '"' -f 4 | cut -d '{' -f 1)
+echo "tag_sha: $tag_sha"
+
+release_url="https://api.github.com/repos/$REPO_SLUG/releases/tags/$RELEASE_NAME"
+echo "Getting the release ID..."
+echo "release_url: $release_url"
+release_infos=$(curl -XGET --header "Authorization: token ${GITHUB_TOKEN}" "${release_url}")
+echo "release_infos: $release_infos"
+release_id=$(echo "$release_infos" | grep "\"id\":" | head -n 1 | tr -s " " | cut -f 3 -d" " | cut -f 1 -d ",")
+echo "release ID: $release_id"
+upload_url=$(echo "$release_infos" | grep '"upload_url":' | head -n 1 | cut -d '"' -f 4 | cut -d '{' -f 1)
+echo "upload_url: $upload_url"
+release_url=$(echo "$release_infos" | grep '"url":' | head -n 1 | cut -d '"' -f 4 | cut -d '{' -f 1)
+echo "release_url: $release_url"
+target_commit_sha=$(echo "$release_infos" | grep '"target_commitish":' | head -n 1 | cut -d '"' -f 4 | cut -d '{' -f 1)
+echo "target_commit_sha: $target_commit_sha"
+
+if [ "$TRAVIS_COMMIT" != "$target_commit_sha" ] ; then
+
+ echo "TRAVIS_COMMIT != target_commit_sha, hence deleting $RELEASE_NAME..."
+
+ if [ ! -z "$release_id" ]; then
+ delete_url="https://api.github.com/repos/$REPO_SLUG/releases/$release_id"
+ echo "Delete the release..."
+ echo "delete_url: $delete_url"
+ curl -XDELETE \
+ --header "Authorization: token ${GITHUB_TOKEN}" \
+ "${delete_url}"
+ fi
+
+ # echo "Checking if release with the same name is still there..."
+ # echo "release_url: $release_url"
+ # curl -XGET --header "Authorization: token ${GITHUB_TOKEN}" \
+ # "$release_url"
+
+ if [ "$RELEASE_NAME" == "continuous" ] ; then
+ # if this is a continuous build tag, then delete the old tag
+ # in preparation for the new release
+ echo "Delete the tag..."
+ delete_url="https://api.github.com/repos/$REPO_SLUG/git/refs/tags/$RELEASE_NAME"
+ echo "delete_url: $delete_url"
+ curl -XDELETE \
+ --header "Authorization: token ${GITHUB_TOKEN}" \
+ "${delete_url}"
+ fi
+
+ echo "Create release..."
+
+ if [ -z "$TRAVIS_BRANCH" ] ; then
+ TRAVIS_BRANCH="master"
+ fi
+
+ if [ ! -z "$TRAVIS_JOB_ID" ] ; then
+ if [ -z "${UPLOADTOOL_BODY+x}" ] ; then
+ BODY="Travis CI build log: ${TRAVIS_BUILD_WEB_URL}"
+ else
+ BODY="$UPLOADTOOL_BODY"
+ fi
+ else
+ BODY="$UPLOADTOOL_BODY"
+ fi
+
+ release_infos=$(curl -H "Authorization: token ${GITHUB_TOKEN}" \
+ --data '{"tag_name": "'"$RELEASE_NAME"'","target_commitish": "'"$TRAVIS_COMMIT"'","name": "'"$RELEASE_TITLE"'","body": "'"$BODY"'","draft": false,"prerelease": '$is_prerelease'}' "https://api.github.com/repos/$REPO_SLUG/releases")
+
+ echo "$release_infos"
+
+ unset upload_url
+ upload_url=$(echo "$release_infos" | grep '"upload_url":' | head -n 1 | cut -d '"' -f 4 | cut -d '{' -f 1)
+ echo "upload_url: $upload_url"
+
+ unset release_url
+ release_url=$(echo "$release_infos" | grep '"url":' | head -n 1 | cut -d '"' -f 4 | cut -d '{' -f 1)
+ echo "release_url: $release_url"
+
+fi # if [ "$TRAVIS_COMMIT" != "$tag_sha" ]
+
+if [ -z "$release_url" ] ; then
+ echo "Cannot figure out the release URL for $RELEASE_NAME"
+ exit 1
+fi
+
+echo "Upload binaries to the release..."
+
+for FILE in "$@" ; do
+ FULLNAME="${FILE}"
+ BASENAME="$(basename "${FILE}")"
+ curl -H "Authorization: token ${GITHUB_TOKEN}" \
+ -H "Accept: application/vnd.github.manifold-preview" \
+ -H "Content-Type: application/octet-stream" \
+ --data-binary @$FULLNAME \
+ "$upload_url?name=$BASENAME"
+ echo ""
+done
+
+$shatool "$@"
+
+if [ "$TRAVIS_COMMIT" != "$tag_sha" ] ; then
+ echo "Publish the release..."
+
+ release_infos=$(curl -H "Authorization: token ${GITHUB_TOKEN}" \
+ --data '{"draft": false}' "$release_url")
+
+ echo "$release_infos"
+fi # if [ "$TRAVIS_COMMIT" != "$tag_sha" ]

File Metadata

Mime Type
text/x-diff
Expires
Fri, Sep 12, 9:33 PM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
42941
Default Alt Text
(12 KB)

Event Timeline