From fab09fd3313d4f7f754e08b09505012bc70e0413 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Sat, 13 Jul 2024 06:31:07 -0700 Subject: [PATCH] ci: Add ubuntu 24.04 --- .github/workflows/gen_ubuntu24.04.yml | 111 ++++++++++++++ .../workflows/gen_ubuntu24.04_continuous.yml | 138 ++++++++++++++++++ .github/workflows/gen_ubuntu24.04_tag.yml | 122 ++++++++++++++++ ci/generate-workflows.py | 1 + 4 files changed, 372 insertions(+) create mode 100644 .github/workflows/gen_ubuntu24.04.yml create mode 100644 .github/workflows/gen_ubuntu24.04_continuous.yml create mode 100644 .github/workflows/gen_ubuntu24.04_tag.yml diff --git a/.github/workflows/gen_ubuntu24.04.yml b/.github/workflows/gen_ubuntu24.04.yml new file mode 100644 index 000000000..b5f0b6788 --- /dev/null +++ b/.github/workflows/gen_ubuntu24.04.yml @@ -0,0 +1,111 @@ +name: ubuntu24.04 + +on: + pull_request: + branches: + - main + paths: + - "**/*.rs" + - "**/Cargo.lock" + - "**/Cargo.toml" + - ".github/workflows/gen_ubuntu24.04.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/deploy.sh" + - "ci/tag-name.sh" + - "get-deps" + - "termwiz/data/wezterm.terminfo" + +jobs: + build: + runs-on: "ubuntu-latest" + container: "ubuntu:24.04" + env: + 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.5 + - 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: "ubuntu24.04" + - name: "Test" + shell: bash + run: "cargo nextest run --all --no-fail-fast" + - name: "Package" + shell: bash + run: "bash ci/deploy.sh" + - name: "Upload artifact" + uses: actions/upload-artifact@v3 + with: + name: "ubuntu24.04" + path: | + wezterm-*.deb + wezterm-*.xz diff --git a/.github/workflows/gen_ubuntu24.04_continuous.yml b/.github/workflows/gen_ubuntu24.04_continuous.yml new file mode 100644 index 000000000..3b7f95870 --- /dev/null +++ b/.github/workflows/gen_ubuntu24.04_continuous.yml @@ -0,0 +1,138 @@ +name: ubuntu24.04_continuous + +on: + schedule: + - cron: "10 3 * * *" + push: + branches: + - main + paths: + - "**/*.rs" + - "**/Cargo.lock" + - "**/Cargo.toml" + - ".github/workflows/gen_ubuntu24.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/deploy.sh" + - "ci/tag-name.sh" + - "get-deps" + - "termwiz/data/wezterm.terminfo" + +jobs: + build: + runs-on: "ubuntu-latest" + container: "ubuntu:24.04" + 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.5 + - 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: "ubuntu24.04" + - name: "Test" + shell: bash + run: "cargo nextest run --all --no-fail-fast" + - name: "Package" + shell: bash + run: "bash ci/deploy.sh" + - name: "Upload artifact" + uses: actions/upload-artifact@v3 + with: + name: "ubuntu24.04" + path: | + wezterm-*.deb + wezterm-*.xz + 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: "ubuntu24.04" + - name: "Checksum" + shell: bash + run: "for f in wezterm-*.deb wezterm-*.xz ; 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 *.sha256" diff --git a/.github/workflows/gen_ubuntu24.04_tag.yml b/.github/workflows/gen_ubuntu24.04_tag.yml new file mode 100644 index 000000000..347d6382f --- /dev/null +++ b/.github/workflows/gen_ubuntu24.04_tag.yml @@ -0,0 +1,122 @@ +name: ubuntu24.04_tag + +on: + push: + tags: + - "20*" + +jobs: + build: + runs-on: "ubuntu-latest" + container: "ubuntu:24.04" + env: + 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.5 + - 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: "ubuntu24.04" + - name: "Test" + shell: bash + run: "cargo nextest run --all --no-fail-fast" + - name: "Package" + shell: bash + run: "bash ci/deploy.sh" + - name: "Upload artifact" + uses: actions/upload-artifact@v3 + with: + name: "ubuntu24.04" + path: | + wezterm-*.deb + wezterm-*.xz + + 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: "ubuntu24.04" + - name: "Checksum" + shell: bash + run: "for f in wezterm-*.deb wezterm-*.xz ; do sha256sum $f > $f.sha256 ; done" + - name: "Create pre-release" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash + run: "bash ci/retry.sh bash ci/create-release.sh $(ci/tag-name.sh)" + - name: "Upload to Tagged Release" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash + run: "bash ci/retry.sh gh release upload --clobber $(ci/tag-name.sh) wezterm-*.deb wezterm-*.xz *.sha256" diff --git a/ci/generate-workflows.py b/ci/generate-workflows.py index 7b0e7f0f7..ddf35dcdb 100755 --- a/ci/generate-workflows.py +++ b/ci/generate-workflows.py @@ -998,6 +998,7 @@ rustup default {toolchain} TARGETS = [ Target(container="ubuntu:20.04", continuous_only=True, app_image=True), Target(container="ubuntu:22.04", continuous_only=True), + Target(container="ubuntu:24.04", continuous_only=True), # debian 8's wayland libraries are too old for wayland-client # Target(container="debian:8.11", continuous_only=True, bootstrap_git=True), # harfbuzz's C++ is too new for debian 9's toolchain