diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..c18e0d8 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,36 @@ +name: build +on: + push: + branches: + - master + schedule: + - cron: '0 0 * * 6' + +jobs: + build-docker-images: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: docker/setup-buildx-action@v2 + - env: + DOCKER_BUILD: 1 + DOCKER_PUSH: 1 + run: | + echo ${{ secrets.DOCKER_HUB_PASSWORD }} | docker login -u ${{ secrets.DOCKER_HUB_USERNAME }} --password-stdin + ./update.sh + + update-readme: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: | + docker run --rm -t \ + -v $(pwd):/src \ + -e DOCKER_USER=${{ secrets.DOCKER_HUB_USERNAME }} \ + -e DOCKER_PASS=${{ secrets.DOCKER_HUB_PASSWORD }} \ + -e PUSHRM_PROVIDER=dockerhub \ + -e PUSHRM_FILE=/src/README.md \ + -e PUSHRM_SHORT='Docker image for Dolibarr with auto installer on first boot.' \ + -e PUSHRM_TARGET=docker.io/tuxgasy/dolibarr \ + -e PUSHRM_DEBUG=1 \ + chko/docker-pushrm:1 diff --git a/.travis.yml b/.travis.yml index ecb8831..8859379 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ services: jobs: include: - stage: test - if: type = pull_request AND arch = amd64 + if: type = pull_request before_install: - ./update.sh script: @@ -15,7 +15,7 @@ jobs: - echo "Run the update.sh script before pull request" - stage: test - if: type = pull_request AND arch = amd64 + if: type = pull_request env: - DOLI_INSTALL_AUTO=0 before_install: @@ -24,21 +24,3 @@ jobs: - docker run -d -p 127.0.0.1:80:80 --name dolibarr tuxgasy/dolibarr:develop script: - docker ps | grep -q dolibarr - - - stage: deploy - if: type = push AND branch = master - env: - - DOCKER_BUILD=1 DOCKER_PUSH=1 - before_install: - - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin - script: | - ./update.sh && - docker run --rm -t \ - -v $(pwd):/src \ - -e DOCKER_USER=${DOCKER_USERNAME} \ - -e DOCKER_PASS=${DOCKER_PASSWORD} \ - -e PUSHRM_PROVIDER=dockerhub \ - -e PUSHRM_FILE=/src/README.md \ - -e PUSHRM_SHORT='Docker image for Dolibarr with auto installer on first boot.' \ - -e PUSHRM_TARGET=docker.io/tuxgasy/dolibarr -e PUSHRM_DEBUG=1 \ - chko/docker-pushrm:1 diff --git a/README.md b/README.md index e1c103c..65a637f 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ Docker image for Dolibarr with auto installer on first boot. **Dolibarr versions 7, 8 no more updated** +## Supported architectures + +Linux x86-64 (`amd64`), ARMv7 32-bit (`arm32v7` :warning: MariaDB/Mysql docker images don't support it) and ARMv8 64-bit (`arm64v8`) + ## What is Dolibarr ? Dolibarr ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda, ...). diff --git a/README.template b/README.template index 74deb71..ca22b83 100644 --- a/README.template +++ b/README.template @@ -9,6 +9,10 @@ Docker image for Dolibarr with auto installer on first boot. **Dolibarr versions 7, 8 no more updated** +## Supported architectures + +Linux x86-64 (`amd64`), ARMv7 32-bit (`arm32v7` :warning: MariaDB/Mysql docker images don't support it) and ARMv8 64-bit (`arm64v8`) + ## What is Dolibarr ? Dolibarr ERP & CRM is a modern software package to manage your organization's activity (contacts, suppliers, invoices, orders, stocks, agenda, ...). diff --git a/update.sh b/update.sh index df10c10..282e844 100755 --- a/update.sh +++ b/update.sh @@ -13,6 +13,12 @@ tags="" rm -rf "${BASE_DIR}/images" "${BASE_DIR}/docker-compose-links" +if [ "${DOCKER_BUILD}" = "1" ] && [ "${DOCKER_PUSH}" = "1" ]; then + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker buildx create --driver docker-container --use + docker buildx inspect --bootstrap +fi + for dolibarrVersion in "${DOLIBARR_VERSIONS[@]}"; do echo "Generate Dockerfile for Dolibarr ${dolibarrVersion}" @@ -43,6 +49,14 @@ for dolibarrVersion in "${DOLIBARR_VERSIONS[@]}"; do tags="${tags} ${currentTag}" fi + buildOptionTags="--tag tuxgasy/dolibarr:${currentTag}" + if [ "${dolibarrVersion}" != "develop" ]; then + buildOptionTags="${buildOptionTags} --tag tuxgasy/dolibarr:${dolibarrVersion} --tag tuxgasy/dolibarr:${dolibarrMajor}" + fi + if [ "${dolibarrVersion}" = "${DOLIBARR_LATEST_TAG}" ]; then + buildOptionTags="${buildOptionTags} --tag tuxgasy/dolibarr:latest" + fi + dir="${BASE_DIR}/images/${currentTag}" if [ "${php_version}" = "7.4" ]; then @@ -60,28 +74,22 @@ for dolibarrVersion in "${DOLIBARR_VERSIONS[@]}"; do cp "${BASE_DIR}/docker-run.sh" "${dir}/docker-run.sh" if [ "${DOCKER_BUILD}" = "1" ]; then - docker build --compress --tag "tuxgasy/dolibarr:${currentTag}" "${dir}" - fi - if [ "${DOCKER_PUSH}" = "1" ]; then - docker push "tuxgasy/dolibarr:${currentTag}" + if [ "${DOCKER_PUSH}" = "1" ]; then + docker buildx build \ + --push \ + --compress \ + --platform linux/arm/v7,linux/arm64,linux/amd64 \ + ${buildOptionTags} \ + "${dir}" + else + docker build \ + --compress \ + ${buildOptionTags} \ + "${dir}" + fi fi done - if [ "${DOCKER_BUILD}" = "1" ]; then - docker tag "tuxgasy/dolibarr:${currentTag}" "tuxgasy/dolibarr:${dolibarrVersion}" - docker tag "tuxgasy/dolibarr:${currentTag}" "tuxgasy/dolibarr:${dolibarrMajor}" - if [ "${dolibarrVersion}" = "${DOLIBARR_LATEST_TAG}" ]; then - docker tag "tuxgasy/dolibarr:${currentTag}" tuxgasy/dolibarr:latest - fi - fi - if [ "${DOCKER_PUSH}" = "1" ]; then - docker push "tuxgasy/dolibarr:${dolibarrVersion}" - docker push "tuxgasy/dolibarr:${dolibarrMajor}" - if [ "${dolibarrVersion}" = "${DOLIBARR_LATEST_TAG}" ]; then - docker push tuxgasy/dolibarr:latest - fi - fi - if [ "${dolibarrVersion}" = "develop" ]; then tags="${tags} develop" else