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
52 changes: 52 additions & 0 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Build and Push Docker Image

on:
push:

permissions:
contents: write
packages: write

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Update Submodule
run: git submodule update --init --recursive

- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
push: true
cache-from: type=gha
cache-to: type=gha,mode=max
tags: |
pa733/qmisms:latest
ghcr.io/pa733/qmisms:latest
58 changes: 58 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# Builder stage
FROM ubuntu:24.04 AS builder

# Install dependencies
RUN apt-get update && apt-get install -y \
build-essential \
git \
xmake \
curl \
pkg-config \
libgflags-dev \
libglib2.0-dev \
libqmi-glib-dev \
libmbim-glib-dev \
libssl-dev \
p7zip-full \
unzip \
&& rm -rf /var/lib/apt/lists/*

# Set the working directory
WORKDIR /app

# Install Xmake dependencies
COPY xmake.lua .
COPY build ./build

RUN export XMAKE_ROOT=y \
&& xmake f -vD -y

# Copy the source code
COPY . .

# Build the application
RUN export XMAKE_ROOT=y \
&& xmake build -y qmi_sms_reader \
&& find /app/build/ -type f -name qmi_sms_reader -exec cp {} /app/build/qmi_sms_reader \;

# Final stage
FROM ubuntu:24.04

RUN apt-get update && apt-get install -y \
libqmi-glib5 \
libqmi-proxy \
libgflags2.2 \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*

# Set the working directory
WORKDIR /app

# Copy the built application from the builder stage
COPY --from=builder /app/build/qmi_sms_reader /usr/local/bin/qmi_sms_reader

# Copy configuration file, if needed
COPY config.example.yaml /etc/qmisms/config.yaml

# Set the entrypoint
ENTRYPOINT ["/usr/local/bin/qmi_sms_reader"]
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# QmiSMS
## Usage
1. Copy the example configuration file and modify it as needed
```bash
cp config.example.yaml config.yaml
```
2. Run the container
```bash
docker run -d \
--name qmi_sms_reader \
--restart unless-stopped \
--device /dev/cdc-wdm0:/dev/cdc-wdm0 \
-v $(pwd)/config.yaml:/app/config.yaml \
ghcr.io/pa733/qmisms:latest
```
## Compatible Servers
[Super SMS Bridge](https://github.com/PA733/SuperSMSBridge)
19 changes: 6 additions & 13 deletions xmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ add_rules("mode.debug", "mode.release")

add_requires("ixwebsocket", {configs = {use_tls = true, ssl = "mbedtls"}})
add_requires("yaml-cpp", {configs = {shared = false}})
add_requires("openssl", {system = false, configs = {shared = false}})
add_requires("cppcodec", "nlohmann_json", "glog")
add_requires("glog", {configs = {shared = false}})
add_requires("glib-2.0", {system = true})
add_requires("qmi-glib", {system = true})
add_requires("cppcodec", "nlohmann_json")

add_repositories("local-repo build")
add_requires("ixwebsocket-custom", {configs = {use_tls = true, ssl = "mbedtls"}})
Expand All @@ -23,21 +25,12 @@ target("qmi_sms_reader")
add_defines("DESKTOP_PDU")
add_files("PDUlib/src/*.cpp")

add_packages("openssl", "cppcodec", "yaml-cpp", "ixwebsocket-custom", "nlohmann_json", "glog")

add_packages("pkgconfig::glib-2.0", "pkgconfig::qmi-glib")
add_packages("openssl", "cppcodec", "yaml-cpp", "ixwebsocket-custom", "nlohmann_json", "glog", "glib-2.0", "qmi-glib")
add_links("gio-2.0", "gobject-2.0", "glib-2.0")

add_ldflags("-static-libgcc", "-static-libstdc++", "-Wl,-Bstatic -lc -Wl,-Bdynamic")
add_links("qmi-glib", "gio-2.0", "gobject-2.0", "glib-2.0")

-- 补全一些 clangd 找不到的库
add_includedirs(
"/usr/include/glib-2.0",
"/usr/lib/aarch64-linux-gnu/glib-2.0/include",
"/usr/include/libqrtr-glib",
"/usr/local/include/libqmi-glib")

-- 指定 libqmi 的库目录
add_linkdirs("/usr/lib")

Expand Down Expand Up @@ -68,7 +61,7 @@ target("qmi_sms_reader_musl")

add_packages("pkgconfig::glib-2.0", "pkgconfig::qmi-glib")
add_links("gio-2.0", "gobject-2.0", "glib-2.0", "qmi-glib")

add_linkdirs(
staging_dir .. "/target-aarch64_generic_musl/usr/lib",
staging_dir .. "/target-aarch64_generic_musl/root-rockchip/usr/lib")
Expand Down