mirror of
https://github.com/freedomofpress/dangerzone.git
synced 2025-05-02 11:42:23 +02:00

Ensure that when the container image is installing pymupdf (unavailable in the repos) with verified hashes. To do so, it has the pymupdf dependency declared in a "container" group in `pyproject.toml`, which then gets exported into a requirements.txt, which is then used for hash-verification when building the container. Because this required modifying the container image build scripts, they were all merged to avoid duplicate code. This was an overdue change anyways.
162 lines
4.7 KiB
YAML
162 lines
4.7 KiB
YAML
name: Tests
|
|
on:
|
|
push:
|
|
pull_request:
|
|
branches: [ main ]
|
|
schedule:
|
|
- cron: '0 0 * * *' # Run every day at 00:00 UTC.
|
|
|
|
jobs:
|
|
windows:
|
|
runs-on: windows-latest
|
|
env:
|
|
DUMMY_CONVERSION: True
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.11'
|
|
- run: pip install poetry
|
|
- run: poetry install
|
|
- name: Run CLI tests
|
|
run: poetry run make test
|
|
# Taken from: https://github.com/orgs/community/discussions/27149#discussioncomment-3254829
|
|
- name: Set path for candle and light
|
|
run: echo "C:\Program Files (x86)\WiX Toolset v3.11\bin" >> $GITHUB_PATH
|
|
shell: bash
|
|
- name: Build the MSI installer
|
|
# NOTE: This also builds the .exe internally.
|
|
run: poetry run .\install\windows\build-app.bat
|
|
|
|
macOS:
|
|
runs-on: macos-latest
|
|
env:
|
|
DUMMY_CONVERSION: True
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.10'
|
|
- run: pip install poetry
|
|
- run: poetry install
|
|
- name: Run CLI tests
|
|
run: poetry run make test
|
|
|
|
build-deb:
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
target: debian-bookworm
|
|
distro: debian
|
|
version: bookworm
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.10'
|
|
|
|
- name: Build dev environment
|
|
run: |
|
|
./dev_scripts/env.py --distro ${{ env.distro }} \
|
|
--version ${{ env.version }} \
|
|
build-dev
|
|
|
|
- name: Build Dangerzone image
|
|
run: python3 ./install/common/build-image.py
|
|
|
|
- name: Build Dangerzone .deb
|
|
run: |
|
|
./dev_scripts/env.py --distro ${{ env.distro }} \
|
|
--version ${{ env.version }} \
|
|
run --dev --no-gui ./dangerzone/install/linux/build-deb.py
|
|
|
|
- name: Upload Dangerzone .deb
|
|
uses: actions/upload-artifact@v3
|
|
with:
|
|
name: dangerzone.deb
|
|
path: "deb_dist/dangerzone_*_all.deb"
|
|
|
|
install-deb:
|
|
runs-on: ubuntu-latest
|
|
needs: build-deb
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- target: ubuntu-20.04
|
|
distro: ubuntu
|
|
version: "20.04"
|
|
- target: ubuntu-22.04
|
|
distro: ubuntu
|
|
version: "22.04"
|
|
- target: ubuntu-23.04
|
|
distro: ubuntu
|
|
version: "23.04"
|
|
- target: ubuntu-23.10
|
|
distro: ubuntu
|
|
version: "23.10"
|
|
- target: debian-bullseye
|
|
distro: debian
|
|
version: bullseye
|
|
- target: debian-bookworm
|
|
distro: debian
|
|
version: bookworm
|
|
- target: debian-trixie
|
|
distro: debian
|
|
version: trixie
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v3
|
|
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: '3.10'
|
|
|
|
- name: Download Dangerzone .deb
|
|
uses: actions/download-artifact@v3
|
|
with:
|
|
name: dangerzone.deb
|
|
path: "deb_dist/"
|
|
|
|
- name: Create end-user environment on (${{ matrix.target }})
|
|
run: |
|
|
./dev_scripts/env.py --distro ${{ matrix.distro }} \
|
|
--version ${{ matrix.version }} \
|
|
build
|
|
|
|
- name: Configure Podman for Debian Bullseye specifically
|
|
if: matrix.target == 'debian-bullseye'
|
|
run: |
|
|
# Create a Podman config specifically for Bullseye (see #388).
|
|
mkdir bullseye_fix
|
|
cd bullseye_fix
|
|
cat > containers.conf <<EOF
|
|
[engine]
|
|
cgroup_manager="cgroupfs"
|
|
events_logger="file"
|
|
EOF
|
|
|
|
# Copy the Podman config into the container image we created for the
|
|
# Dangerzone environment.
|
|
cat > Dockerfile.bullseye <<EOF
|
|
FROM dangerzone.rocks/debian:bullseye-backports
|
|
RUN mkdir -p /home/user/.config/containers
|
|
COPY containers.conf /home/user/.config/containers/
|
|
EOF
|
|
|
|
# Create a new image from the Dangerzone environment and re-tag it.
|
|
podman build -t dangerzone.rocks/debian:bullseye-backports \
|
|
-f Dockerfile.bullseye .
|
|
|
|
- name: Run a test command
|
|
run: |
|
|
./dev_scripts/env.py --distro ${{ matrix.distro }} \
|
|
--version ${{ matrix.version }} \
|
|
run dangerzone-cli dangerzone/tests/test_docs/sample-pdf.pdf
|
|
|
|
- name: Check that the Dangerzone GUI imports work
|
|
run: |
|
|
./dev_scripts/env.py --distro ${{ matrix.distro }} \
|
|
--version ${{ matrix.version }} \
|
|
run dangerzone --help
|