Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 32 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ name: Build & Deploy

on: [push, pull_request]

env:
DOCKER_BUILDKIT: 1

jobs:
build:
runs-on: ${{ matrix.os }}
Expand All @@ -18,9 +21,10 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4

- name: Install Qt
if: runner.os != 'Linux'
uses: jurplel/install-qt-action@v4
with:
version: '5.15.2'
Expand All @@ -30,17 +34,40 @@ jobs:
AQT_CONFIG: ${{ github.workspace }}/tools/aqt-settings.ini

- name: Install jinja2
if: runner.os != 'Linux'
run: |
pip install --user --upgrade pip;
pip install --user jinja2;

- name: Set up Docker Buildx
if: runner.os == 'Linux'
uses: docker/setup-buildx-action@v3

- name: Cache Docker layers
if: runner.os == 'Linux'
uses: actions/cache@v4
with:
path: /tmp/.buildx-cache
key: linux-builder-${{ hashFiles('tools/Dockerfile.pingviewer-linux-builder-ubuntu18') }}
restore-keys: |
linux-builder-

- name: Build Docker
if: runner.os == 'Linux'
uses: docker/build-push-action@v6
with:
context: .
file: tools/Dockerfile.pingviewer-linux-builder-ubuntu18
tags: pingviewer-linux-builder-ubuntu18
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache,mode=max
load: true

- name: Build Linux
if: runner.os == 'Linux'
run: |
sudo apt update
sudo apt install libxcb-* libfuse-dev
./tools/compile.sh
mv /tmp/pingviewer-x86_64.AppImage pingviewer-Release.AppImage
docker run --rm -v "$PWD:/output" pingviewer-linux-builder-ubuntu18 bash -c \
"./tools/compile.sh && mv /tmp/pingviewer-x86_64.AppImage /output/pingviewer-Release.AppImage"

- name: Build Mac
if: runner.os == 'macOS'
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
submodules: recursive

Expand Down
66 changes: 66 additions & 0 deletions tools/Dockerfile.pingviewer-linux-builder-ubuntu18
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
FROM ubuntu:18.04

ENV DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8

RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
ca-certificates \
file \
fuse \
git \
libdbus-1-3 \
libfontconfig1 \
libfuse2 \
libgl1-mesa-glx \
libglu1-mesa-dev \
libpulse-mainloop-glib0 \
libssl-dev \
libxcb1 \
libxrender1 \
mesa-common-dev \
python3 \
python3-pip \
python3-setuptools \
qttools5-dev-tools \
unzip \
wget \
&& apt-get clean

# Install more recent CMAKE
RUN wget https://github.com/Kitware/CMake/releases/download/v3.26.4/cmake-3.26.4-linux-x86_64.sh -O /tmp/cmake.sh \
&& chmod +x /tmp/cmake.sh \
&& /tmp/cmake.sh --skip-license --prefix=/usr/local \
&& rm /tmp/cmake.sh

RUN ln -s /usr/bin/python3 /usr/bin/python && \
pip3 install -U pip && \
pip3 install jinja2 aqtinstall==v2.2.3

COPY tools/aqt-settings.ini .

# Install QT
ENV QT=5.15.2
ENV QT_ARCH=gcc_64
ENV AQT_CONFIG=aqt-settings.ini
RUN aqt install-qt --outputdir /opt/qt linux desktop ${QT} ${QT_ARCH} -m all

ENV CMAKE_PREFIX_PATH="/opt/qt/${QT}/${QT_ARCH}"
ENV PATH="/opt/qt/${QT}/${QT_ARCH}/bin:$PATH"
ENV QT_PLUGIN_PATH="/opt/qt/${QT}/${QT_ARCH}/plugins/"
ENV QML_IMPORT_PATH="/opt/qt/${QT}/${QT_ARCH}/qml/"
ENV QML2_IMPORT_PATH="/opt/qt/${QT}/${QT_ARCH}/qml/"

# Download linuxdeploy tools
RUN wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -O /tmp/linuxdeploy.AppImage && \
chmod +x /tmp/linuxdeploy.AppImage
RUN wget https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage -O /tmp/linuxdeploy-plugin-qt.AppImage && \
chmod +x /tmp/linuxdeploy-plugin-qt.AppImage

# Enable auto extract+run for AppImages, so no FUSE is required
ENV APPIMAGE_EXTRACT_AND_RUN=1

WORKDIR /ping-viewer
COPY . .

CMD ["bash", "-c", "tools/compile.sh"]
8 changes: 5 additions & 3 deletions tools/aqt-settings.ini
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ hash_algorithm: sha1

[mirrors]
trusted_mirrors:
https://qt.mirror.constant.com
https://download.qt.io
fallbacks:
https://qt.mirror.constant.com
https://mirrors.ocf.berkeley.edu
https://download.qt.io
https://mirrors.ocf.berkeley.edu/qt
https://ftp.jaist.ac.jp/pub/qtproject
http://ftp1.nluug.nl/languages/qt
https://mirrors.dotsrc.org/qtproject
Loading