summaryrefslogtreecommitdiff
path: root/ci
diff options
context:
space:
mode:
Diffstat (limited to 'ci')
-rw-r--r--ci/Dockerfile7
-rwxr-xr-xci/before_deploy.sh59
-rwxr-xr-xci/install.sh6
-rwxr-xr-xci/script.sh29
4 files changed, 101 insertions, 0 deletions
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