diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..66e321d --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,33 @@ +name: Code Quality + +on: push + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Rust toolchain + run: | + rustup update --no-self-update stable + rustup component add --toolchain stable rustfmt + rustup default stable + + - name: Build + run: cargo build --verbose + + - name: Run tests + run: cargo test --verbose + + - name: Run clippy + run: cargo clippy -- -D warnings + + - name: Run fmt check + run: cargo fmt -- --check + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..df97b56 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM rust:slim-bookworm as build +ARG TAGOIO_SOURCE_FOLDER="/tago-io" + +RUN apt update +RUN apt install -y protobuf-compiler libssl-dev gcc pkg-config build-essential + +RUN mkdir -p ${TAGOIO_SOURCE_FOLDER} +WORKDIR ${TAGOIO_SOURCE_FOLDER} +ADD . ${TAGOIO_SOURCE_FOLDER} + +RUN cargo build --release + +FROM debian:bookworm-slim +ARG TAGOIO_SOURCE_FOLDER="/tago-io" + +RUN apt update +RUN apt install -y build-essential netcat-traditional ca-certificates +RUN apt-get clean && rm -rf /var/lib/apt/lists/* + +RUN mkdir -p ${TAGOIO_SOURCE_FOLDER} +WORKDIR ${TAGOIO_SOURCE_FOLDER} +COPY --from=build ${TAGOIO_SOURCE_FOLDER}/target/release/tagoio-mqtt-relay . +COPY --from=build ${TAGOIO_SOURCE_FOLDER}/config.toml config.toml + +ENTRYPOINT ["/tago-io/tagoio-mqtt-relay"]