mirror of
https://github.com/alacritty/alacritty.git
synced 2024-11-25 14:05:41 -05:00
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.
This commit is contained in:
parent
fd8af0df33
commit
77816797e8
7 changed files with 122 additions and 22 deletions
40
.travis.yml
40
.travis.yml
|
@ -1,11 +1,12 @@
|
||||||
language: rust
|
language: rust
|
||||||
sudo: false
|
|
||||||
|
sudo: required
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
|
|
||||||
git:
|
git:
|
||||||
depth: 1
|
depth: 1
|
||||||
|
|
||||||
cache: cargo
|
|
||||||
|
|
||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
- osx
|
- osx
|
||||||
|
@ -15,28 +16,25 @@ rust:
|
||||||
- stable
|
- stable
|
||||||
- nightly
|
- nightly
|
||||||
|
|
||||||
env:
|
|
||||||
- CLIPPY="true"
|
|
||||||
- CLIPPY=""
|
|
||||||
|
|
||||||
install:
|
|
||||||
- if [ -n "$CLIPPY" ]; then rustup component add clippy-preview; fi
|
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
fast_finish: true
|
fast_finish: true
|
||||||
exclude:
|
|
||||||
- rust: stable
|
|
||||||
env: CLIPPY="true"
|
|
||||||
- rust: nightly
|
|
||||||
env: CLIPPY=""
|
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- rust: nightly
|
- rust: nightly
|
||||||
- os: windows
|
- os: windows
|
||||||
|
|
||||||
script:
|
install: ci/install.sh
|
||||||
- if [ "$TRAVIS_OS_NAME" == "windows" ]; then choco install llvm --norestart --nosilent; fi
|
script: ci/script.sh
|
||||||
|
before_deploy: ci/before_deploy.sh
|
||||||
|
|
||||||
- if [ -n "$CLIPPY" ]; then cargo clippy --all-features --all-targets; fi
|
deploy:
|
||||||
- if [ -z "$CLIPPY" ]; then cargo test; fi
|
provider: releases
|
||||||
- if [ -z "$CLIPPY" ]; then cargo test -p font; fi
|
api_key:
|
||||||
- if [ "$TRAVIS_OS_NAME" == "windows" ]; then cp target/debug/winpty-agent.exe target/debug/deps && cargo test -p winpty; fi
|
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
|
||||||
|
|
|
@ -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
|
- 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
|
- 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
|
- 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
|
### Changed
|
||||||
|
|
||||||
|
|
|
@ -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. \
|
rendering enables optimizations that simply aren't possible in other emulators. \
|
||||||
Alacritty currently supports FreeBSD, Linux, macOS, and OpenBSD. Windows \
|
Alacritty currently supports FreeBSD, Linux, macOS, and OpenBSD. Windows \
|
||||||
support is planned before the 1.0 release. """
|
support is planned before the 1.0 release. """
|
||||||
depends = "$auto, cmake, libfreetype6-dev, libfontconfig1-dev, xclip"
|
depends = "$auto"
|
||||||
section = "rust"
|
section = "rust"
|
||||||
priority = "optional"
|
priority = "optional"
|
||||||
assets = [
|
assets = [
|
||||||
|
|
7
ci/Dockerfile
Normal file
7
ci/Dockerfile
Normal file
|
@ -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
|
59
ci/before_deploy.sh
Executable file
59
ci/before_deploy.sh
Executable file
|
@ -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
|
6
ci/install.sh
Executable file
6
ci/install.sh
Executable file
|
@ -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
|
29
ci/script.sh
Executable file
29
ci/script.sh
Executable file
|
@ -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
|
Loading…
Reference in a new issue