diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index bc57238cfe..2f547701af 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -31,15 +31,10 @@ jobs:
- name: Dockerhub login
run: |
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
- - uses: actions-rs/toolchain@v1
- with:
- toolchain: stable
- name: Cross build lighthouse binary
- uses: actions-rs/cargo@v1
- with:
- use-cross: true
- command: build
- args: --release --manifest-path lighthouse/Cargo.toml --target aarch64-unknown-linux-gnu --features portable
+ run: |
+ cargo install cross
+ make build-aarch64-portable
- name: Move cross-built ARM binary into Docker scope
run: |
mkdir ./bin;
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 99c93be346..e2d366d904 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -6,7 +6,10 @@ on:
- v*
env:
+ DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
+ DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
REPO_NAME: sigp/lighthouse
+ IMAGE_NAME: sigp/lighthouse
jobs:
extract-version:
@@ -18,6 +21,71 @@ jobs:
outputs:
VERSION: ${{ steps.extract_version.outputs.VERSION }}
+ build-docker-arm64:
+ runs-on: ubuntu-18.04
+ needs: [extract-version]
+ # We need to enable experimental docker features in order to use `docker buildx`
+ env:
+ DOCKER_CLI_EXPERIMENTAL: enabled
+ VERSION: ${{ needs.extract-version.outputs.VERSION }}
+ steps:
+ - uses: actions/checkout@v2
+ - name: Dockerhub login
+ run: |
+ echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
+ - name: Cross build lighthouse binary
+ run: |
+ cargo install cross
+ make build-aarch64-portable
+ - name: Move cross-built ARM binary into Docker scope
+ run: |
+ mkdir ./bin;
+ mv ./target/aarch64-unknown-linux-gnu/release/lighthouse ./bin;
+ # Install dependencies for emulation. Have to create a new builder to pick up emulation support.
+ - name: Build ARM64 dockerfile (with push)
+ run: |
+ docker run --privileged --rm tonistiigi/binfmt --install arm64
+ docker buildx create --use --name cross-builder
+ docker buildx build \
+ --platform=linux/arm64 \
+ --file ./Dockerfile.cross . \
+ --tag ${IMAGE_NAME}:${{ env.VERSION }}-arm64 \
+ --push
+ build-docker-amd64:
+ runs-on: ubuntu-18.04
+ needs: [extract-version]
+ env:
+ DOCKER_CLI_EXPERIMENTAL: enabled
+ VERSION: ${{ needs.extract-version.outputs.VERSION }}
+ steps:
+ - uses: actions/checkout@v2
+ - name: Dockerhub login
+ run: |
+ echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
+ - name: Build AMD64 dockerfile (with push)
+ run: |
+ docker build \
+ --build-arg PORTABLE=true \
+ --tag ${IMAGE_NAME}:${{ env.VERSION }}-amd64 \
+ --file ./Dockerfile .
+ docker push ${IMAGE_NAME}:${{ env.VERSION }}-amd64
+ build-docker-multiarch:
+ runs-on: ubuntu-18.04
+ needs: [build-docker-arm64, build-docker-amd64, extract-version]
+ # We need to enable experimental docker features in order to use `docker manifest`
+ env:
+ DOCKER_CLI_EXPERIMENTAL: enabled
+ VERSION: ${{ needs.extract-version.outputs.VERSION }}
+ steps:
+ - name: Dockerhub login
+ run: |
+ echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
+ - name: Create and push multiarch manifest
+ run: |
+ docker manifest create ${IMAGE_NAME}:${{ env.VERSION }} \
+ --amend ${IMAGE_NAME}:${{ env.VERSION }}-arm64 \
+ --amend ${IMAGE_NAME}:${{ env.VERSION }}-amd64;
+ docker manifest push ${IMAGE_NAME}:${{ env.VERSION }}
build:
name: Build Release
strategy:
@@ -190,7 +258,7 @@ jobs:
|
| aarch64 | [lighthouse-${{ env.VERSION }}-aarch64-unknown-linux-gnu-portable.tar.gz](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-aarch64-unknown-linux-gnu-portable.tar.gz) | [PGP Signature](https://github.com/${{ env.REPO_NAME }}/releases/download/${{ env.VERSION }}/lighthouse-${{ env.VERSION }}-aarch64-unknown-linux-gnu-portable.tar.gz.asc) |
| | | | |
| **System** | **Option** | - | **Resource** |
- |
| Docker | - | [sigp/lighthouse](https://hub.docker.com/r/sigp/lighthouse) |
+ |
| Docker | [${{ env.VERSION }}](https://hub.docker.com/r/${{ env.IMAGE_NAME }}/tags?page=1&ordering=last_updated&name=${{ env.VERSION }}) | [${{ env.IMAGE_NAME }}](https://hub.docker.com/r/${{ env.IMAGE_NAME }}) |
ENDBODY
)
assets=()