Skip to content
This repository was archived by the owner on May 23, 2021. It is now read-only.

ARM Targeting support + Move to GitHub Actions #23

Closed
wants to merge 18 commits into from
Closed
Show file tree
Hide file tree
Changes from all 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
84 changes: 84 additions & 0 deletions .github/workflows/build-commit-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Build Docker images
on:
push:
branches:
- 'sr229/docker-xbuild'
- 'master'

jobs:
build_arm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master

- name: Install Docker Edge Build (for Xbuild runs)
run: wget -qO - https://test.docker.com | sh

- name: Install buildx
run: |
mkdir -p $HOME/.docker/cli-plugins/
touch $HOME/.docker/cli-plugins/docker-buildx
wget -qO - https://github.com/docker/buildx/releases/download/v0.3.1/buildx-v0.3.1.linux-amd64 > $HOME/.docker/cli-plugins/docker-buildx
chmod a+x $HOME/.docker/cli-plugins/docker-buildx

- name: Setup Builder instance
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name cdr-build
docker buildx use cdr-build
docker buildx inspect --bootstrap
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

- name: Build Images - ARM64
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/arm64 -t codercom/nbin-arm64:latest -f arm.dockerfile .

- name: Build Images - ARM
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/arm -t codercom/nbin-arm:latest -f arm.dockerfile .

- name: Build Images - ARM64 (Alpine)
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/arm64 -t codercom/nbin-alpine-arm64:latest -f alpine.dockerfile .

- name: Build Images - ARM (Alpine)
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/arm -t codercom/nbin-alpine-arm:latest -f alpine.dockerfile .

build_amd64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master

- name: Install Docker Edge Build (for Xbuild runs)
run: wget -qO - https://test.docker.com | sh

- name: Install buildx
run: |
mkdir -p $HOME/.docker/cli-plugins/
touch $HOME/.docker/cli-plugins/docker-buildx
wget -qO - https://github.com/docker/buildx/releases/download/v0.3.1/buildx-v0.3.1.linux-amd64 > $HOME/.docker/cli-plugins/docker-buildx
chmod a+x $HOME/.docker/cli-plugins/docker-buildx

- name: Setup Builder instance
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name cdr-build
docker buildx use cdr-build
docker buildx inspect --bootstrap

- name: Build Images - AMD64 (CentOS)
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/amd64 -t codercom/nbin-centos:latest -f centos.dockerfile .

- name: Build Images - AMD64 (Alpine)
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/amd64 -t codercom/nbin-alpine:latest -f alpine.dockerfile .
35 changes: 35 additions & 0 deletions .github/workflows/build-commit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Build
on:
push:
branches:
- 'sr229/docker-xbuild'
- 'master'

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master

- name: Install Docker Edge Build (for Xbuild runs)
run: wget -qO - https://test.docker.com | sh


- name: Install buildx
run: |
mkdir -p $HOME/.docker/cli-plugins/
touch $HOME/.docker/cli-plugins/docker-buildx
wget -qO - https://github.com/docker/buildx/releases/download/v0.3.1/buildx-v0.3.1.linux-amd64 > $HOME/.docker/cli-plugins/docker-buildx
chmod a+x $HOME/.docker/cli-plugins/docker-buildx

- name: Setup Builder instance
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name cdr-build
docker buildx use cdr-build
docker buildx inspect --bootstrap

- name: Build for ARM
run: scripts/ci.bash

103 changes: 103 additions & 0 deletions .github/workflows/release-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: Build Docker images
on:
- release

jobs:
build_arm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master

- name: Install Docker Edge Build (for Xbuild runs)
run: wget -qO - https://test.docker.com | sh

- name: Install buildx
run: |
mkdir -p $HOME/.docker/cli-plugins/
touch $HOME/.docker/cli-plugins/docker-buildx
wget -qO - https://github.com/docker/buildx/releases/download/v0.3.1/buildx-v0.3.1.linux-amd64 > $HOME/.docker/cli-plugins/docker-buildx
chmod a+x $HOME/.docker/cli-plugins/docker-buildx

- name: Setup Builder instance
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name cdr-build
docker buildx use cdr-build
docker buildx inspect --bootstrap
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

- name: Build Images - ARM64
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/arm64 -t codercom/nbin-arm:arm64 -f arm.dockerfile .

- name: Build Images - ARM
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/arm -t codercom/nbin-arm:arm -f arm.dockerfile .

- name: Build Images - ARM64 (Alpine)
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/arm64 -t codercom/nbin-alpine:arm64 -f alpine.dockerfile .

- name: Build Images - ARM (Alpine)
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/arm -t codercom/nbin-alpine:arm -f alpine.dockerfile .

- uses: azure/docker-login@master
with:
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}

- name: "Push to Registry"
run: |
docker push codercom/nbin-arm:latest
docker push codercom/nbin-alpine-arm:latest
docker push codercom/nbin-arm64:latest
docker push codercom/nbin-alpine-arm64:latest

build_amd64:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master

- name: Install Docker Edge Build (for Xbuild runs)
run: wget -qO - https://test.docker.com | sh

- name: Install buildx
run: |
mkdir -p $HOME/.docker/cli-plugins/
touch $HOME/.docker/cli-plugins/docker-buildx
wget -qO - https://github.com/docker/buildx/releases/download/v0.3.1/buildx-v0.3.1.linux-amd64 > $HOME/.docker/cli-plugins/docker-buildx
chmod a+x $HOME/.docker/cli-plugins/docker-buildx

- name: Setup Builder instance
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx create --name cdr-build
docker buildx use cdr-build
docker buildx inspect --bootstrap

- name: Build Images - AMD64 (CentOS)
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/amd64 -t codercom/nbin-centos:amd64 -f centos.dockerfile .

- name: Build Images - AMD64 (Alpine)
run: |
export DOCKER_CLI_EXPERMIENTAL=enabled
docker buildx build --platform linux/amd64 -t codercom/nbin-alpine:amd64 -f alpine.dockerfile .

- uses: azure/docker-login@master
with:
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}

- name: "Push to Registry"
run: |
docker push codercom/nbin-centos:amd64
docker push codercom/nbin-alpine:amd64
7 changes: 0 additions & 7 deletions aarch64-alpine.dockerfile

This file was deleted.

7 changes: 0 additions & 7 deletions aarch64.dockerfile

This file was deleted.

6 changes: 6 additions & 0 deletions arm.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Debian Target - only for ARM builds.
# DO NOT USE THIS AS A TARGET FOR x86!
FROM ubuntu:18.04

RUN apt update && \
apt install -y build-essential g++ gcc linux-headers-generic
7 changes: 0 additions & 7 deletions armhf-alpine.dockerfile

This file was deleted.

7 changes: 0 additions & 7 deletions armhf.dockerfile

This file was deleted.

2 changes: 1 addition & 1 deletion centos.dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ FROM centos:7

RUN yum install -y centos-release-scl
RUN yum-config-manager --enable rhel-server-rhscl-7-rpms
RUN yum install -y devtoolset-6
RUN yum install -y devtoolset-7
RUN yum install -y gcc-c++
RUN rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/c/ccache-3.3.4-1.el7.x86_64.rpm

Expand Down
56 changes: 28 additions & 28 deletions scripts/docker_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,39 +12,39 @@ source ./vars.sh
# $BINARY_NAME
function docker_build() {
case "$IMAGE" in
*armv7hf* | armv7hf | aarch64 | *aarch64*)
containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE)
docker start $containerID
docker exec $containerID mkdir /src
*arm | *arm64)
containerID=$(docker buildx create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE)
# HACK: We can leverage the same VMs we use to make x86 builds but in expense of using QEMU
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker start $containerID
docker exec $containerID mkdir /src

function exec() {
docker exec $containerID bash -c "$@"
}
function exec() {
docker exec $containerID bash -c "$@"
}

docker cp ../. $containerID:/src
exec "cross-build-start"
exec "$PREBUILD_COMMAND/src/lib/node/build.sh"
exec "cd /src && npm rebuild"
exec "cd /src && npm test"
exec "cross-build-end"
docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME
;;
docker cp ../. $containerID:/src
exec "$PREBUILD_COMMAND/src/lib/node/build.sh"
exec "cd /src && npm rebuild"
exec "cd /src && npm test"
docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME
;;
*)
containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE)
docker start $containerID
docker exec $containerID mkdir /src
containerID=$(docker create -it -v $HOME/$CACHE_DIR:/ccache $IMAGE)
docker start $containerID
docker exec $containerID mkdir /src

function exec() {
docker exec $containerID bash -c "$@"
}
function exec() {
docker exec $containerID bash -c "$@"
}

docker cp ../. $containerID:/src
exec "$PREBUILD_COMMAND/src/lib/node/build.sh"
exec "cd /src && npm rebuild"
exec "cd /src && npm test"
docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME
;;
esac
docker cp ../. $containerID:/src
exec "$PREBUILD_COMMAND/src/lib/node/build.sh"
exec "cd /src && npm rebuild"
exec "cd /src && npm test"
docker cp $containerID:/src/lib/node/out/Release/node ../build/$PACKAGE_VERSION/$BINARY_NAME
;;
esac
}

if [[ "$TARGET" == "alpine" ]]; then
Expand Down