name: Run unit-tests and container-based deploy+test verification on: # Triggers when a PR is merged into main or a direct push occurs push: branches: [ "main" ] # Triggers for any PR (and its subsequent commits) targeting the main branch pull_request: branches: [ "main" ] # Newest push wins: Prevents multiple runs from clashing and wasting runner efforts concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true jobs: tox: name: isolated chatmaild tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 # Checkout pull request HEAD commit instead of merge commit # Otherwise `test_deployed_state` will be unhappy. with: ref: ${{ github.event.pull_request.head.sha }} - name: download filtermail run: curl -L https://github.com/chatmail/filtermail/releases/download/v0.6.1/filtermail-x86_64 -o /usr/local/bin/filtermail && chmod +x /usr/local/bin/filtermail - name: run chatmaild tests working-directory: chatmaild run: pipx run tox scripts: name: deploy-chatmail tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - name: initenv run: scripts/initenv.sh - name: append venv/bin to PATH run: echo venv/bin >>$GITHUB_PATH - name: run formatting checks run: cmdeploy fmt -v - name: run deploy-chatmail offline tests run: pytest --pyargs cmdeploy lxc-test: name: LXC deploy and test uses: chatmail/cmlxc/.github/workflows/lxc-test.yml@v0.8.1 with: cmlxc_commands: | cmlxc init cmlxc deploy-cmdeploy --source ./repo -vv cm0 cmlxc test-mini cm0 cmlxc test-cmdeploy -vv cm0 cmlxc deploy-cmdeploy --source ./repo -vv --ipv4-only cm1 cmlxc test-cmdeploy -vv cm0 cm1