-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement a docker container for tests (#8199)
* FEAT: implement container for tests * FEAT: add action for building image * FIX: pin luajit by hash instead of tag * FIX: typo
- Loading branch information
Showing
4 changed files
with
97 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
name: Build and publish busted tests docker image | ||
on: | ||
workflow_dispatch: | ||
jobs: | ||
build-and-push-image: | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: read | ||
packages: write | ||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
- name: Log in to the Container registry | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
- name: Generate docker image metadata | ||
uses: docker/metadata-action@v5 | ||
id: meta | ||
with: | ||
images: | | ||
ghcr.io/${{ github.repository_owner }}/pathofbuilding-tests | ||
labels: | | ||
org.opencontainers.image.description=A docker image packaged with the correct versions of tools to run PathOfBuilding busted tests. Includes emmylua debugger files. Refer to https://github.com/PathOfBuildingCommunity/PathOfBuilding/blob/dev/CONTRIBUTING.md for usage instructions. | ||
org.opencontainers.image.licenses=https://opensource.org/licenses/MIT | ||
tags: | | ||
type=sha | ||
type=raw,value=latest | ||
- name: Build and push Docker image | ||
uses: docker/build-push-action@v5 | ||
with: | ||
context: . | ||
push: true | ||
platforms: linux/amd64 | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,22 +7,11 @@ on: | |
jobs: | ||
run_tests: | ||
runs-on: ubuntu-latest | ||
container: ghcr.io/paliak/pathofbuilding-tests:latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
- name: Install Lua/LuaJIT | ||
uses: leafo/[email protected] | ||
with: | ||
luaVersion: "luajit-2.0.5" | ||
- name: Install LuaRocks | ||
uses: leafo/[email protected] | ||
- name: Install busted | ||
run: luarocks install busted | ||
- name: Install cluacov | ||
run: luarocks install cluacov 0.1.2-1 | ||
- name: Install coveralls integration | ||
run: luarocks install luacov-coveralls | ||
uses: actions/checkout@v4 | ||
- name: Run tests | ||
run: busted --lua=/home/runner/work/PathOfBuilding/PathOfBuilding/.lua/bin/luajit | ||
run: busted --lua=luajit | ||
- name: Report coverage | ||
run: cd src; luacov-coveralls --repo-token=${{ secrets.github_token }} -e TestData -e Data -e runtime |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
FROM alpine:3.18 AS base | ||
# Common dependencies | ||
RUN apk add --no-cache cmake readline-dev build-base tar | ||
|
||
FROM base AS buildbase | ||
# Build dependencies | ||
RUN apk add --no-cache git | ||
WORKDIR /opt | ||
RUN wget https://www.lua.org/ftp/lua-5.1.5.tar.gz && tar -xf lua-5.1.5.tar.gz | ||
RUN cd lua-5.1.5 && make linux && make install | ||
|
||
FROM buildbase AS luarocks | ||
RUN wget https://luarocks.org/releases/luarocks-3.7.0.tar.gz && tar xf luarocks-3.7.0.tar.gz | ||
RUN cd luarocks-3.7.0 && ./configure && make | ||
|
||
FROM buildbase AS luajit | ||
RUN git clone https://github.com/LuaJIT/LuaJIT && cd LuaJIT && git checkout c7db8255e1eb59f933fac7bc9322f0e4f8ddc6e6 | ||
RUN cd LuaJIT && make | ||
|
||
FROM buildbase AS emmyluadebugger | ||
RUN git clone --depth 1 --branch 1.7.1 https://github.com/EmmyLua/EmmyLuaDebugger | ||
RUN cd EmmyLuaDebugger && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release ../ && make | ||
|
||
FROM base | ||
# Luarocks packages dependencies | ||
RUN apk add --no-cache curl unzip openssl | ||
|
||
RUN --mount=type=cache,from=buildBase,source=/opt,target=/opt make -C /opt/lua-5.1.5/ install | ||
RUN --mount=type=cache,from=luarocks,source=/opt,target=/opt make -C /opt/luarocks-3.7.0/ install | ||
|
||
# Install here to install lua rocks pkgs in pararell with compilation of emmylua and luajit | ||
RUN luarocks install busted 2.2.0-1;\ | ||
luarocks install cluacov 0.1.2-1;\ | ||
luarocks install luacov-coveralls 0.2.3-1 | ||
|
||
RUN --mount=type=cache,from=emmyluadebugger,source=/opt,target=/opt make -C /opt/EmmyLuaDebugger/build/ install | ||
RUN --mount=type=cache,from=luajit,source=/opt,target=/opt make -C /opt/LuaJIT/ install | ||
|
||
CMD [ "echo", "This container is meant to be ran with docker compose. See: https://github.com/PathOfBuildingCommunity/PathOfBuilding/blob/dev/CONTRIBUTING.md" ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,16 @@ | ||
version: "3.8" | ||
services: | ||
|
||
busted-tests: | ||
image: summ1else/poe-busted-image | ||
container_name: busted-tests | ||
command: bash -c "rm -f spec/test_results.log && busted --lua=luajit | tee spec/test_results.log" | ||
#build: . | ||
image: ghcr.io/paliak/pathofbuilding-tests:latest | ||
environment: | ||
HOME: /tmp | ||
container_name: pathofbuilding-tests | ||
user: nobody:nobody | ||
command: busted --lua=luajit | ||
security_opt: | ||
- no-new-privileges:true | ||
ports: | ||
- "9966:9966" | ||
working_dir: /workdir | ||
volumes: | ||
- ./:/root | ||
depends_on: | ||
- busted-generate-build | ||
|
||
busted-generate-build: | ||
image: summ1else/poe-busted-image | ||
container_name: busted-generate-build | ||
command: bash -c "rm -f spec/test_generation.log && busted --lua=luajit -r generate | tee spec/test_generation.log" | ||
restart: "no" | ||
volumes: | ||
- ./:/root | ||
- ./:/workdir:ro |