Browse Source

Move actions to top-level for nicer call syntax

For external repos this will be a lot simpler
pull/8/head
Ian Chamberlain 1 year ago
parent
commit
224865854e
No known key found for this signature in database
GPG Key ID: AE5484D09405AA60
  1. 15
      .github/workflows/ci.yml
  2. 21
      Dockerfile
  3. 4
      README.md
  4. 11
      run-tests/action.yml
  5. 0
      setup/action.yml

15
.github/workflows/ci.yml

@ -22,7 +22,7 @@ jobs: @@ -22,7 +22,7 @@ jobs:
- name: Checkout branch
uses: actions/checkout@v2
- uses: ./.github/actions/setup
- uses: ./actions/setup
with:
toolchain: ${{ matrix.toolchain }}
@ -45,18 +45,20 @@ jobs: @@ -45,18 +45,20 @@ jobs:
container:
image: devkitpro/devkitarm
volumes:
# So the test action can `docker run` the runner:
- '/var/run/docker.sock:/var/run/docker.sock'
# So the built test artifacts end up on the host, not just inside the action container
- '/tmp:/tmp'
steps:
- name: Checkout branch
uses: actions/checkout@v3
- uses: ./.github/actions/setup
- uses: ./setup
with:
toolchain: ${{ matrix.toolchain }}
- name: Build and run tests (unit + integration)
uses: ./.github/actions/test
uses: ./run-tests
with:
args: -- -v
@ -67,9 +69,10 @@ jobs: @@ -67,9 +69,10 @@ jobs:
# This ensures the citra logs and video output gets put in a directory
# where we can upload as artifacts
RUSTDOCFLAGS: " --persist-doctests target/armv6k-nintendo-3ds/debug/doctests"
uses: ./.github/actions/test
uses: ./run-tests
with:
args: --doc -- -v
# TODO(#4): run them suckers
args: --doc --no-run -- -v
- name: Upload citra logs and capture videos
uses: actions/upload-artifact@v3

21
Dockerfile

@ -8,6 +8,15 @@ ARG CITRA_CHANNEL=nightly @@ -8,6 +8,15 @@ ARG CITRA_CHANNEL=nightly
ARG CITRA_RELEASE=1995
RUN download_citra ${CITRA_CHANNEL} ${CITRA_RELEASE}
FROM devkitpro/devkitarm as devkitarm
# For some reason, citra isn't always happy when you try to run it for the first time,
# so we build a simple dummy program to force it to create its directory structure
RUN cd /opt/devkitpro/examples/3ds/graphics/printing/hello-world && \
echo 'int main(int, char**) {}' > source/main.c && \
make && \
mv hello-world.3dsx /tmp/
FROM ubuntu:latest
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt \
@ -19,7 +28,7 @@ RUN --mount=type=cache,sharing=locked,target=/var/cache/apt \ @@ -19,7 +28,7 @@ RUN --mount=type=cache,sharing=locked,target=/var/cache/apt \
libavfilter7 \
xvfb
COPY --from=devkitpro/devkitarm:latest /opt/devkitpro /opt/devkitpro
COPY --from=devkitarm /opt/devkitpro /opt/devkitpro
# There's no way to copy ENV values from other stages properly:
# https://github.com/moby/moby/issues/37345
# Luckily in this case we know exactly what the values should be:
@ -28,7 +37,15 @@ ENV DEVKITARM=${DEVKITPRO}/devkitARM @@ -28,7 +37,15 @@ ENV DEVKITARM=${DEVKITPRO}/devkitARM
ENV PATH=${DEVKITARM}/bin:${PATH}
COPY --from=builder /tmp/citra.AppImage /usr/local/bin/citra
COPY ./docker/sdl2-config.ini /app/
COPY --from=devkitarm /tmp/hello-world.3dsx /tmp/
# We run citra once before copying our config file, so it should create its
# necessary directory structure and run once with defaults
RUN xvfb-run citra --appimage-extract-and-run /tmp/hello-world.3dsx; \
rm -f /tmp/hello-world.3dsx
# Initial run seems to miss this one directory so just make it manually
RUN mkdir -p /root/.local/share/citra-emu/log
COPY ./docker/sdl2-config.ini /root/.config/citra-emu/
COPY ./docker/test-runner.gdb /app/
COPY ./docker/entrypoint.sh /app/

4
README.md

@ -13,4 +13,6 @@ A set of tools for running automated Rust tests against Citra (3DS emulator). @@ -13,4 +13,6 @@ A set of tools for running automated Rust tests against Citra (3DS emulator).
* `.github/actions/citra`: action for running test executables with Citra in
workflows
<!-- TODO: usage section for github actions -->
## Usage
<!-- TODO -->

11
.github/actions/test/action.yml → run-tests/action.yml

@ -40,10 +40,11 @@ runs: @@ -40,10 +40,11 @@ runs:
# https://github.com/actions/runner/issues/2058, which also means
# we have to export this instead of using the env: key
run: |
export CARGO_TARGET_ARMV6K_NINTENDO_3DS_RUNNER="docker run --rm
-v /tmp:/tmp
-v ${GITHUB_WORKSPACE}/target:/app/target
-v ${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE}
${{ inputs.runner-image }}:latest"
export CARGO_TARGET_ARMV6K_NINTENDO_3DS_RUNNER="
docker run --rm
-v /tmp:/tmp
-v ${{ github.workspace }}/target:/app/target
-v ${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE}
${{ inputs.runner-image }}:latest"
env
cargo 3ds -v test ${{ inputs.args }}

0
.github/actions/setup/action.yml → setup/action.yml

Loading…
Cancel
Save