aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicha Gorelick <mynameisfiber@gmail.com>2018-11-03 11:08:30 -0400
committerChristian Duerr <chrisduerr@users.noreply.github.com>2018-11-03 15:08:30 +0000
commit77816797e80d42d5fb626379a15dc94c09cd3694 (patch)
tree445f7b37a73ab108c0503ca59621e3d54de42229
parentfd8af0df3395a13f7fe670e293ee9584669aa7bd (diff)
downloadalacritty-77816797e80d42d5fb626379a15dc94c09cd3694.tar.gz
alacritty-77816797e80d42d5fb626379a15dc94c09cd3694.zip
Publish Github releases from Travis
This release introduces some config to automatically build deploy a binaries on the github release page using travis. The build only happens when a commit is tagged and it uses the stable version of rust. The main travis sections (install/script/before_deploy) have been moved out of the .travis.yml to make it easier to read, maintain and extend the different steps of the CI process. Since checking for the Rust version in CI is enough to know if clippy should be used or not, the environment variable `CLIPPY` has also been removed, which further allowed simplifying the CI process. Besides the executables, some auxillary files are now also published as part of a release when they have changed since the last tagged Alacritty release. This should make it clear for returning users when a new version of a specific auxillary file is required. Instead of using the 14.04 image which travis provides by default, an 18.04 docker image is used to build the output binaries for Linux. This affects both the .deb and the .tar.gz binary. The advantage of this is that while binaries compiled on 14.04, do not work on 18.04, it does work the other way around. The generated .tar.gz binary has been tested on 18.04, Debian, Fedora and Archlinux and all systems were able to run it without any warnings or errors.
-rw-r--r--.travis.yml42
-rw-r--r--CHANGELOG.md1
-rw-r--r--Cargo.toml2
-rw-r--r--ci/Dockerfile7
-rwxr-xr-xci/before_deploy.sh59
-rwxr-xr-xci/install.sh6
-rwxr-xr-xci/script.sh29
7 files changed, 123 insertions, 23 deletions
diff --git a/.travis.yml b/.travis.yml
index 0e78d82b..53b754ec 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,11 +1,12 @@
language: rust
-sudo: false
+
+sudo: required
+services:
+ - docker
git:
depth: 1
-cache: cargo
-
os:
- linux
- osx
@@ -15,28 +16,25 @@ rust:
- stable
- nightly
-env:
- - CLIPPY="true"
- - CLIPPY=""
-
-install:
- - if [ -n "$CLIPPY" ]; then rustup component add clippy-preview; fi
-
matrix:
fast_finish: true
- exclude:
- - rust: stable
- env: CLIPPY="true"
- - rust: nightly
- env: CLIPPY=""
allow_failures:
- rust: nightly
- os: windows
-script:
- - if [ "$TRAVIS_OS_NAME" == "windows" ]; then choco install llvm --norestart --nosilent; fi
-
- - if [ -n "$CLIPPY" ]; then cargo clippy --all-features --all-targets; fi
- - if [ -z "$CLIPPY" ]; then cargo test; fi
- - if [ -z "$CLIPPY" ]; then cargo test -p font; fi
- - if [ "$TRAVIS_OS_NAME" == "windows" ]; then cp target/debug/winpty-agent.exe target/debug/deps && cargo test -p winpty; fi
+install: ci/install.sh
+script: ci/script.sh
+before_deploy: ci/before_deploy.sh
+
+deploy:
+ provider: releases
+ api_key:
+ secure: G6JZgC5qKZyxEmuu2eMscDO45iOhBjiCSKuO8gxywqm+4DbMZm7y2OSbQCEmnIFqEgi+DLkrH/A7e8LDngQj3lBvRnWkIcszG5ubDm8jsqckXXxjI0cy5q8jJ7s5zZXH2IdXifY59KN9V4iHPwCJlyEE7Aj9JrJLFaVhvaowlSYib9DuDibDX/2u8qZ+gP2D/TntiBlFi8SgiDPd7GrZWmNsxJR9edyYbKx9izROp+4q7KAa0Xqak/Zvg72JZnARiKPmBxESEoYYXFcRgRZD9VvjmQ/il6WcHlGSqqn1TRBtIVl8L/1I5/xBJ6KMegP9Jlh7ybm1JPfX108V5d9a9CyqvRYHrhbkHkf5oktizsgw2WyANwiBhEngliMFuUyT0826BEPtkA4TiD7lQXyvO749INdJsqUlMLLuQNpU9/7ShBcRapbGp6AjWH8yxV9ciNMpNexAaxkupYc2NaU6EAC/C34HAtTdfN+gyvrtnF1ISrPmmGj8YQRiBUsa4TxghsNPbPHWAgMfR5lFp3dONz0oIydhW/AFgpn+7BVvoIW2z8hXiRttseZHv6akeSjFC5vYObR3UdL/NiuvCjZRiYryL0Be/rI83ug8xELVFBBcv4PxcHEsXWT7EMd3QTiPoCwNKoSoBLk8hPFPAGRXULiSDFENKoJAc4A7zJyMiYY=
+ skip_cleanup: true
+ file_glob: true
+ file: "./target/deploy/*"
+ on:
+ tags: true
+ rust: stable
+ repo: jwilm/alacritty
+ branch: master
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5e9cb5f2..327b4a9c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Allow using scancodes in the key_bindings section
- When `mouse.url.launcher` is set, clicking on URLs will now open them with the specified program
- New `mouse.url.modifiers` option to specify keyboard modifiers for opening URLs on click
+- Binaries for macOS, Windows and Debian-based Systems are now published with Github releases
### Changed
diff --git a/Cargo.toml b/Cargo.toml
index e985de85..eef025ba 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -92,7 +92,7 @@ Alacritty is the fastest terminal emulator in existence. Using the GPU for \
rendering enables optimizations that simply aren't possible in other emulators. \
Alacritty currently supports FreeBSD, Linux, macOS, and OpenBSD. Windows \
support is planned before the 1.0 release. """
-depends = "$auto, cmake, libfreetype6-dev, libfontconfig1-dev, xclip"
+depends = "$auto"
section = "rust"
priority = "optional"
assets = [
diff --git a/ci/Dockerfile b/ci/Dockerfile
new file mode 100644
index 00000000..573de9a3
--- /dev/null
+++ b/ci/Dockerfile
@@ -0,0 +1,7 @@
+FROM ubuntu:latest
+
+ENV USER root
+
+RUN apt-get update && apt-get install -y cmake libfreetype6-dev libfontconfig1-dev curl
+
+RUN curl https://sh.rustup.rs -sSf | sh -s -- -y
diff --git a/ci/before_deploy.sh b/ci/before_deploy.sh
new file mode 100755
index 00000000..e89a5590
--- /dev/null
+++ b/ci/before_deploy.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+# All files which should be added only if they changed
+aux_files=("alacritty-completions.bash"
+ "alacritty-completions.fish"
+ "alacritty-completions.zsh"
+ "alacritty.desktop"
+ "alacritty.info"
+ "alacritty.yml"
+ "alacritty_macos.yml"
+ "alacritty_windows.yml")
+
+# Get previous tag to check for changes
+git fetch --tags
+git fetch --unshallow
+prev_tag=$(git describe --tags --abbrev=0 $TRAVIS_TAG^)
+
+# Everything in this directory will be offered as download for the release
+mkdir "./target/deploy"
+
+# Output binary name
+name="Alacritty-${TRAVIS_TAG}"
+
+# Create macOS binary
+if [ "$TRAVIS_OS_NAME" == "osx" ]; then
+ make dmg
+ mv "./target/release/osx/Alacritty.dmg" "./target/deploy/${name}.dmg"
+fi
+
+# Create Linux binaries
+if [ "$TRAVIS_OS_NAME" == "linux" ]; then
+ docker pull undeadleech/alacritty-ubuntu
+ docker run -v "$(pwd):/source" undeadleech/alacritty-ubuntu \
+ /root/.cargo/bin/cargo build --release --manifest-path /source/Cargo.toml
+ sudo chown -R $USER:$USER "./target"
+ tar -cvzf "./target/deploy/${name}-$(uname -m).tar.gz" -C "./target/release/" "alacritty"
+
+ cargo install cargo-deb
+ DEB=$(cargo deb --no-build)
+ mv "$DEB" "./target/deploy/${name}_amd64.deb"
+fi
+
+# Create windows binary
+if [ "$TRAVIS_OS_NAME" == "windows" ]; then
+ mv "./target/release/alacritty.exe" "./target/deploy/${name}.exe"
+ mv "./target/release/winpty-agent.exe" "./target/deploy/winpty-agent.exe"
+fi
+
+# Convert and add manpage if it changed
+if [ -n "$(git diff $prev_tag HEAD alacritty.man)" ]; then
+ gzip -z "./alacritty.man" > "./target/deploy/alacritty.1.gz"
+fi
+
+# Offer extra files if they changed
+for file in "${aux_files[@]}"; do
+ if [ -n "$(git diff $prev_tag HEAD $file)" ]; then
+ cp $file "./target/deploy/"
+ fi
+done
diff --git a/ci/install.sh b/ci/install.sh
new file mode 100755
index 00000000..9e8c2e6d
--- /dev/null
+++ b/ci/install.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+# Add clippy for linting with nightly builds
+if [ "$TRAVIS_RUST_VERSION" == "nightly" ]; then
+ rustup component add clippy-preview
+fi
diff --git a/ci/script.sh b/ci/script.sh
new file mode 100755
index 00000000..6ab9e11c
--- /dev/null
+++ b/ci/script.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Check if any command failed
+error=false
+
+# Run clippy on nightly builds
+if [ "$TRAVIS_RUST_VERSION" == "nightly" ]; then
+ cargo clippy --all-features --all-targets || error=true
+fi
+
+# Run test in release mode if a tag is present, to produce an optimized binary
+if [ -n "$TRAVIS_TAG" ]; then
+ cargo test --release || error=true
+else
+ cargo test || error=true
+fi
+
+# Test the font subcrate
+cargo test -p font || error=true
+
+# Test the winpty subcrate
+if [ "$TRAVIS_OS_NAME" == "windows" ]; then
+ cp ./target/debug/winpty-agent.exe ./target/debug/deps && \
+ cargo test -p winpty || error=true
+fi
+
+if [ $error == "true" ]; then
+ exit 1
+fi