summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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