diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..fedaa2b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +/target +.env diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..4c0f2f1 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,46 @@ +kind: pipeline +type: docker +name: default + +steps: + - name: build + image: docker + volumes: + - name: socket + path: /var/run/docker.sock + commands: + - DOCKER_BUILDKIT=1 docker build -t automation_rs . + + - name: deploy + image: docker + volumes: + - name: socket + path: /var/run/docker.sock + environment: + MQTT_PASSWORD: + from_secret: MQTT_PASSWORD + HUE_TOKEN: + from_secret: HUE_TOKEN + NTFY_TOPIC: + from_secret: NTFY_TOPIC + commands: + - docker stop automation_rs || true + + - docker rm automation_rs || true + + - docker create -e MQTT_PASSWORD=$MQTT_PASSWORD -e HUE_TOKEN=$HUE_TOKEN -e NTFY_TOPIC=$NTFY_TOPIC --name automation_rs automation_rs + - docker network connect mqtt automation_rs + - docker network connect web automation_rs + - docker start automation_rs + + when: + branch: + - master + event: + exclude: + - pull_request + +volumes: + - name: socket + host: + path: /var/run/docker.sock diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fcaa195 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM rustlang/rust:nightly-slim AS build + +RUN cargo new --bin /app +RUN cargo new --lib /app/impl_cast +RUN cargo new --lib /app/google-home + +COPY impl_cast/Cargo.toml /app/impl_cast +COPY google-home/Cargo.toml /app/google-home +COPY Cargo.toml Cargo.lock /app/ + +WORKDIR /app/ +RUN --mount=type=cache,target=/usr/local/cargo/registry cargo build --release + +COPY impl_cast/src/ /app/impl_cast/src/ +COPY google-home/src/ /app/google-home/src/ +COPY src/ /app/src/ + +RUN --mount=type=cache,target=/usr/local/cargo/registry set -e; touch /app/src/main.rs /app/src/lib.rs /app/google-home/src/lib.rs /app/impl_cast/src/lib.rs; cargo build --release + +CMD ["/app/target/release/automation"]