mirror of
https://github.com/zsh-users/zsh-autosuggestions.git
synced 2024-11-18 09:51:06 +01:00
Switch from Circle CI to GitHub Actions
The testing docker image has been split up. Instead of having one image with all supported versions of zsh installed, we now have a separate image for each supported zsh version. We use GitHub Action matrices to run jobs in parallel for all of the supported versions. We no longer need to publish images to Docker Hub. The images are just built by CI (or developers) as needed from the Dockerfile in the repo.
This commit is contained in:
parent
fcca87555f
commit
2cc34c015e
6 changed files with 74 additions and 46 deletions
|
@ -1,15 +0,0 @@
|
||||||
version: 2
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
parallelism: 4
|
|
||||||
shell: /bin/bash --login
|
|
||||||
docker:
|
|
||||||
- image: ericfreese/zsh-autosuggestions-test:latest
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
name: Running tests
|
|
||||||
command: |
|
|
||||||
for v in $(grep "^[^#]" ZSH_VERSIONS | awk "(NR + $CIRCLE_NODE_INDEX) % $CIRCLE_NODE_TOTAL == 0"); do
|
|
||||||
TEST_ZSH_BIN=zsh-$v make test || exit 1
|
|
||||||
done
|
|
51
.github/workflows/integration.yml
vendored
Normal file
51
.github/workflows/integration.yml
vendored
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
on: [push, pull_request]
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
env:
|
||||||
|
IMAGE_CACHE_PATH: /tmp/.image-cache
|
||||||
|
IMAGE_CACHE_NAME: zsh-autosuggestions-test
|
||||||
|
jobs:
|
||||||
|
determine-versions:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
outputs:
|
||||||
|
versions: ${{ steps.set-versions.outputs.versions }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- id: set-versions
|
||||||
|
run: |
|
||||||
|
echo "versions=$(
|
||||||
|
grep "^[^#]" ZSH_VERSIONS \
|
||||||
|
| sed -E 's/(^|$)/"/g' \
|
||||||
|
| paste -sd ',' - \
|
||||||
|
| sed -e 's/^/[/' -e 's/$/]/'
|
||||||
|
)" >> $GITHUB_OUTPUT
|
||||||
|
test:
|
||||||
|
needs: determine-versions
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
version: ${{ fromJson(needs.determine-versions.outputs.versions) }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Docker image cache
|
||||||
|
id: image-cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: ${{ env.IMAGE_CACHE_PATH }}
|
||||||
|
key: image-cache-${{ matrix.version }}-${{ hashFiles('Dockerfile', 'install_test_zsh.sh', 'Gemfile.lock') }}
|
||||||
|
- name: Load cached docker image if available
|
||||||
|
if: ${{ steps.image-cache.outputs.cache-hit }}
|
||||||
|
run: gunzip < $IMAGE_CACHE_PATH/$IMAGE_CACHE_NAME.tar.gz | docker load
|
||||||
|
- name: Build the docker image if necessary
|
||||||
|
if: ${{ !steps.image-cache.outputs.cache-hit }}
|
||||||
|
run: |
|
||||||
|
docker build --build-arg TEST_ZSH_VERSION=${{ matrix.version }} -t $IMAGE_CACHE_NAME .
|
||||||
|
mkdir -p $IMAGE_CACHE_PATH
|
||||||
|
docker save $IMAGE_CACHE_NAME | gzip > $IMAGE_CACHE_PATH/$IMAGE_CACHE_NAME.tar.gz
|
||||||
|
- name: Run the tests
|
||||||
|
run: |
|
||||||
|
docker run --rm \
|
||||||
|
-v $PWD:/zsh-autosuggestions \
|
||||||
|
$IMAGE_CACHE_NAME \
|
||||||
|
make test
|
|
@ -1,5 +1,8 @@
|
||||||
FROM ruby:2.5.3-alpine
|
FROM ruby:2.5.3-alpine
|
||||||
|
|
||||||
|
ARG TEST_ZSH_VERSION
|
||||||
|
RUN : "${TEST_ZSH_VERSION:?}"
|
||||||
|
|
||||||
RUN apk add --no-cache autoconf
|
RUN apk add --no-cache autoconf
|
||||||
RUN apk add --no-cache libtool
|
RUN apk add --no-cache libtool
|
||||||
RUN apk add --no-cache libcap-dev
|
RUN apk add --no-cache libcap-dev
|
||||||
|
@ -11,10 +14,8 @@ RUN apk add --no-cache tmux
|
||||||
|
|
||||||
WORKDIR /zsh-autosuggestions
|
WORKDIR /zsh-autosuggestions
|
||||||
|
|
||||||
ADD ZSH_VERSIONS /zsh-autosuggestions/ZSH_VERSIONS
|
ADD install_test_zsh.sh ./
|
||||||
ADD install_test_zsh.sh /zsh-autosuggestions/install_test_zsh.sh
|
|
||||||
RUN ./install_test_zsh.sh
|
RUN ./install_test_zsh.sh
|
||||||
|
|
||||||
ADD Gemfile /zsh-autosuggestions/Gemfile
|
ADD Gemfile Gemfile.lock ./
|
||||||
ADD Gemfile.lock /zsh-autosuggestions/Gemfile.lock
|
|
||||||
RUN bundle install
|
RUN bundle install
|
||||||
|
|
10
README.md
10
README.md
|
@ -170,18 +170,16 @@ Tests are written in ruby using the [`rspec`](http://rspec.info/) framework. The
|
||||||
|
|
||||||
Test files live in `spec/`. To run the tests, run `make test`. To run a specific test, run `TESTS=spec/some_spec.rb make test`. You can also specify a `zsh` binary to use by setting the `TEST_ZSH_BIN` environment variable (ex: `TEST_ZSH_BIN=/bin/zsh make test`).
|
Test files live in `spec/`. To run the tests, run `make test`. To run a specific test, run `TESTS=spec/some_spec.rb make test`. You can also specify a `zsh` binary to use by setting the `TEST_ZSH_BIN` environment variable (ex: `TEST_ZSH_BIN=/bin/zsh make test`).
|
||||||
|
|
||||||
A docker image for testing is available [on docker hub](https://hub.docker.com/r/ericfreese/zsh-autosuggestions-test). It comes with ruby, the bundler dependencies, and all supported versions of zsh installed.
|
It's possible to run the tests for any supported version of zsh in a Docker image by building an image from the provided Dockerfile. To build the docker image for a specific version of zsh (where `<version>` below is substituted with the contents of a line from the [`ZSH_VERSIONS`](ZSH_VERSIONS) file), run:
|
||||||
|
|
||||||
Pull the docker image with:
|
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker pull ericfreese/zsh-autosuggestions-test
|
docker build --build-arg TEST_ZSH_VERSION=<version> -t zsh-autosuggestions-test .
|
||||||
```
|
```
|
||||||
|
|
||||||
To run the tests for a specific version of zsh (where `<version>` below is substituted with the contents of a line from the [`ZSH_VERSIONS`](ZSH_VERSIONS) file):
|
After building the image, run the tests via:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker run -it -e TEST_ZSH_BIN=zsh-<version> -v $PWD:/zsh-autosuggestions zsh-autosuggestions-test make test
|
docker run -it -v $PWD:/zsh-autosuggestions zsh-autosuggestions-test make test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,5 @@
|
||||||
# Zsh releases to run tests against
|
# Zsh releases to run tests against
|
||||||
# See https://github.com/zsh-users/zsh/releases
|
# See https://github.com/zsh-users/zsh/releases
|
||||||
#
|
|
||||||
# When modifying this file, rebuild and push docker image:
|
|
||||||
# $ docker build -t ericfreese/zsh-autosuggestions-test .
|
|
||||||
# $ docker push ericfreese/zsh-autosuggestions-test
|
|
||||||
4.3.11
|
4.3.11
|
||||||
5.0.2
|
5.0.2
|
||||||
5.0.8
|
5.0.8
|
||||||
|
|
|
@ -2,19 +2,17 @@
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
for v in $(grep "^[^#]" ZSH_VERSIONS); do
|
mkdir zsh-build
|
||||||
mkdir zsh-$v
|
cd zsh-build
|
||||||
cd zsh-$v
|
|
||||||
|
|
||||||
curl -L https://api.github.com/repos/zsh-users/zsh/tarball/zsh-$v | tar xz --strip=1
|
curl -L https://api.github.com/repos/zsh-users/zsh/tarball/zsh-$TEST_ZSH_VERSION | tar xz --strip=1
|
||||||
|
|
||||||
./Util/preconfig
|
./Util/preconfig
|
||||||
./configure --enable-pcre \
|
./configure --enable-pcre \
|
||||||
--enable-cap \
|
--enable-cap \
|
||||||
--enable-multibyte \
|
--enable-multibyte \
|
||||||
--with-term-lib='ncursesw tinfo' \
|
--with-term-lib='ncursesw tinfo' \
|
||||||
--with-tcsetpgrp \
|
--with-tcsetpgrp
|
||||||
--program-suffix="-$v"
|
|
||||||
|
|
||||||
make install.bin
|
make install.bin
|
||||||
make install.modules
|
make install.modules
|
||||||
|
@ -22,5 +20,4 @@ for v in $(grep "^[^#]" ZSH_VERSIONS); do
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
rm -rf zsh-$v
|
rm -rf zsh-build
|
||||||
done
|
|
||||||
|
|
Loading…
Reference in a new issue