Skip to content

Commit

Permalink
build and docker improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
Florian Asche committed Dec 12, 2024
1 parent a64513b commit b49e64c
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 10 deletions.
5 changes: 5 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
*
!requirements.txt
!requirements_audio_enhancement.txt
!requirements_vad.txt
!MANIFEST.in
!setup.py
!script/setup
!script/run
!script/run_2mic
!script/run_4mic
!wyoming_satellite/*.py
!wyoming_satellite/utils
!wyoming_satellite/VERSION
!docker/run
!sounds/*.wav
!examples/*
49 changes: 49 additions & 0 deletions .github/workflows/docker-build-nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
name: Build and publish the voice sattelite docker image

on:
push:
branches:
- "master"

env:
REGISTRY: ghcr.io

jobs:
build-and-push-image:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
attestations: write

steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # v3.1.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ github.token }}
# Build Docker Images (amd64 and arm64)
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push Docker image
id: push
uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0
with:
context: .
platforms: linux/amd64,linux/aarch64
push: true
tags: ${{ env.REGISTRY }}/${{ github.repository }}:nightly
labels: "nightly"
- name: Generate artifact attestation
uses: actions/[email protected]
with:
subject-name: ${{ env.REGISTRY }}/${{ github.repository }}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
name: Build and publish the docker image
name: Build and publish the voice sattelite stable docker image

on:
push:
Expand All @@ -9,7 +9,6 @@ on:

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-and-push-image:
Expand All @@ -29,11 +28,16 @@ jobs:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ github.token }}
# Build Docker Images (amd64 and arm64)
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Extract metadata for Docker
id: meta
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # v5.5.1
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
images: ${{ env.REGISTRY }}/${{ github.repository }}
# E.g. tag v1.2.0 produces 3 tags: '1.2.0', '1.2', and 'latest'
# https://github.com/docker/metadata-action?tab=readme-ov-file#semver
tags: |
Expand All @@ -44,13 +48,14 @@ jobs:
uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # v5.3.0
with:
context: .
platforms: linux/amd64,linux/aarch64
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v1
with:
subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
subject-name: ${{ env.REGISTRY }}/${{ github.repository }}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true
...
27 changes: 21 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,35 @@ ENV LANG C.UTF-8
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
apt-get install --yes --no-install-recommends avahi-utils alsa-utils pulseaudio-utils pipewire-bin
apt-get install --yes --no-install-recommends avahi-utils alsa-utils pulseaudio-utils pipewire-bin build-essential

# set workdir
WORKDIR /app

# copy content for voice
COPY sounds/ ./sounds/
COPY script/setup ./script/
COPY setup.py requirements.txt MANIFEST.in ./
COPY script/run ./script/
COPY script/run_2mic ./script/
COPY script/run_4mic ./script/
COPY setup.py requirements.txt requirements_audio_enhancement.txt requirements_vad.txt MANIFEST.in ./
COPY wyoming_satellite/ ./wyoming_satellite/
COPY docker/run ./

RUN script/setup
# copy content for led
COPY examples/ ./examples/

COPY script/run ./script/
COPY docker/run ./
# run installation
RUN python3 -m venv .venv
RUN .venv/bin/pip3 install --upgrade pip
RUN .venv/bin/pip3 install --upgrade wheel setuptools
RUN .venv/bin/pip3 install --extra-index-url 'https://www.piwheels.org/simple' -f 'https://synesthesiam.github.io/prebuilt-apps/' -r requirements.txt -r requirements_audio_enhancement.txt -r requirements_vad.txt -r examples/requirements.txt
#RUN .venv/bin/pip3 install 'pixel-ring'

EXPOSE 10700
# set port for voice and led
EXPOSE 10700 10500

# set start script
# add parameters in docker
ENTRYPOINT ["/app/run"]
#ENTRYPOINT ["/app/script/run_2mic" "--uri" "tcp://0.0.0.0:10500"] for led
4 changes: 4 additions & 0 deletions examples/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
gpiozero==2.0.1
spidev==3.6
pigpio==1.78
RPi.GPIO==0.7.1

0 comments on commit b49e64c

Please sign in to comment.