mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
2cd534a1ab
These updates support running tests that have been relocated into `serial` and `parallel/set*` directories. - `make tests` now calls the two make targets beneath it. The only difference is that `serial` continues the "1 test at a time" approach used prior to this PR, while the `parallel` target increases the `--jobs` arg to run multiple tests concurrently (_configured by `PARALLEL_JOBS`_). - The `test/%` target leverages Bash syntax magic to ease running single tests without providing the exact path. - This syntax also supports providing multiple test names (eg: `make test/clamav,template`) to run. - `**` (globstar) allows for future improvements that can group multiple test files into sub-directories by their scope (eg: anti-spam, ssl, etc). --- chore: Add `shopt -s globstar` to other targets I realized that other targets should have this as well in case it is not set. It is better to be more explicit here than to have weird errors due to `**` not expanding properly. --- fix(Makefile): Add back `.PHONY` targets I encountered `make` telling me the target was already up-to-date, which of course is nonsense. I therefore added back the `.PHONY` targets to ensure tests are always run. --- docs: Added instructions for running a single test See https://github.com/docker-mailserver/docker-mailserver/pull/2857/files#r1008582760
54 lines
1.6 KiB
YAML
54 lines
1.6 KiB
YAML
name: 'Test the DMS Container Image'
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
cache-key:
|
|
required: true
|
|
type: string
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
run-tests:
|
|
name: 'Test'
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
matrix:
|
|
part: [serial, parallel/set1, parallel/set2, parallel/set3]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
with:
|
|
# Required to retrieve bats (core + extras):
|
|
submodules: recursive
|
|
|
|
# Get the cached build layers from the build job:
|
|
# This should always be a cache-hit, thus `restore-keys` fallback is not used.
|
|
# No new cache uploads should ever happen for this job.
|
|
- name: 'Retrieve image built from build cache'
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: /tmp/.buildx-cache
|
|
key: cache-buildx-${{ inputs.cache-key }}
|
|
|
|
# Importing from the cache should create the image within approx 30 seconds:
|
|
# Earlier `buildx` + `qemu` steps are not needed as no cache is exported,
|
|
# and only a single platform (AMD64) is loaded:
|
|
- name: 'Build AMD64 image from cache'
|
|
uses: docker/build-push-action@v3.2.0
|
|
with:
|
|
context: .
|
|
tags: mailserver-testing:ci
|
|
# Export the built image to the Docker host for use with BATS:
|
|
load: true
|
|
# Rebuilds the AMD64 image from the cache:
|
|
platforms: linux/amd64
|
|
cache-from: type=local,src=/tmp/.buildx-cache
|
|
|
|
- name: 'Run tests'
|
|
run: make generate-accounts tests/${{ matrix.part }}
|
|
env:
|
|
CI: true
|