Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,12 +101,15 @@ jobs:
- name: lxd
channel: stable
env:
- SNAPCRAFT_IMAGE_INFO: '{"build_url": "$TRAVIS_BUILD_URL"}'
- SNAPCRAFT_IMAGE_INFO: |
'{"build_url": "$TRAVIS_JOB_WEB_URL"}'
- SNAPCRAFT_BUILD_ENVIRONMENT: lxd
- SNAPCRAFT_BUILD_INFO: 1 # https://snapcraft.io/blog/introducing-developer-notifications-for-snap-security-updates
install:
- sudo usermod --append --groups lxd $USER
- sudo /snap/bin/lxd.migrate -yes
- sudo /snap/bin/lxd waitready
- sudo /snap/bin/lxd init --auto
- git fetch --tags
script:
- ./scripts/build_snap.sh
after_failure:
Expand Down Expand Up @@ -157,6 +160,14 @@ deploy:
script: "(echo $SNAP_TOKEN | snapcraft login --with -) && timeout 600 snapcraft push dvc_*.snap --release $SNAP_CHANNEL || echo timed out"
on:
all_branches: true
condition: "$(./scripts/ci/deploy_condition.sh dvc_*.snap) && ($TRAVIS_BRANCH = master || -n $TRAVIS_TAG)"
condition: "$(./scripts/ci/deploy_condition.sh dvc_*.snap) && ($TRAVIS_BRANCH = master || -n $TRAVIS_TAG) && -n $SNAP_CHANNEL"
repo: iterative/dvc
stage: build
- provider: script
skip_cleanup: true
script: "(echo $SNAP_TOKEN | snapcraft login --with -) && timeout 600 snapcraft push nowarn_update_dvc_*.snap --release $SNAP_CHANNEL_MAJOR || echo timed out"
on:
all_branches: true
condition: "$(./scripts/ci/deploy_condition.sh nowarn_update_dvc_*.snap) && ($TRAVIS_BRANCH = master || -n $TRAVIS_TAG) && -n $SNAP_CHANNEL_MAJOR"
repo: iterative/dvc
stage: build
21 changes: 20 additions & 1 deletion dvc/updater.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,15 @@ def _with_lock(self, func, action):
logger.debug(msg.format(self.lock.lockfile, action))

def check(self):
if os.getenv("CI") or env2bool("DVC_TEST") or PKG == "snap":
if os.getenv("CI") or env2bool("DVC_TEST"):
return

if PKG == "snap":
# hardcoded transition message
version_major = version.parse(self.current).major
self.current = "v{}".format(version_major)
self.latest = "v{}".format(version_major + 1)
self._notify()
return

self._with_lock(self._check, "checking")
Expand Down Expand Up @@ -138,6 +146,17 @@ def _get_update_instructions(self):
),
"conda": "Run `{yellow}conda{reset} update dvc`",
"choco": "Run `{yellow}choco{reset} upgrade dvc`",
"snap": (
"To upgrade to the latest major release,\n"
"run `{yellow}snap{reset} refresh --channel=latest/beta`, or\n"
"to stay on the current major release track,\n"
"run `{yellow}snap{reset} refresh --channel={current}/stable`"
"\n\n"
"{red}WARNING{reset}: ignoring this message will result in\n"
"snap automatically performing an upgrade soon.\n"
"More information can be found at\n"
"{blue}https://github.com/iterative/dvc/issues/3872{reset}"
Copy link
Contributor Author

@casperdcl casperdcl Jun 12, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ideally need a dvc.org link to migration/breaking changes.

https://dvc.org/doc/install/pre-release is currently not quite appropriate.

),
None: (
"Find the latest release at\n"
"{blue}https://github.com/iterative/dvc/releases/latest{reset}"
Expand Down
9 changes: 8 additions & 1 deletion scripts/build_snap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,14 @@ if [ ! -d "dvc" ]; then
exit 1
fi

sudo snapcraft --use-lxd
sg lxd -c snapcraft
original_snap_name="$(ls dvc_*.snap)"
mv "$original_snap_name" original.snap

git apply scripts/remove_update_warning.patch
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will make dvc --version show up as dirty

Copy link
Contributor Author

@casperdcl casperdcl Jun 12, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes; I don't think that's an issue.

sg lxd -c snapcraft
mv dvc_*.snap nowarn_update_"$original_snap_name".snap
mv original.snap "$original_snap_name"

pip uninstall -y dvc
if which dvc; then
Expand Down
13 changes: 13 additions & 0 deletions scripts/ci/before_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,12 +51,25 @@ elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
ln -s -f /usr/local/bin/pip3 /usr/local/bin/pip
fi

# fetch tags for `git-describe`, since
# - can't rely on $TRAVIS_TAG for `edge` (master) releases, and
# - `snapcraft` also uses `git-describe` for version detection
git fetch --tags
TAG_MAJOR="$(git describe --tags | sed -r 's/^v?([0-9]+)\.[0-9]+\.[0-9]+.*/\1/')"
[[ -n "$TAG_MAJOR" ]] || exit 1 # failed to detect major version

if [[ -n "$TRAVIS_TAG" ]]; then
if [[ $(echo "$TRAVIS_TAG" | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$') ]]; then
echo "export SNAP_CHANNEL=stable" >>env.sh
echo "export SNAP_CHANNEL_MAJOR=v$TAG_MAJOR/stable" >>env.sh
else
echo "export SNAP_CHANNEL=beta" >>env.sh
echo "export SNAP_CHANNEL_MAJOR=v$TAG_MAJOR/beta" >>env.sh
fi
else
echo "export SNAP_CHANNEL=edge" >>env.sh
echo "export SNAP_CHANNEL_MAJOR=v$TAG_MAJOR/edge" >>env.sh
fi

# NOTE: after deprecating this branch, uncomment this line
# echo "unset SNAP_CHANNEL" >>env.sh
51 changes: 51 additions & 0 deletions scripts/remove_update_warning.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
diff --git a/dvc/updater.py b/dvc/updater.py
index d6dc372..cfa416f 100644
--- a/dvc/updater.py
+++ b/dvc/updater.py
@@ -48,15 +48,7 @@ class Updater(object): # pragma: no cover
logger.debug(msg.format(self.lock.lockfile, action))

def check(self):
- if os.getenv("CI") or env2bool("DVC_TEST"):
- return
-
- if PKG == "snap":
- # hardcoded transition message
- version_major = version.parse(self.current).major
- self.current = "v{}".format(version_major)
- self.latest = "v{}".format(version_major + 1)
- self._notify()
+ if os.getenv("CI") or env2bool("DVC_TEST") or PKG == "snap":
return

self._with_lock(self._check, "checking")
@@ -146,17 +138,6 @@ class Updater(object): # pragma: no cover
),
"conda": "Run `{yellow}conda{reset} update dvc`",
"choco": "Run `{yellow}choco{reset} upgrade dvc`",
- "snap": (
- "To upgrade to the latest major release,\n"
- "run `{yellow}snap{reset} refresh --channel=latest/beta`, or\n"
- "to stay on the current major release track,\n"
- "run `{yellow}snap{reset} refresh --channel={current}/stable`"
- "\n\n"
- "{red}WARNING{reset}: ignoring this message will result in\n"
- "snap automatically performing an upgrade soon.\n"
- "More information can be found at\n"
- "{blue}https://github.com/iterative/dvc/issues/3872{reset}"
- ),
None: (
"Find the latest release at\n"
"{blue}https://github.com/iterative/dvc/releases/latest{reset}"
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index 75d0f7d..996db8c 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -30,7 +30,6 @@ parts:
override-pull: |
snapcraftctl pull
snapcraftctl set-version $(cd $SNAPCRAFT_PART_SRC && git describe --tags)
- git diff --quiet || error_dirty_build
echo 'PKG = "snap"' > $SNAPCRAFT_PART_SRC/dvc/utils/build.py
# install all optional extras
sed -ri 's/(=install_requires)/\1+all_remotes+hdfs/' $SNAPCRAFT_PART_SRC/setup.py