diff --git a/.github/workflows/docker-publish-agent.yml b/.github/workflows/docker-publish-agent.yml new file mode 100644 index 0000000..90a3417 --- /dev/null +++ b/.github/workflows/docker-publish-agent.yml @@ -0,0 +1,60 @@ +name: Publish Metadata Agent Image + +on: + push: + branches: + - '**' + tags: + - 'v*.*.*' + +env: + REGISTRY: docker.io + IMAGE_NAME: ${{ secrets.DOCKERHUB_USERNAME }}/furumi-metadata-agent + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Determine version and tags + id: info + run: | + IMAGE="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" + SHORT_SHA="$(echo '${{ github.sha }}' | cut -c1-7)" + + if [[ "${{ github.ref }}" == refs/tags/v* ]]; then + TAG="${{ github.ref_name }}" + VERSION="${TAG#v}" + echo "tags=${IMAGE}:${VERSION},${IMAGE}:latest" >> "$GITHUB_OUTPUT" + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + else + echo "tags=${IMAGE}:trunk,${IMAGE}:${SHORT_SHA}" >> "$GITHUB_OUTPUT" + echo "version=${SHORT_SHA}" >> "$GITHUB_OUTPUT" + fi + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.agent + push: true + tags: ${{ steps.info.outputs.tags }} + build-args: | + FURUMI_VERSION=${{ steps.info.outputs.version }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/docker-publish-player.yml b/.github/workflows/docker-publish-player.yml new file mode 100644 index 0000000..018ede4 --- /dev/null +++ b/.github/workflows/docker-publish-player.yml @@ -0,0 +1,60 @@ +name: Publish Web Player Image + +on: + push: + branches: + - '**' + tags: + - 'v*.*.*' + +env: + REGISTRY: docker.io + IMAGE_NAME: ${{ secrets.DOCKERHUB_USERNAME }}/furumi-web-player + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Determine version and tags + id: info + run: | + IMAGE="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}" + SHORT_SHA="$(echo '${{ github.sha }}' | cut -c1-7)" + + if [[ "${{ github.ref }}" == refs/tags/v* ]]; then + TAG="${{ github.ref_name }}" + VERSION="${TAG#v}" + echo "tags=${IMAGE}:${VERSION},${IMAGE}:latest" >> "$GITHUB_OUTPUT" + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + else + echo "tags=${IMAGE}:trunk,${IMAGE}:${SHORT_SHA}" >> "$GITHUB_OUTPUT" + echo "version=${SHORT_SHA}" >> "$GITHUB_OUTPUT" + fi + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: Dockerfile.web-player + push: true + tags: ${{ steps.info.outputs.tags }} + build-args: | + FURUMI_VERSION=${{ steps.info.outputs.version }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/Dockerfile.agent b/Dockerfile.agent new file mode 100644 index 0000000..d0c2da4 --- /dev/null +++ b/Dockerfile.agent @@ -0,0 +1,32 @@ +FROM rust:1.88.0-bookworm AS builder + +RUN apt-get update && apt-get install -y \ + pkg-config \ + libssl-dev \ + protobuf-compiler \ + cmake \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /usr/src/app +COPY . . + +ARG FURUMI_VERSION=dev +RUN FURUMI_VERSION=${FURUMI_VERSION} cargo build --release --bin furumi-agent + +FROM debian:bookworm-slim + +RUN apt-get update && apt-get install -y \ + ca-certificates \ + libssl-dev \ + && rm -rf /var/lib/apt/lists/* + +RUN useradd -ms /bin/bash appuser +WORKDIR /home/appuser + +COPY --from=builder /usr/src/app/target/release/furumi-agent /usr/local/bin/furumi-agent + +USER appuser + +EXPOSE 8090 + +ENTRYPOINT ["furumi-agent"] diff --git a/Dockerfile.web-player b/Dockerfile.web-player new file mode 100644 index 0000000..ee6902a --- /dev/null +++ b/Dockerfile.web-player @@ -0,0 +1,32 @@ +FROM rust:1.88.0-bookworm AS builder + +RUN apt-get update && apt-get install -y \ + pkg-config \ + libssl-dev \ + protobuf-compiler \ + cmake \ + && rm -rf /var/lib/apt/lists/* + +WORKDIR /usr/src/app +COPY . . + +ARG FURUMI_VERSION=dev +RUN FURUMI_VERSION=${FURUMI_VERSION} cargo build --release --bin furumi-web-player + +FROM debian:bookworm-slim + +RUN apt-get update && apt-get install -y \ + ca-certificates \ + libssl-dev \ + && rm -rf /var/lib/apt/lists/* + +RUN useradd -ms /bin/bash appuser +WORKDIR /home/appuser + +COPY --from=builder /usr/src/app/target/release/furumi-web-player /usr/local/bin/furumi-web-player + +USER appuser + +EXPOSE 8080 + +ENTRYPOINT ["furumi-web-player"]