diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..4a8d1b0 --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,24 @@ +name: CI + +on: + push: + branches: + - main + - dev + pull_request: + workflow_dispatch: + +jobs: + ubuntu: + name: Linux Tests + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + - name: Setup just + uses: https://git.housh.dev/actions/setup-just.git@v1 + - name: Setup QEMU + uses: docker/setup-qemu-action@v3 + - name: Setup buildx + uses: docker/setup-buildx-action@v3 + - name: Run tests + run: just docker_tag=test test-docker diff --git a/Package.swift b/Package.swift index 45082d0..eef32ba 100644 --- a/Package.swift +++ b/Package.swift @@ -120,11 +120,10 @@ let package = Package( .target(name: "HTMLSnapshotTesting"), .target(name: "PdfClient"), .product(name: "SnapshotTesting", package: "swift-snapshot-testing"), + ], + resources: [ + .copy("__Snapshots__") ] - // , - // resources: [ - // .copy("__Snapshots__") - // ] ), .target( name: "ProjectClient", diff --git a/docker/Dockerfile.test b/docker/Dockerfile.test new file mode 100644 index 0000000..d1ecb54 --- /dev/null +++ b/docker/Dockerfile.test @@ -0,0 +1,36 @@ +FROM docker.io/swift:6.2-noble + +# Make sure all system packages are up to date, and install only essential packages. +RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ + && apt-get -q update \ + && apt-get -q dist-upgrade -y \ + && apt-get -q install -y \ + libjemalloc2 \ + ca-certificates \ + tzdata \ +# If your app or its dependencies import FoundationNetworking, also install `libcurl4`. + libcurl4 \ +# If your app or its dependencies import FoundationXML, also install `libxml2`. + # libxml2 \ + sqlite3 \ + && rm -r /var/lib/apt/lists/* + +# Set up a build area +WORKDIR /app + +# First just resolve dependencies. +# This creates a cached layer that can be reused +# as long as your Package.swift/Package.resolved +# files do not change. +COPY ./Package.* ./ +RUN swift package resolve \ + $([ -f ./Package.resolved ] && echo "--force-resolved-versions" || true) + +# Copy entire repo into container +COPY . . + +ENV SWIFT_BACKTRACE=enable=no +ENV LOG_LEVEL=debug + +CMD ["swift", "test"] + diff --git a/justfile b/justfile index 854158a..c454cd1 100644 --- a/justfile +++ b/justfile @@ -14,7 +14,10 @@ run: @swift run App serve --log debug build-docker file="docker/Dockerfile": - @podman build -f {{file}} -t {{docker_image}}:{{docker_tag}} . + @docker build -f {{file}} -t {{docker_image}}:{{docker_tag}} . run-docker: - @podman run -it --rm -v $PWD:/app -p 8080:8080 {{docker_image}}:{{docker_tag}} + @docker run -it --rm -v $PWD:/app -p 8080:8080 {{docker_image}}:{{docker_tag}} + +test-docker: (build-docker "docker/Dockerfile.test") + @docker run --rm {{docker_image}}:{{docker_tag}} swift test