1
1
mirror of https://github.com/wez/wezterm.git synced 2024-10-26 23:58:28 +03:00
wezterm/.github/workflows/gen_ubuntu20.04_continuous.yml
Wez Furlong 668ac85d75
ci: run tests in debug mode
The original thinking was to build all in release mode so that
there was less overall redundancy between building out the released
binaries and what we need to build for test purposes.  The goal was to
minimize compile time.

I don't believe that that holds up any more, especially with the
prior commit explicitly breaking out the separate binary builds
to manage dependency bloat.
2024-04-05 14:10:36 -07:00

156 lines
4.7 KiB
YAML

name: ubuntu20.04_continuous
on:
schedule:
- cron: "10 3 * * *"
push:
branches:
- main
paths:
- "**/*.rs"
- "**/Cargo.lock"
- "**/Cargo.toml"
- ".github/workflows/gen_ubuntu20.04_continuous.yml"
- "assets/fonts/**/*"
- "assets/icon/*"
- "assets/open-wezterm-here"
- "assets/shell-completion/**/*"
- "assets/shell-integration/**/*"
- "assets/wezterm-nautilus.py"
- "assets/wezterm.appdata.xml"
- "assets/wezterm.desktop"
- "ci/appimage.sh"
- "ci/appstreamcli"
- "ci/deploy.sh"
- "ci/source-archive.sh"
- "ci/tag-name.sh"
- "get-deps"
- "termwiz/data/wezterm.terminfo"
jobs:
build:
runs-on: "ubuntu-latest"
container:
image: "ubuntu:20.04"
options: --privileged
env:
BUILD_REASON: "Schedule"
CARGO_INCREMENTAL: "0"
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
steps:
- name: "set APT to non-interactive"
shell: bash
run: "echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections"
- name: "Update APT"
shell: bash
run: "apt update"
- name: "Install git"
shell: bash
run: "apt-get install -y git"
- name: "Install curl"
shell: bash
run: "apt-get install -y curl"
- name: "Update APT"
shell: bash
run: "apt update"
- name: "Ensure /run/sshd exists"
shell: bash
run: "mkdir -p /run/sshd"
- name: "Install openssh-server"
shell: bash
run: "apt-get install -y openssh-server"
- name: "Workaround git permissions issue"
shell: bash
run: "git config --global --add safe.directory /__w/wezterm/wezterm"
- name: "checkout repo"
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: "Install Rust"
uses: dtolnay/rust-toolchain@stable
- name: "Compile with sccache"
uses: mozilla-actions/sccache-action@v0.0.4
- name: "Cache Rust Dependencies"
uses: actions/cache@v4
id: cache-cargo-vendor
with:
path: |
vendor
.cargo/config
key: "cargo-deps-${{ hashFiles('**/Cargo.lock') }}"
- name: "Vendor dependecies"
if: steps.cache-cargo-vendor.outputs.cache-hit != 'true'
shell: bash
run: "cargo vendor --locked --versioned-dirs >> .cargo/config"
- name: "Install System Deps"
shell: bash
run: "env CI=yes PATH=$PATH ./get-deps"
- name: "Build wezterm (Release mode)"
shell: bash
run: "cargo build -p wezterm --release"
- name: "Build wezterm-gui (Release mode)"
shell: bash
run: "cargo build -p wezterm-gui --release"
- name: "Build wezterm-mux-server (Release mode)"
shell: bash
run: "cargo build -p wezterm-mux-server --release"
- name: "Build strip-ansi-escapes (Release mode)"
shell: bash
run: "cargo build -p strip-ansi-escapes --release"
- name: "Install cargo-nextest from Cargo"
uses: baptiste0928/cargo-install@v3
with:
crate: "cargo-nextest"
cache-key: "ubuntu20.04"
- name: "Test"
shell: bash
run: "cargo nextest run --all --no-fail-fast"
- name: "Package"
shell: bash
run: "bash ci/deploy.sh"
- name: "Install libfuse2"
shell: bash
run: "apt-get install -y libfuse2"
- name: "Source Tarball"
shell: bash
run: "bash ci/source-archive.sh"
- name: "Build AppImage"
shell: bash
run: "bash ci/appimage.sh"
- name: "Upload artifact"
uses: actions/upload-artifact@v3
with:
name: "ubuntu20.04"
path: |
wezterm-*.deb
wezterm-*.xz
*src.tar.gz
*.AppImage
*.zsync
retention-days: 5
upload:
runs-on: ubuntu-latest
needs: build
steps:
- name: "Workaround git permissions issue"
shell: bash
run: "git config --global --add safe.directory /__w/wezterm/wezterm"
- name: "checkout repo"
uses: actions/checkout@v4
- name: "Download artifact"
uses: actions/download-artifact@v3
with:
name: "ubuntu20.04"
- name: "Checksum"
shell: bash
run: "for f in wezterm-*.deb wezterm-*.xz *src.tar.gz *.AppImage *.zsync ; do sha256sum $f > $f.sha256 ; done"
- name: "Upload to Nightly Release"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: "bash ci/retry.sh gh release upload --clobber nightly wezterm-*.deb wezterm-*.xz *src.tar.gz *.AppImage *.zsync *.sha256"