Moved from Docker Hub to GitHub Container Registry for Docker compilations

This commit is contained in:
Paulchen-Panther 2020-09-06 13:43:44 +02:00
parent 8b2ebf355d
commit 50e9084d2f
7 changed files with 72 additions and 68 deletions

View File

@ -10,20 +10,20 @@ jobs:
vmImage: 'ubuntu-16.04' vmImage: 'ubuntu-16.04'
strategy: strategy:
matrix: matrix:
AMD64 (x64): x86_64:
dockerTag: 'amd64' dockerImage: 'x86_64'
dockerName: 'Debian Stretch (AMD64)' dockerName: 'Debian Stretch (x86_64)'
platform: 'x11' platform: 'x11'
ARMv6hf (Raspberry Pi v1 & ZERO): ARMv6hf (Raspberry Pi v1 & ZERO):
dockerTag: 'armv6hf' dockerImage: 'armv6l'
dockerName: 'Debian Stretch (Raspberry Pi v1 & ZERO)' dockerName: 'Debian Stretch (Raspberry Pi v1 & ZERO)'
platform: 'rpi' platform: 'rpi'
ARMv7hf (Raspberry Pi 2 & 3): ARMv7hf (Raspberry Pi 2 & 3):
dockerTag: 'armv7hf' dockerImage: 'armv7l'
dockerName: 'Debian Stretch (Raspberry Pi 2 & 3)' dockerName: 'Debian Stretch (Raspberry Pi 2 & 3)'
platform: 'rpi' platform: 'rpi'
ARMv8 (Generic AARCH64): ARMv8 (Generic AARCH64):
dockerTag: 'aarch64' dockerImage: 'aarch64'
dockerName: 'ARMv8 (Generic AARCH64)' dockerName: 'ARMv8 (Generic AARCH64)'
platform: 'amlogic' platform: 'amlogic'
@ -35,7 +35,8 @@ jobs:
- bash: ./.ci/ci_build.sh - bash: ./.ci/ci_build.sh
displayName: 'Build $(dockerName) packages' displayName: 'Build $(dockerName) packages'
env: env:
DOCKER_TAG: $(dockerTag) DOCKER_IMAGE: $(dockerImage)
DOCKER_TAG: stretch
DOCKER_NAME: $(dockerName) DOCKER_NAME: $(dockerName)
PLATFORM: $(platform) PLATFORM: $(platform)

View File

@ -46,7 +46,9 @@ elif [[ $CI_NAME == *"mingw64_nt"* || "$CI_NAME" == 'windows_nt' ]]; then
exit 0; exit 0;
exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; } exit 1 || { echo "---> Hyperion compilation failed! Abort"; exit 5; }
elif [[ "$CI_NAME" == 'linux' ]]; then elif [[ "$CI_NAME" == 'linux' ]]; then
echo "Compile Hyperion with DOCKER_TAG = ${DOCKER_TAG} and friendly name DOCKER_NAME = ${DOCKER_NAME}" echo "Compile Hyperion with DOCKER_IMAGE = ${DOCKER_IMAGE}, DOCKER_TAG = ${DOCKER_TAG} and friendly name DOCKER_NAME = ${DOCKER_NAME}"
# set GitHub Container Registry url
REGISTRY_URL="ghcr.io/hyperion-project/${DOCKER_IMAGE}"
# take ownership of deploy dir # take ownership of deploy dir
mkdir ${CI_BUILD_DIR}/deploy mkdir ${CI_BUILD_DIR}/deploy
@ -54,7 +56,7 @@ elif [[ "$CI_NAME" == 'linux' ]]; then
docker run --rm \ docker run --rm \
-v "${CI_BUILD_DIR}/deploy:/deploy" \ -v "${CI_BUILD_DIR}/deploy:/deploy" \
-v "${CI_BUILD_DIR}:/source:ro" \ -v "${CI_BUILD_DIR}:/source:ro" \
hyperionproject/hyperion-ci:$DOCKER_TAG \ $REGISTRY_URL:$DOCKER_TAG \
/bin/bash -c "mkdir hyperion && cp -r source/. /hyperion && /bin/bash -c "mkdir hyperion && cp -r source/. /hyperion &&
cd /hyperion && mkdir build && cd build && cd /hyperion && mkdir build && cd build &&
cmake -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ../ || exit 2 && cmake -DPLATFORM=${PLATFORM} -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ../ || exit 2 &&

View File

@ -38,12 +38,4 @@ if [[ $CI_NAME == 'osx' || $CI_NAME == 'darwin' ]]; then
brew update brew update
dependencies=("qt5" "python" "libusb" "cmake" "doxygen") dependencies=("qt5" "python" "libusb" "cmake" "doxygen")
installAndUpgrade "${dependencies[@]}" installAndUpgrade "${dependencies[@]}"
# github actions uname -> windows-2019 -> mingw64_nt-10.0-17763
# TODO: Azure uname windows?
elif [[ $CI_NAME == *"mingw64_nt"* ]]; then
echo "Yes, we are Windows: $CI_NAME"
# Windows has no dependency manager
elif [[ $CI_NAME != 'linux' ]]; then
echo "Unsupported platform: $CI_NAME"
exit 5
fi fi

View File

@ -15,18 +15,18 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
dockerTag: [ amd64, armv6hf, armv7hf, aarch64 ] dockerImage: [ x86_64, armv6l, armv7l, aarch64 ]
include: include:
- dockerTag: amd64 - dockerImage: x86_64
dockerName: Debian Stretch (AMD64) dockerName: Debian Stretch (x86_64)
platform: x11 platform: x11
- dockerTag: armv6hf - dockerImage: armv6l
dockerName: Debian Stretch (Raspberry Pi v1 & ZERO) dockerName: Debian Stretch (Raspberry Pi v1 & ZERO)
platform: rpi platform: rpi
- dockerTag: armv7hf - dockerImage: armv7l
dockerName: Debian Stretch (Raspberry Pi 2 & 3) dockerName: Debian Stretch (Raspberry Pi 2 & 3)
platform: rpi platform: rpi
- dockerTag: aarch64 - dockerImage: aarch64
dockerName: Debian Stretch (Generic AARCH64) dockerName: Debian Stretch (Generic AARCH64)
platform: amlogic platform: amlogic
@ -46,7 +46,8 @@ jobs:
# Build packages # Build packages
- name: Build packages - name: Build packages
env: env:
DOCKER_TAG: ${{ matrix.dockerTag }} DOCKER_IMAGE: ${{ matrix.dockerImage }}
DOCKER_TAG: stretch
DOCKER_NAME: ${{ matrix.dockerName }} DOCKER_NAME: ${{ matrix.dockerName }}
PLATFORM: ${{ matrix.platform }} PLATFORM: ${{ matrix.platform }}
shell: bash shell: bash
@ -56,17 +57,17 @@ jobs:
- name: Collecting deployable artifacts - name: Collecting deployable artifacts
shell: bash shell: bash
run: | run: |
mkdir -p ${{ matrix.dockerTag }} mkdir -p ${{ matrix.dockerImage }}
mv deploy/*.tar.gz ${{ matrix.dockerTag }} mv deploy/*.tar.gz ${{ matrix.dockerImage }}
if: matrix.dockerTag != 'aarch64' if: matrix.dockerImage != 'aarch64'
# Upload artifacts # Upload artifacts
- name: Upload artifacts - name: Upload artifacts
uses: actions/upload-artifact@v1 uses: actions/upload-artifact@v1
with: with:
name: ${{ matrix.dockerTag }} name: ${{ matrix.dockerImage }}
path: ${{ matrix.dockerTag }} path: ${{ matrix.dockerImage }}
if: matrix.dockerTag != 'aarch64' if: matrix.dockerImage != 'aarch64'
###################### ######################
###### macOS ######### ###### macOS #########

View File

@ -18,18 +18,18 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
dockerTag: [ amd64, armv6hf, armv7hf, aarch64 ] dockerImage: [ x86_64, armv6l, armv7l, aarch64 ]
include: include:
- dockerTag: amd64 - dockerImage: x86_64
dockerName: Debian Stretch (AMD64) dockerName: Debian Stretch (x86_64)
platform: x11 platform: x11
- dockerTag: armv6hf - dockerImage: armv6l
dockerName: Debian Stretch (Raspberry Pi v1 & ZERO) dockerName: Debian Stretch (Raspberry Pi v1 & ZERO)
platform: rpi platform: rpi
- dockerTag: armv7hf - dockerImage: armv7l
dockerName: Debian Stretch (Raspberry Pi 2 & 3) dockerName: Debian Stretch (Raspberry Pi 2 & 3)
platform: rpi platform: rpi
- dockerTag: aarch64 - dockerImage: aarch64
dockerName: Debian Stretch (Generic AARCH64) dockerName: Debian Stretch (Generic AARCH64)
platform: amlogic platform: amlogic
@ -41,7 +41,8 @@ jobs:
# build process # build process
- name: Build packages - name: Build packages
env: env:
DOCKER_TAG: ${{ matrix.dockerTag }} DOCKER_IMAGE: ${{ matrix.dockerImage }}
DOCKER_TAG: stretch
DOCKER_NAME: ${{ matrix.dockerName }} DOCKER_NAME: ${{ matrix.dockerName }}
PLATFORM: ${{ matrix.platform }} PLATFORM: ${{ matrix.platform }}
shell: bash shell: bash

View File

@ -2,44 +2,44 @@
If you are using [Docker](https://www.docker.com/), you can compile Hyperion inside a docker container. This keeps your system clean and with a simple script it's easy to use. Supported is also cross compiling for Raspberry Pi (Debian Stretch or higher). To compile Hyperion just execute one of the following commands. If you are using [Docker](https://www.docker.com/), you can compile Hyperion inside a docker container. This keeps your system clean and with a simple script it's easy to use. Supported is also cross compiling for Raspberry Pi (Debian Stretch or higher). To compile Hyperion just execute one of the following commands.
The compiled binaries and packages will be available at the deploy folder next to the script.<br/> The compiled binaries and packages will be available at the deploy folder next to the script.<br/>
Note: call the script with `./docker-compile.sh -h` for more options Note: call the script with `./docker-compile.sh -h` for more options.
## Native compiling on Raspberry Pi ## Native compilation on Raspberry Pi for:
**Raspbian Stretch** **Raspbian Stretch**
``` ```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t rpi-raspbian-stretch wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i rpi-raspbian
``` ```
**Raspbian Buster** **Raspbian Buster**
``` ```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t rpi-raspbian-buster wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i rpi-raspbian -t buster
``` ```
## Cross compiling on X64_86 for: ## Cross compilation on x86_64 for:
**X64:** **x86_64 (Debian Stretch):**
``` ```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i x86_64
``` ```
**i386:** **x86_64 (Debian Buster):**
``` ```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t i386 wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i x86_64 -t buster
``` ```
**Raspberry Pi v1 & ZERO (Raspbian Stretch)** **Raspberry Pi v1 & ZERO (Debian Stretch)**
``` ```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t armv6hf wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i armv6l
``` ```
**Raspberry Pi 2 & 3 (Raspbian Stretch)** **Raspberry Pi v1 & ZERO (Debian Buster)**
``` ```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t armv7hf wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i armv6l -t buster
``` ```
**Raspberry Pi v1 & ZERO (Raspbian Buster)** **Raspberry Pi 2/3/4 (Debian Stretch)**
``` ```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t armv6hf-buster wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i armv7l
``` ```
**Raspberry Pi 2 & 3 (Raspbian Buster** **Raspberry Pi 2/3/4 (Debian Buster)**
``` ```
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -t armv7hf-buster wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i armv7l -t buster
``` ```
# The usual way # The usual way
@ -114,7 +114,7 @@ mkdir build
cd build cd build
cmake -DCMAKE_BUILD_TYPE=Release .. cmake -DCMAKE_BUILD_TYPE=Release ..
make -j $(nproc) make -j $(nproc)
if this get stucked and dmseg says out of memory try: if this get stucked and dmesg says out of memory try:
make -j 2 make -j 2
# optional: install into your system # optional: install into your system
sudo make install/strip sudo make install/strip

View File

@ -3,10 +3,14 @@
DOCKER="docker" DOCKER="docker"
# Git repo url of Hyperion # Git repo url of Hyperion
GIT_REPO_URL="https://github.com/hyperion-project/hyperion.ng.git" GIT_REPO_URL="https://github.com/hyperion-project/hyperion.ng.git"
# GitHub Container Registry url
REGISTRY_URL="ghcr.io/hyperion-project"
# cmake build type # cmake build type
BUILD_TYPE="Release" BUILD_TYPE="Release"
# the image tag at hyperionproject/hyperion-ci # the docker image at GitHub Container Registry
BUILD_TARGET="amd64" BUILD_IMAGE="x86_64"
# the docker tag at GitHub Container Registry
BUILD_TAG="stretch"
# build packages (.deb .zip ...) # build packages (.deb .zip ...)
BUILD_PACKAGES=true BUILD_PACKAGES=true
# packages string inserted to cmake cmd # packages string inserted to cmake cmd
@ -42,8 +46,8 @@ function printHelp {
echo "######################################################## echo "########################################################
## A script to compile Hyperion inside a docker container ## A script to compile Hyperion inside a docker container
## Requires installed Docker: https://www.docker.com/ ## Requires installed Docker: https://www.docker.com/
## Without arguments it will compile Hyperion for Debain Stretch (x64) or higher. ## Without arguments it will compile Hyperion for Debian Stretch (x86_64).
## Supports Raspberry Pi (armv6hf, armv7hf) cross compilation (Debian Stretch/Buster) and native compilation (Raspbian Stretch/Buster) ## Supports Raspberry Pi (armv6l, armv7l) cross compilation (Debian Stretch/Buster) and native compilation (Raspbian Stretch/Buster)
## ##
## Homepage: https://www.hyperion-project.org ## Homepage: https://www.hyperion-project.org
## Forum: https://forum.hyperion-project.org ## Forum: https://forum.hyperion-project.org
@ -51,17 +55,19 @@ echo "########################################################
# These are possible arguments to modify the script behaviour with their default values # These are possible arguments to modify the script behaviour with their default values
# #
# docker-compile.sh -h # Show this help message # docker-compile.sh -h # Show this help message
# docker-compile.sh -t amd64 # The docker tag, one of amd64 | i386 | armv6hf | armv7hf | armv6hf-buster | armv7hf-buster | rpi-raspbian-stretch | rpi-raspbian-buster # docker-compile.sh -i x86_64 # The docker image, one of x86_64 | armv6l | armv7l | rpi-raspbian
# docker-compile.sh -t stretch # The docker tag, stretch or buster
# docker-compile.sh -b Release # cmake Release or Debug build # docker-compile.sh -b Release # cmake Release or Debug build
# docker-compile.sh -p true # If true build packages with CPack # docker-compile.sh -p true # If true build packages with CPack
# More informations to docker tags at: https://hub.docker.com/r/hyperionproject/hyperion-ci/" # More informations to docker tags at: https://github.com/Hyperion-Project/hyperion.docker-ci"
} }
while getopts t:b:p:h option while getopts i:t:b:p:h option
do do
case "${option}" case "${option}"
in in
t) BUILD_TARGET=${OPTARG};; i) BUILD_IMAGE=${OPTARG};;
t) BUILD_TAG=${OPTARG};;
b) BUILD_TYPE=${OPTARG};; b) BUILD_TYPE=${OPTARG};;
p) BUILD_PACKAGES=${OPTARG};; p) BUILD_PACKAGES=${OPTARG};;
h) printHelp; exit 0;; h) printHelp; exit 0;;
@ -73,7 +79,7 @@ if [ $BUILD_PACKAGES == "true" ]; then
PACKAGES="package" PACKAGES="package"
fi fi
echo "---> Initialize with BUILD_TARGET=${BUILD_TARGET}, BUILD_TYPE=${BUILD_TYPE}, BUILD_PACKAGES=${BUILD_PACKAGES}" echo "---> Initialize with IMAGE:TAG=${BUILD_IMAGE}:${BUILD_TAG}, BUILD_TYPE=${BUILD_TYPE}, BUILD_PACKAGES=${BUILD_PACKAGES}"
# cleanup deploy folder, create folder for ownership # cleanup deploy folder, create folder for ownership
sudo rm -fr $SCRIPT_PATH/deploy >/dev/null 2>&1 sudo rm -fr $SCRIPT_PATH/deploy >/dev/null 2>&1
@ -84,18 +90,19 @@ echo "---> Downloading Hyperion source code from ${GIT_REPO_URL}"
sudo rm -fr $SCRIPT_PATH/hyperion >/dev/null 2>&1 sudo rm -fr $SCRIPT_PATH/hyperion >/dev/null 2>&1
git clone --recursive --depth 1 -q $GIT_REPO_URL $SCRIPT_PATH/hyperion || { echo "---> Failed to download Hyperion source code! Abort"; exit 1; } git clone --recursive --depth 1 -q $GIT_REPO_URL $SCRIPT_PATH/hyperion || { echo "---> Failed to download Hyperion source code! Abort"; exit 1; }
# start compilation # Steps:
# Update lokal docker image
# Remove container after stop # Remove container after stop
# Mount /deploy to /deploy # Mount /deploy to /deploy
# Mount source dir to /source # Mount source dir to /source
# Target docker image # Use target docker image
# execute inside container all commands on bash # execute inside container all commands on bash
echo "---> Startup docker..." echo "---> Startup docker..."
$DOCKER pull hyperionproject/hyperion-ci:$BUILD_TARGET
$DOCKER run --rm \ $DOCKER run --rm \
-v "${SCRIPT_PATH}/deploy:/deploy" \ -v "${SCRIPT_PATH}/deploy:/deploy" \
-v "${SCRIPT_PATH}/hyperion:/source:ro" \ -v "${SCRIPT_PATH}/hyperion:/source:ro" \
hyperionproject/hyperion-ci:$BUILD_TARGET \ $REGISTRY_URL/$BUILD_IMAGE:$BUILD_TAG \
/bin/bash -c "mkdir hyperion && cp -r /source/. /hyperion && /bin/bash -c "mkdir hyperion && cp -r /source/. /hyperion &&
cd /hyperion && mkdir build && cd build && cd /hyperion && mkdir build && cd build &&
cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} .. || exit 2 && cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE} .. || exit 2 &&