From ec601b0f2444530bb1ddb5bce613af5e20d3ba7e Mon Sep 17 00:00:00 2001 From: Jonathan Godbout Date: Fri, 12 Jun 2026 11:12:58 -0700 Subject: [PATCH] Pin dependencies in qitab/grpc GitHub Actions CI Update ci.yml to use ubuntu-24.04 and pin actions/cache and actions/checkout to v5.0.0 using their commit SHAs. Add a SHA256 checksum check for the downloaded quicklisp.lisp. Pin the gRPC repository clone to tag v1.81.1. Check physical directory/file existence before cloning gRPC or installing Quicklisp, explicitly load setup.lisp during test execution, rename test step to 'Load and run tests' for clarity, and explicitly set matrix job names to 'test (matrix.lisp)'. PiperOrigin-RevId: 931239938 --- .github/workflows/ci.yml | 51 ++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fb3a5c..149358f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,8 @@ on: jobs: test: - runs-on: ubuntu-latest + name: 'test (${{ matrix.lisp }})' + runs-on: ubuntu-24.04 strategy: matrix: lisp: [ sbcl, ccl ] @@ -30,7 +31,7 @@ jobs: - name: Cache Quicklisp id: cache-quicklisp - uses: actions/cache@v4 + uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 with: path: quicklisp key: ${{ runner.os }}-quicklisp-${{ matrix.lisp }}-${{ github.sha }} @@ -38,22 +39,28 @@ jobs: ${{ runner.os }}-quicklisp-${{ matrix.lisp }}- - name: Download quicklisp - if: steps.cache-quicklisp.outputs.cache-hit != 'true' - run: curl -o quicklisp.lisp 'https://beta.quicklisp.org/quicklisp.lisp' + run: | + if [ ! -f "$GITHUB_WORKSPACE/quicklisp/setup.lisp" ]; then + curl -o quicklisp.lisp 'https://beta.quicklisp.org/quicklisp.lisp' + echo "4a7a5c2aebe0716417047854267397e24a44d0cce096127411e9ce9ccfeb2c17 quicklisp.lisp" | sha256sum -c + fi - name: Install quicklisp - if: steps.cache-quicklisp.outputs.cache-hit != 'true' run: | - if [ "${{ matrix.lisp }}" = "ccl" ]; then - ./ccl/lx86cl64 --load quicklisp.lisp --eval "(quicklisp-quickstart:install :path \"$GITHUB_WORKSPACE/quicklisp/\") (quit)" - ./ccl/lx86cl64 --load "$GITHUB_WORKSPACE/quicklisp/setup.lisp" --eval '(ql-util:without-prompting (ql:add-to-init-file)) (quit)' + if [ -f "$GITHUB_WORKSPACE/quicklisp/setup.lisp" ]; then + echo "Quicklisp already installed." else - sbcl --noinform --non-interactive --load quicklisp.lisp --eval "(quicklisp-quickstart:install :path \"$GITHUB_WORKSPACE/quicklisp/\")" - sbcl --noinform --non-interactive --load "$GITHUB_WORKSPACE/quicklisp/setup.lisp" --eval '(ql-util:without-prompting (ql:add-to-init-file))' + if [ "${{ matrix.lisp }}" = "ccl" ]; then + ./ccl/lx86cl64 --load quicklisp.lisp --eval "(quicklisp-quickstart:install :path \"$GITHUB_WORKSPACE/quicklisp/\") (quit)" + ./ccl/lx86cl64 --load "$GITHUB_WORKSPACE/quicklisp/setup.lisp" --eval '(ql-util:without-prompting (ql:add-to-init-file)) (quit)' + else + sbcl --noinform --non-interactive --load quicklisp.lisp --eval "(quicklisp-quickstart:install :path \"$GITHUB_WORKSPACE/quicklisp/\")" + sbcl --noinform --non-interactive --load "$GITHUB_WORKSPACE/quicklisp/setup.lisp" --eval '(ql-util:without-prompting (ql:add-to-init-file))' + fi fi - name: Download repo - uses: actions/checkout@v4 + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 with: path: quicklisp/local-projects/grpc @@ -64,7 +71,7 @@ jobs: - name: Cache gRPC C++ build id: cache-grpc - uses: actions/cache@v4 + uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 with: path: grpc key: ${{ runner.os }}-grpc-${{ github.sha }} @@ -72,8 +79,13 @@ jobs: ${{ runner.os }}-grpc- - name: Clone gRPC Github repo - if: steps.cache-grpc.outputs.cache-hit != 'true' - run: git clone --recurse-submodules --depth 1 --shallow-submodules https://github.com/grpc/grpc + run: | + if [ ! -d "grpc" ]; then + git clone --recurse-submodules --depth 1 --shallow-submodules --branch v1.81.1 https://github.com/grpc/grpc + # TODO: To pin to a specific commit hash instead of a tag, use: + # git clone --recurse-submodules --shallow-submodules --branch v1.81.1 https://github.com/grpc/grpc + # cd grpc && git checkout + fi - name: Build and install gRPC c++ run: | @@ -91,7 +103,7 @@ jobs: - name: Cache cl-protobufs build id: cache-cl-protobufs - uses: actions/cache@v4 + uses: actions/cache@a7833574556fa59680c1b7cb190c1735db73ebf0 # v5.0.0 with: path: quicklisp/local-projects/cl-protobufs key: ${{ runner.os }}-cl-protobufs-${{ github.sha }} @@ -103,18 +115,21 @@ jobs: cd $GITHUB_WORKSPACE/quicklisp/local-projects if [ ! -d "cl-protobufs" ]; then git clone https://github.com/qitab/cl-protobufs + # TODO: To pin to a specific commit hash, use: + # git clone https://github.com/qitab/cl-protobufs + # cd cl-protobufs && git checkout && cd .. fi cd cl-protobufs/protoc cmake . -DCMAKE_CXX_STANDARD=17 cmake --build . --target install --parallel $(nproc) - - name: Start gRPC + - name: Load and run tests run: | export PATH="$PATH:$GITHUB_WORKSPACE/quicklisp/local-projects/cl-protobufs/protoc/" if [ "${{ matrix.lisp }}" = "ccl" ]; then - ./ccl/lx86cl64 --eval '(ql:quickload :grpc)' --eval '(ql:quickload :clunit2)' --eval '(ql:quickload :flexi-streams)' --eval '(ql:quickload :bordeaux-threads)' --eval '(setf clunit:*clunit-report-format* :tap)' --eval '(asdf:test-system :grpc)' >> report + ./ccl/lx86cl64 --load "$GITHUB_WORKSPACE/quicklisp/setup.lisp" --eval '(ql:quickload :grpc)' --eval '(ql:quickload :clunit2)' --eval '(ql:quickload :flexi-streams)' --eval '(ql:quickload :bordeaux-threads)' --eval '(setf clunit:*clunit-report-format* :tap)' --eval '(asdf:test-system :grpc)' >> report else - sbcl --noinform --non-interactive --eval '(ql:quickload :grpc)' --eval '(ql:quickload :clunit2)' --eval '(ql:quickload :flexi-streams)' --eval '(ql:quickload :bordeaux-threads)' --eval '(setf clunit:*clunit-report-format* :tap)' --eval '(asdf:test-system :grpc)' >> report + sbcl --noinform --non-interactive --load "$GITHUB_WORKSPACE/quicklisp/setup.lisp" --eval '(ql:quickload :grpc)' --eval '(ql:quickload :clunit2)' --eval '(ql:quickload :flexi-streams)' --eval '(ql:quickload :bordeaux-threads)' --eval '(setf clunit:*clunit-report-format* :tap)' --eval '(asdf:test-system :grpc)' >> report fi test -f report cat report