Partial switch to Gitea Actions
Some checks failed
Build and deploy automation_rs / Build (push) Successful in 4m35s
Build and deploy automation_rs / Create Docker container (push) Failing after 2m27s

This commit is contained in:
Dreaded_X 2023-11-16 01:45:45 +01:00
parent 73a2b077ed
commit 69991dd457
Signed by: Dreaded_X
GPG Key ID: FA5F485356B0D2D4
5 changed files with 56 additions and 109 deletions

View File

@ -1,2 +1,3 @@
/target
.env .env
/target
!/target/x86_64-unknown-linux-gnu/release/automation

View File

@ -1,49 +0,0 @@
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
RUST_LOG:
from_secret: RUST_LOG
commands:
- docker stop automation_rs || true
- docker rm automation_rs || true
# Networks need to be setup to to allow broadcasts: https://www.devwithimagination.com/2020/06/15/homebridge-docker-and-wake-on-lan/ https://github.com/dhutchison/container-images/blob/0c2d7d96bab751fb0a008cc91ba2990724bbd11f/homebridge/configure_docker_networks_for_wol.sh
# Needs to be done for ALL networks, because we can't seem to control which interface gets used to send the broadcast
- docker create -e RUST_LOG=$RUST_LOG -e MQTT_PASSWORD=$MQTT_PASSWORD -e HUE_TOKEN=$HUE_TOKEN -e NTFY_TOPIC=$NTFY_TOPIC --network mqtt --restart unless-stopped --name automation_rs 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

View File

@ -0,0 +1,47 @@
# Based on: https://pastebin.com/99Fq2b2w
name: Build and deploy automation_rs
on:
push:
branches:
- main
- feature/actions
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Formatting
uses: actions-rust-lang/rustfmt@v1
- name: Clippy
run: cargo clippy --all-targets --all -- -D warnings
- name: Build
run: cargo build --release
create-docker-container:
name: Create Docker container
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- uses: https://github.com/docker/setup-buildx-action@v3
- name: Login to registry
uses: https://github.com/docker/login-action@v3
with:
registry: git.huizinga.dev
username: ${{ gitea.actor }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Build & Push Docker Image
uses: https://github.com/docker/build-push-action@v5
with:
context: .
push: true
tags: git.huizinga.dev/dreaded_x/automation_rs:latest

View File

@ -1,64 +1,8 @@
FROM rust:bookworm AS build FROM gcr.io/distroless/cc-debian12:nonroot
# Create user
ENV USER=automation
ENV UID=10001
RUN adduser \
--disabled-password \
--gecos "" \
--home "/nonexistent" \
--shell "/sbin/nologin" \
--no-create-home \
--uid "${UID}" \
"${USER}"
# Create basic project structure
RUN cargo new --bin /app
RUN cargo new --lib /app/impl_cast && truncate -s 0 /app/impl_cast/src/lib.rs
RUN cargo new --lib /app/google-home
# Get the correct version of the compiler
RUN rustup default nightly
# Copy cargo config
COPY .cargo/config.toml /app/.cargo/config.toml
# Copy the Cargo.toml files
COPY impl_cast/Cargo.toml /app/impl_cast
COPY google-home/Cargo.toml /app/google-home
COPY Cargo.toml Cargo.lock /app/
# Download and build all the dependencies
WORKDIR /app
RUN --mount=type=cache,target=/usr/local/cargo/registry cargo build --release
# Build impl_cast
COPY impl_cast/src/ /app/impl_cast/src/
RUN --mount=type=cache,target=/usr/local/cargo/registry set -e; touch /app/impl_cast/src/lib.rs; cargo build --release --package impl_cast
# Build google-home
COPY google-home/src/ /app/google-home/src/
RUN --mount=type=cache,target=/usr/local/cargo/registry set -e; touch /app/google-home/src/lib.rs; cargo build --release --package google-home
# Build automation
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"]
# FINAL IMAGE
FROM gcr.io/distroless/cc-debian12:latest
COPY --from=build /etc/passwd /etc/passwd
COPY --from=build /etc/group /etc/group
ENV AUTOMATION_CONFIG=/app/config.yml ENV AUTOMATION_CONFIG=/app/config.yml
COPY config/config.yml /app/config.yml COPY ./config/config.yml /app/config.yml
WORKDIR /app COPY ./target/x86_64-unknown-linux-gnu/release/automation /app/automation
COPY --from=build /app/target/x86_64-unknown-linux-gnu/release/automation ./
USER automation:automation
CMD ["/app/automation"] CMD ["/app/automation"]

4
rust-toolchain.toml Normal file
View File

@ -0,0 +1,4 @@
[toolchain]
channel = "nightly-2023-11-15"
components = ["rustfmt", "clippy"]
profile = "minimal"