Skip to content

Bump the minor-changes group across 1 directory with 2 updates #255

Bump the minor-changes group across 1 directory with 2 updates

Bump the minor-changes group across 1 directory with 2 updates #255

Workflow file for this run

name: CI
on:
push:
branches: [ master ]
tags: [ "v*" ]
pull_request:
branches: [ master ]
env:
# Minimum supported Rust version.
msrv: 1.72.0
# Nightly Rust necessary for building docs.
nightly: nightly-2024-07-05
jobs:
build-msrv:
strategy:
matrix:
include:
- os: windows-latest
features: ""
- os: ubuntu-latest
features: --all-features
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.msrv }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}${{ matrix.features }}-msrv-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}${{ matrix.features }}-msrv-cargo
- name: Run tests
run: cargo test -p term-transcript ${{ matrix.features }} --all-targets
- name: Run doc tests
run: cargo test -p term-transcript ${{ matrix.features }} --doc
build:
uses: ./.github/workflows/build-reusable.yml
build-docker:
needs:
- build
- build-msrv
permissions:
contents: read
packages: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache Docker build
uses: actions/cache@v4
with:
path: target/docker
key: ${{ runner.os }}-docker-buildkit-${{ hashFiles('Cargo.lock') }}
restore-keys: ${{ runner.os }}-docker-buildkit
- name: Install `socat`
run: |
sudo apt-get update && \
sudo apt-get install -y --no-install-suggests --no-install-recommends socat
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
- name: Log in to Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Identify Buildx container
run: |
CONTAINER_ID=$(docker ps --filter=ancestor=moby/buildkit:buildx-stable-1 --format='{{ .ID }}')
echo "buildx_container=$CONTAINER_ID" | tee -a "$GITHUB_ENV"
- name: Restore cache
run: |
if [[ -f target/docker/cache.db ]]; then
docker cp target/docker/. "$buildx_container:/var/lib/buildkit"
docker restart "$buildx_container"
# Wait until the container is restarted
sleep 5
fi
docker buildx du # Check the restored cache
- name: Build image
uses: docker/build-push-action@v5
with:
context: .
file: cli/Dockerfile
load: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# We want to only store cache volumes (type=exec.cachemount) since
# their creation is computationally bound as opposed to other I/O-bound volume types.
- name: Extract image cache
run: |
docker buildx prune --force --filter=type=regular
docker buildx prune --force --filter=type=source.local
rm -rf target/docker && mkdir -p target/docker
docker cp "$buildx_container:/var/lib/buildkit/." target/docker
du -ah -d 1 target/docker
- name: Test image (--help)
run: docker run --rm "$IMAGE_TAG" --help
env:
IMAGE_TAG: ${{ fromJSON(steps.meta.outputs.json).tags[0] }}
- name: Test image (print)
run: |
docker run -i --rm --env COLOR=always "$IMAGE_TAG" print - < examples/rainbow.svg
env:
IMAGE_TAG: ${{ fromJSON(steps.meta.outputs.json).tags[0] }}
- name: Test image (exec, nc host)
run: |
mkfifo /tmp/shell.fifo
cat /tmp/shell.fifo | bash -i 2>&1 | nc -lU /tmp/shell.sock > /tmp/shell.fifo &
docker run --rm -v /tmp/shell.sock:/tmp/shell.sock "$IMAGE_TAG" \
exec --shell nc --echoing --args=-U --args=/tmp/shell.sock 'ls -al' \
> test.svg
docker run -i --rm --env COLOR=always "$IMAGE_TAG" print - < test.svg
env:
IMAGE_TAG: ${{ fromJSON(steps.meta.outputs.json).tags[0] }}
- name: Test image (exec, socat host)
run: |
rm -f /tmp/shell.sock
socat UNIX-LISTEN:/tmp/shell.sock,fork EXEC:"bash -i",pty,setsid,ctty,stderr &
docker run --rm -v /tmp/shell.sock:/tmp/shell.sock "$IMAGE_TAG" \
exec --shell nc --echoing --args=-U --args=/tmp/shell.sock 'ls -al' \
> test-pty.svg
docker run -i --rm --env COLOR=always "$IMAGE_TAG" print - < test-pty.svg
env:
IMAGE_TAG: ${{ fromJSON(steps.meta.outputs.json).tags[0] }}
- name: Publish image
if: github.event_name == 'push'
run: docker push "$IMAGE_TAG"
env:
IMAGE_TAG: ${{ fromJSON(steps.meta.outputs.json).tags[0] }}
document:
needs:
- build
- build-msrv
if: github.event_name == 'push' && github.ref_type == 'branch'
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ env.nightly }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-cargo-document-${{ hashFiles('Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-document
- name: Build docs
run: |
cargo clean --doc && \
cargo rustdoc -p term-transcript --all-features -- --cfg docsrs
- name: Copy examples
run: |
mkdir -p target/doc/examples && \
cp examples/rainbow.html target/doc/examples
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: target/doc
single-commit: true