From aeff8a87c7b1f4825eae121c93718eb711d68042 Mon Sep 17 00:00:00 2001 From: Virgil Date: Wed, 7 Aug 2024 15:48:03 +0300 Subject: [PATCH] Run tests on PRs --- .github/actions/with-docker/action.yml | 33 +++++++++++++++++++++++ .github/workflows/build-and-test.yaml | 30 +++++++++++++++++++++ Dockerfile | 36 ++++++++++++++++++++++++++ deps/k_release | 1 + 4 files changed, 100 insertions(+) create mode 100644 .github/actions/with-docker/action.yml create mode 100644 .github/workflows/build-and-test.yaml create mode 100644 Dockerfile create mode 100644 deps/k_release diff --git a/.github/actions/with-docker/action.yml b/.github/actions/with-docker/action.yml new file mode 100644 index 0000000..af140e8 --- /dev/null +++ b/.github/actions/with-docker/action.yml @@ -0,0 +1,33 @@ +name: 'With Docker' +description: 'Run a given stage with Docker Image' +inputs: + container-name: + description: 'Docker container name to use' + required: true +runs: + using: 'composite' + steps: + - name: 'Set up Docker' + shell: bash {0} + env: + CONTAINER_NAME: ${{ inputs.container-name }} + run: | + set -euxo pipefail + + TAG=runtimeverificationinc/${CONTAINER_NAME} + K_COMMIT=$(cat ./deps/k_release) + + docker build . --tag ${TAG} --build-arg K_COMMIT=${K_COMMIT} + + docker run \ + --name ${CONTAINER_NAME} \ + --rm \ + --interactive \ + --tty \ + --detach \ + --user root \ + --workdir /home/user \ + ${TAG} + + docker cp . ${CONTAINER_NAME}:/home/user + docker exec ${CONTAINER_NAME} chown -R user:user /home/user diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml new file mode 100644 index 0000000..c610da0 --- /dev/null +++ b/.github/workflows/build-and-test.yaml @@ -0,0 +1,30 @@ +--- + name: 'Build And Test' + on: + pull_request: + # Stop in progress workflows on the same branch and same workflow to use latest committed code + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + + jobs: + build-test: + name: 'Build And Test' + runs-on: [self-hosted, linux, normal] + steps: + - name: 'Check out code' + uses: actions/checkout@v3 + with: + submodules: recursive + - name: 'Set up Docker' + uses: ./.github/actions/with-docker + with: + container-name: k-rust-demo-${{ github.sha }} + - name: 'Build the semantics' + run: docker exec -t k-rust-demo-${{ github.sha }} /bin/bash -c 'make build -j4' + - name: 'Run Tests' + run: docker exec -t k-rust-demo-${{ github.sha }} /bin/bash -c 'make -j4 test' + - name: 'Tear down Docker' + if: always() + run: | + docker stop k-rust-demo-${{ github.sha }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4f4f459 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +ARG Z3_VERSION +ARG K_COMMIT + +ARG Z3_VERSION=4.12.1 +FROM runtimeverificationinc/z3:ubuntu-jammy-${Z3_VERSION} as Z3 + +ARG K_COMMIT +FROM runtimeverificationinc/kframework-k:ubuntu-jammy-${K_COMMIT} + +COPY --from=Z3 /usr/bin/z3 /usr/bin/z3 + +# RUN apt-get update \ +# && apt-get upgrade --yes \ +# && apt-get install --yes \ +# cmake \ +# curl \ +# pandoc \ +# python3 \ +# python3-pip \ +# wabt + +ARG USER_ID=1000 +ARG GROUP_ID=1000 +RUN groupadd -g $GROUP_ID user && useradd -m -u $USER_ID -s /bin/sh -g user user + +USER user:user +WORKDIR /home/user + +# RUN curl -sSL https://install.python-poetry.org | python3 - \ +# && poetry --version + +# RUN pip3 install --user \ +# cytoolz \ +# numpy + +# ENV PATH=/home/user/wabt/build:/home/user/.local/bin:$PATH diff --git a/deps/k_release b/deps/k_release new file mode 100644 index 0000000..0299866 --- /dev/null +++ b/deps/k_release @@ -0,0 +1 @@ +7.1.92