Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 74 additions & 0 deletions .github/workflows/build.yml

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This CI will run monthly to build a new version of the image, pulling the latest code of BOINC available in the Ubuntu repo.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Var DOCKERHUB_USERNAME and secret DOCKERHUB_TOKEN need to be set in repo configuration.

Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: ci

on:
workflow_dispatch:
push:
schedule:
- cron: "0 7 7 * *"

jobs:
set-date:
runs-on: ubuntu-latest
outputs:
date: ${{ steps.date.outputs.DATE }}
steps:
- name: Set Date
id: date
run: echo "DATE=$(date +"%m-%Y")" >> $GITHUB_OUTPUT

base:
needs: set-date
uses: ./.github/workflows/docker-build.yml
with:
dockerfile: Dockerfile
tag: ${{ vars.DOCKERHUB_USERNAME }}/boinc:latest,${{ vars.DOCKERHUB_USERNAME }}/boinc:${{ needs.set-date.outputs.date }}
platforms: linux/amd64,linux/arm64,linux/arm/v7
secrets: inherit

alpine:
needs: set-date
uses: ./.github/workflows/docker-build.yml
with:
dockerfile: Dockerfile.alpine
tag: ${{ vars.DOCKERHUB_USERNAME }}/boinc-alpine:edge,${{ vars.DOCKERHUB_USERNAME }}/boinc-alpine:${{ needs.set-date.outputs.date }}
platforms: linux/amd64,linux/arm64,linux/arm/v7
secrets: inherit

AMD:
needs: set-date
uses: ./.github/workflows/docker-build.yml
with:
dockerfile: Dockerfile.amd
tag: ${{ vars.DOCKERHUB_USERNAME }}/boinc-amd:latest,${{ vars.DOCKERHUB_USERNAME }}/boinc-amd:${{ needs.set-date.outputs.date }}
secrets: inherit

intel:
needs:
- set-date
- base
uses: ./.github/workflows/docker-build.yml
with:
dockerfile: Dockerfile.intel
tag: ${{ vars.DOCKERHUB_USERNAME }}/boinc-intel:latest,${{ vars.DOCKERHUB_USERNAME }}/boinc-intel:${{ needs.set-date.outputs.date }}
platforms: linux/amd64
secrets: inherit

nvidia:
needs: set-date
uses: ./.github/workflows/docker-build.yml
with:
dockerfile: Dockerfile.nvidia
tag: ${{ vars.DOCKERHUB_USERNAME }}/boinc-nvidia:latest,${{ vars.DOCKERHUB_USERNAME }}/boinc-nvidia:${{ needs.set-date.outputs.date }}
platforms: linux/amd64,linux/arm64
secrets: inherit

multi-gpu:
needs:
- set-date
- nvidia
uses: ./.github/workflows/docker-build.yml
with:
dockerfile: Dockerfile.multi-gpu
tag: ${{ vars.DOCKERHUB_USERNAME }}/boinc-multi-gpu:latest,${{ vars.DOCKERHUB_USERNAME }}/boinc-multi-gpu:${{ needs.set-date.outputs.date }}
platforms: linux/amd64
secrets: inherit
42 changes: 42 additions & 0 deletions .github/workflows/docker-build.yml

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This CI is a "template" used by the monthly build CI to build each images. This CI is a simple build and push image with the support of the multiarch images. Thus dedicated dockerfiles for armv7, v7, x86 & x64 are not needed anymore as the ubuntu image provide all archs.

Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: docker-build

on:
workflow_call:
inputs:
dockerfile:
required: true
type: string
tag:
required: true
type: string
platforms:
required: false
default: linux/amd64
type: string

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- 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
uses: docker/build-push-action@v6
with:
platforms: ${{ inputs.platforms }}
push: true
tags: ${{ inputs.tag }}
file: ${{ inputs.dockerfile }}
4 changes: 2 additions & 2 deletions Dockerfile.base-ubuntu → Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ LABEL maintainer="BOINC" \
ENV BOINC_GUI_RPC_PASSWORD="123" \
BOINC_REMOTE_HOST="127.0.0.1" \
BOINC_CMD_LINE_OPTIONS="" \
DEBIAN_FRONTEND=noninteractive
DEBIAN_FRONTEND=noninteractive

# Copy files
COPY bin/ /usr/bin/
Expand All @@ -23,7 +23,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
# Install PPA dependency
software-properties-common \
# Install Time Zone Database
tzdata && \
tzdata && \
# Install BOINC Client
add-apt-repository -y ppa:costamagnagianfranco/boinc && \
apt-get update && apt-get install -y --no-install-recommends \
Expand Down
8 changes: 2 additions & 6 deletions Dockerfile.base-alpine → Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
##########################################################################################
# IMPORTANT: Alpine uses musl instead of glibc, therefore projects might not support it. #
##########################################################################################

FROM alpine:edge

LABEL maintainer="BOINC" \
Expand All @@ -24,8 +20,8 @@ EXPOSE 31416
# Install
RUN apk add --no-cache -X http://dl-cdn.alpinelinux.org/alpine/edge/testing \
# Install Time Zone Database
tzdata \
tzdata \
# Install BOINC Client
boinc
boinc

CMD ["start-boinc.sh"]
31 changes: 0 additions & 31 deletions Dockerfile.arm32v7

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The docker file dedicated to armv7 is not needed anymore as the official Ubuntu supports multiarch : https://hub.docker.com/layers/library/ubuntu/latest/images/sha256-8fe30db6f4cded743d10faed55c5b7d1c49b3a56b55967923fd738e66153e5a0

This file was deleted.

31 changes: 0 additions & 31 deletions Dockerfile.arm64v8

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The docker file dedicated to armv8 is not needed anymore as the official Ubuntu supports multiarch : https://hub.docker.com/layers/library/ubuntu/latest/images/sha256-97b5e4984a1c353da6a9406c84554aab0422735a1335427a9e883ac477bd71df

This file was deleted.

2 changes: 1 addition & 1 deletion Dockerfile.intel
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM boinc/client:base-ubuntu
FROM boinc/boinc:latest

LABEL maintainer="BOINC" \
description="Intel GPU-savvy BOINC client."
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.multi-gpu
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM boinc/client:nvidia
FROM boinc/boinc-nvidia:latest

LABEL maintainer="BOINC" \
description="Multi GPU-savvy (Intel 5th gen+ & Nvidia) BOINC client."
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile.nvidia
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ LABEL maintainer="BOINC" \
ENV BOINC_GUI_RPC_PASSWORD="123" \
BOINC_REMOTE_HOST="127.0.0.1" \
BOINC_CMD_LINE_OPTIONS="" \
DEBIAN_FRONTEND=noninteractive
DEBIAN_FRONTEND=noninteractive

# Copy files
COPY bin/ /usr/bin/
Expand All @@ -23,7 +23,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
# Install PPA dependency
software-properties-common \
# Install Time Zone Database
tzdata && \
tzdata && \
# Install BOINC Client
add-apt-repository -y ppa:costamagnagianfranco/boinc && \
apt-get update && apt-get install -y --no-install-recommends \
Expand Down
13 changes: 0 additions & 13 deletions Dockerfile.virtualbox

This file was deleted.