Skip to content
This repository was archived by the owner on Jan 7, 2026. It is now read-only.

Commit d2f6f05

Browse files
authored
Implement multiarch (#31)
* Build multi-arch amd64, arm64, armv6, armv7 with buildx * Uses mariadb 10.4, as 10.3 was failing with arm64 tests * Update README.md * Fixes #30
1 parent b41e6c5 commit d2f6f05

3 files changed

Lines changed: 116 additions & 66 deletions

File tree

.travis.yml

Lines changed: 83 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,94 @@
1-
os:
2-
- linux
3-
1+
os: linux
42
dist: xenial
5-
6-
sudo: required
3+
language: generic
74

85
env:
96
global:
107
- NAME=lychee-laravel
11-
- REPO=lycheeorg/lychee-laravel
12-
13-
matrix:
8+
- DOCKER_REPO=lycheeorg/lychee-laravel
9+
jobs:
1410
- secure: "FXXbM8yDCuf9h17rAyO63XCgI2wJ5EKROY3u1MNxudz54sz3VloZ/SNnVqzdjzYPX9LXfCxVpaDhNLmQtNbqYXg4WBq+5ZuuS0efxFgVaBK0HK6lVoS3/BsJR/U1cglag0Apn2wjFgL3j7d2ZREeG7WIEuDHW5QWcVWhFGWvcAG9JRChFostdde1wbZ6SLTTW2SZFypoRThIdh5PCOnX1oCCmfzeTiCy74uTaiOkkOWsseWeDBy09UrDsFDKd8WX9R7E7g9arv4f9tjzmk1ikQM6Bnfa4YONsY9NjiKFS7/1qfXqg6Z5WfuNr+tW90KrXlk3quCPTn9PEThfqJkgS3BcsLwdhM0OUPx0BXml3RFzYl7jrtj6Wg1vSh6JJIrCh6YrBvg62qRgBs8VPI7QJ60VC56QjhZCiH1YjkjKF0+vVSygC6oJ8wsSciFGu3Cfi4ix6K8iCN90URr6YGl7WOANgfzBTwil/w1Q3IKmzNj6K2UWD+Dm92k/7dkJ2/N5gZ8LUmqhxs5nRzLBZvm77xp/ykRtadP5MHC6HTVHBM6f4tfe6jLWWSi4D8GzQX5sN6Xd2VhvifFsxQeexobhxA918ZjxvUgXHP8mng/WUYccr8DJQmom6uyXpqNpVXGRbjW4CVmgLGBZ05+lgBEmqkyEiXggNRcZipi4E9FICys="
1511

16-
language: php
17-
18-
php:
19-
- '7.2'
20-
21-
services:
22-
- docker
23-
24-
addons:
25-
mariadb: '10.3'
26-
27-
before_install:
28-
- mysql -e 'create database homestead_test;'
29-
- chmod +x deploy.sh
30-
31-
install:
32-
- docker build --pull -t $REPO':'$TRAVIS_BUILD_NUMBER .
33-
- docker run -d --name=$NAME -e PUID=1000 -e PGID=1000 -e PHP_TZ=America/New_York
34-
-e DB_CONNECTION=mysql -e DB_HOST=mariadb -e DB_PORT=3306 -e DB_DATABASE=homestead_test
35-
-e DB_USERNAME=root -e DB_PASSWORD= -p 127.0.0.1:80:80 $REPO':'$TRAVIS_BUILD_NUMBER
12+
jobs:
13+
include:
3614

37-
before_script:
15+
# Build and push to staging
16+
- stage: build
17+
before_install:
18+
# Setup multi-arch builds
19+
- curl -fsSL https://get.docker.com | sh
20+
- echo '{"experimental":"enabled"}' | sudo tee /etc/docker/daemon.json
21+
- mkdir -p $HOME/.docker
22+
- echo '{"experimental":"enabled"}' | sudo tee $HOME/.docker/config.json
23+
- sudo service docker start
24+
install:
25+
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
26+
- docker buildx create --name xbuilder --use
27+
script:
28+
- docker login -u $REGISTRY_USER -p $REGISTRY_PASS
29+
- echo "Building mulit arch and pushing testing"
30+
- docker buildx build
31+
--progress plain
32+
--platform linux/arm/v7,linux/arm/v6,linux/arm64,linux/amd64
33+
-t $DOCKER_REPO':testing'
34+
--push
35+
.
3836

39-
script:
40-
- docker ps -a | awk '{print $NF}' | grep -w $NAME | cat
37+
# Pull images and test them
38+
- stage: "Test amd64"
39+
arch: amd64
40+
addons:
41+
mariadb: '10.4'
42+
services: docker
43+
before_install:
44+
- sudo mysql -e 'create database homestead_test;'
45+
install:
46+
- docker run -d --name=$NAME -e PUID=1000 -e PGID=1000 -e PHP_TZ=America/New_York
47+
-e DB_CONNECTION=mysql -e DB_HOST=mariadb -e DB_PORT=3306 -e DB_DATABASE=homestead_test
48+
-e DB_USERNAME=root -e DB_PASSWORD= -p 127.0.0.1:80:80 $DOCKER_REPO':testing'
49+
script:
50+
- docker ps -a | awk '{print $NF}' | grep -w $NAME | cat
51+
after_script:
52+
- docker stop $NAME && docker rm $NAME
4153

42-
# after_success:
43-
# - ./deploy.sh
44-
deploy:
45-
- provider: script
46-
script: ./deploy.sh
47-
skip_cleanup: true
48-
on:
49-
branch: master
50-
- provider: script
51-
script: ./deploy.sh
52-
skip_cleanup: true
53-
on:
54-
tags: true
55-
- provider: script
56-
script: ./deploy.sh
57-
skip_cleanup: true
58-
on:
59-
all_branches: true
54+
# Pull images and test them
55+
- stage: "Test arm64"
56+
arch: arm64
57+
addons:
58+
mariadb: '10.4'
59+
services: docker
60+
before_install:
61+
- sudo mysql -e 'create database homestead_test;'
62+
install:
63+
- docker run -d --name=$NAME -e PUID=1000 -e PGID=1000 -e PHP_TZ=America/New_York
64+
-e DB_CONNECTION=mysql -e DB_HOST=mariadb -e DB_PORT=3306 -e DB_DATABASE=homestead_test
65+
-e DB_USERNAME=root -e DB_PASSWORD= -p 127.0.0.1:80:80 $DOCKER_REPO':testing'
66+
script:
67+
- docker ps -a | awk '{print $NF}' | grep -w $NAME | cat
68+
after_script:
69+
- docker stop $NAME && docker rm $NAME
6070

61-
after_script:
62-
- docker stop $NAME && docker rm $NAME
71+
# Finally Push tags and master
72+
- stage: deploy
73+
before_install:
74+
- curl -fsSL https://get.docker.com | sh
75+
- echo '{"experimental":"enabled"}' | sudo tee /etc/docker/daemon.json
76+
- mkdir -p $HOME/.docker
77+
- echo '{"experimental":"enabled"}' | sudo tee $HOME/.docker/config.json
78+
- sudo service docker start
79+
install:
80+
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
81+
- docker buildx create --name xbuilder --use
82+
deploy:
83+
- provider: script
84+
on:
85+
branch: master
86+
script: ./deploy.sh
87+
- provider: script
88+
on:
89+
tags: true
90+
script: ./deploy.sh
91+
- provider: script
92+
on:
93+
all_branches: true
94+
script: ./deploy.sh

README.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
[![Build Status](https://img.shields.io/travis/com/LycheeOrg/Lychee-Laravel-Docker/master.svg?style=flat)](https://travis-ci.com/LycheeOrg/Lychee-Laravel-Docker)
2-
[![Docker Pulls](https://img.shields.io/docker/pulls/lycheeorg/lychee-laravel.svg?style=flat)](https://hub.docker.com/r/lycheeorg/lychee-laravel)
3-
[![Release](https://img.shields.io/github/release/LycheeOrg/Lychee-Laravel-Docker.svg?style=flat)](https://github.com/LycheeOrg/Lychee-Laravel-Docker/releases)
4-
![Last Commit](https://img.shields.io/github/last-commit/LycheeOrg/Lychee-Laravel-Docker.svg?style=flat)
1+
[![Build Status][build-status-shield]](https://travis-ci.com/LycheeOrg/Lychee-Laravel-Docker)
2+
[![Docker Pulls][docker-pulls-shield]](https://hub.docker.com/r/lycheeorg/lychee-laravel)
3+
[![Release][release-shield]](https://github.com/LycheeOrg/Lychee-Laravel-Docker/releases)
4+
![Last Commit][last-commit-shield]
5+
6+
![Supports amd64 Architecture][amd64-shield]
7+
![Supports aarch64 Architecture][aarch64-shield]
8+
![Supports armhf Architecture][armhf-shield]
9+
![Supports armv7 Architecture][armv7-shield]
510

611
## Notice: Dockerhub repository has been migrated to [lycheeorg/lychee-laravel](https://hub.docker.com/r/lycheeorg/lychee-laravel)
712
**Make sure you update your docker-compose files accordingly**
@@ -101,3 +106,11 @@ Instead, we recommend to use the `PHP_VALUE` directive of PHP-FPM to override sp
101106
3. Add a new line and set your new parameter
102107
4. Mount your new file to `/etc/nginx/nginx.conf`
103108

109+
[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-success.svg?style=flat
110+
[amd64-shield]: https://img.shields.io/badge/amd64-yes-success.svg?style=flat
111+
[armhf-shield]: https://img.shields.io/badge/armhf-yes-success.svg?style=flat
112+
[armv7-shield]: https://img.shields.io/badge/armv7-yes-success.svg?style=flat
113+
[build-status-shield]: https://img.shields.io/travis/com/LycheeOrg/Lychee-Laravel-Docker/master.svg?style=flat
114+
[docker-pulls-shield]: https://img.shields.io/docker/pulls/lycheeorg/lychee-laravel.svg?style=flat
115+
[last-commit-shield]: https://img.shields.io/github/last-commit/LycheeOrg/Lychee-Laravel-Docker.svg?style=flat
116+
[release-shield]: https://img.shields.io/github/release/LycheeOrg/Lychee-Laravel-Docker.svg?style=flat

deploy.sh

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,26 @@ docker login -u $REGISTRY_USER -p $REGISTRY_PASS
1010

1111
# if its a tagged version
1212
if [[ -n "$TRAVIS_TAG" ]]; then
13-
echo "Pushing tagged version and latest"
14-
docker tag $REPO':'$TRAVIS_BUILD_NUMBER $REPO':latest'
15-
docker tag $REPO':'$TRAVIS_BUILD_NUMBER $REPO':'$TRAVIS_TAG
16-
docker push $REPO':'$TRAVIS_TAG
17-
docker push $REPO':latest'
13+
echo "Building mulit arch and pushing tagged version and latest"
14+
docker buildx build \
15+
--progress plain \
16+
--platform linux/arm/v7,linux/arm/v6,linux/arm64,linux/amd64 \
17+
-t $DOCKER_REPO':latest' \
18+
-t $DOCKER_REPO':'$TRAVIS_TAG \
19+
--push \
20+
.
1821

1922
# if its a merged pr or nightly
2023
elif [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]]; then
21-
echo "Pushing dev"
22-
docker tag $REPO':'$TRAVIS_BUILD_NUMBER $REPO':dev'
23-
docker push $REPO':dev'
24+
echo "Building mulit arch and pushing dev"
25+
docker buildx build \
26+
--progress plain \
27+
--platform linux/arm/v7,linux/arm/v6,linux/arm64,linux/amd64 \
28+
-t $DOCKER_REPO':dev' \
29+
--push \
30+
.
2431

2532
# if a pr is created, or anything otherwise
2633
else
27-
echo "Pushing testing"
28-
docker tag $REPO':'$TRAVIS_BUILD_NUMBER $REPO':testing'
29-
docker push $REPO':testing'
34+
echo "Nothing to push"
3035
fi

0 commit comments

Comments
 (0)