mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Added multi arch docker builds to travis ci
This commit is contained in:
		
							
								
								
									
										96
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										96
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -33,6 +33,102 @@ jobs: | |||||||
|         - ng build --prod |         - ng build --prod | ||||||
|       after_success: true |       after_success: true | ||||||
|  |  | ||||||
|  |     - stage: build_docker | ||||||
|  |       name: amd64 docker build | ||||||
|  |       services: | ||||||
|  |         - docker | ||||||
|  |       before_install: | ||||||
|  |         - true | ||||||
|  |       install: | ||||||
|  |         - true | ||||||
|  |       after_success: | ||||||
|  |         - true | ||||||
|  |       script: | ||||||
|  |         - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin | ||||||
|  |         - docker build -f Dockerfile --tag=${DOCKER_REPO}:${TRAVIS_COMMIT}-amd64 . | ||||||
|  |         - docker push ${DOCKER_REPO}:${TRAVIS_COMMIT}-amd64 | ||||||
|  |       on: | ||||||
|  |         condition: '"${BUILD_DOCKER}" = 1' | ||||||
|  |     - stage: build_docker | ||||||
|  |       name: arm64v8 docker build | ||||||
|  |       services: | ||||||
|  |         - docker | ||||||
|  |       before_install: | ||||||
|  |         - true | ||||||
|  |       install: | ||||||
|  |         - true | ||||||
|  |       after_success: | ||||||
|  |         - true | ||||||
|  |       script: | ||||||
|  |         - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin | ||||||
|  |         # travis_wait 60 tells travis to wait for up to 60 minutes - default is 20, which is too short | ||||||
|  |         - travis_wait 60 docker build -f Dockerfile --tag=${DOCKER_REPO}:${TRAVIS_COMMIT}-arm64v8 . | ||||||
|  |         - docker push ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm64v8 | ||||||
|  |       arch: arm64 | ||||||
|  |       on: | ||||||
|  |         condition: '"${BUILD_DOCKER}" = 1' | ||||||
|  |      | ||||||
|  |     - stage: build_docker | ||||||
|  |       name: arm32v7 docker build | ||||||
|  |       services: | ||||||
|  |         - docker | ||||||
|  |       before_install: | ||||||
|  |         - true | ||||||
|  |       install: | ||||||
|  |         - true | ||||||
|  |       after_success: | ||||||
|  |         - true | ||||||
|  |       script: | ||||||
|  |         - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin | ||||||
|  |         # register binfmt stuff for qemu-static binaries so we can use userland-emulation | ||||||
|  |         - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes | ||||||
|  |         # replace the multi-arch reference with a specific, arm32v7 version. else docker will use the platform specific one, | ||||||
|  |         # which is amd64. | ||||||
|  |         - sed -i 's/FROM node:15/FROM node@sha256:e9bf2028bd59399afd3f6665f427a07b7ddfee07cffdf2061c39d991a3b3e332/g' Dockerfile | ||||||
|  |         - sed -i 's/FROM python:3.7-slim/FROM python@sha256:843dd86fa35b923095b5db60c6e2e296013d647c8327aeba0e7638e7f0a43373/g' Dockerfile | ||||||
|  |         # travis_wait 60 tells travis to wait for up to 60 minutes - default is 20, which is too short | ||||||
|  |         - travis_wait 60 docker build -f Dockerfile --tag=${DOCKER_REPO}:${TRAVIS_COMMIT}-arm32v7 . | ||||||
|  |         - docker push ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm32v7 | ||||||
|  |       on: | ||||||
|  |         condition: '"${BUILD_DOCKER}" = 1' | ||||||
|  |      | ||||||
|  |     - stage: publish_manifest | ||||||
|  |       env: | ||||||
|  |         - DOCKER_CLI_EXPERIMENTAL=enabled # required for manifest support | ||||||
|  |       services: | ||||||
|  |         - docker | ||||||
|  |       before_install: | ||||||
|  |         - true | ||||||
|  |       install: | ||||||
|  |         - true | ||||||
|  |       after_success: | ||||||
|  |         - true | ||||||
|  |       script: | ||||||
|  |         - echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin | ||||||
|  |         - docker manifest create ${DOCKER_REPO}:${TRAVIS_COMMIT} ${DOCKER_REPO}:${TRAVIS_COMMIT}-amd64 ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm64v8 ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm32v7 ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm32v6 | ||||||
|  |         - docker manifest annotate ${DOCKER_REPO}:${TRAVIS_COMMIT} ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm32v7 --os linux --arch arm --variant v7 | ||||||
|  |         - docker manifest annotate ${DOCKER_REPO}:${TRAVIS_COMMIT} ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm64v8 --os linux --arch arm64 --variant v8 | ||||||
|  |         - docker manifest push --purge ${DOCKER_REPO}:${TRAVIS_COMMIT} | ||||||
|  |         - | | ||||||
|  |           if [ "${TRAVIS_BRANCH}" = "master" ]; then | ||||||
|  |             echo "Master branch detected" | ||||||
|  |             DOCKER_TAG="latest" | ||||||
|  |           else | ||||||
|  |             DOCKER_TAG=${TRAVIS_TAG} | ||||||
|  |           fi | ||||||
|  |         - | | ||||||
|  |           if [ "${DOCKER_TAG}" != "" ]; then | ||||||
|  |             echo "Create Tag ${DOCKER_TAG}" | ||||||
|  |             docker manifest create ${DOCKER_REPO}:${DOCKER_TAG} ${DOCKER_REPO}:${TRAVIS_COMMIT}-amd64 ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm64v8 ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm32v7 ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm32v6 | ||||||
|  |             docker manifest annotate ${DOCKER_REPO}:${DOCKER_TAG} ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm32v7 --os linux --arch arm --variant v7 | ||||||
|  |             docker manifest annotate ${DOCKER_REPO}:${DOCKER_TAG} ${DOCKER_REPO}:${TRAVIS_COMMIT}-arm64v8 --os linux --arch arm64 --variant v8 | ||||||
|  |             docker manifest push --purge ${DOCKER_REPO}:${DOCKER_TAG} | ||||||
|  |           else | ||||||
|  |             echo "Not a tag and not on master, so not pushing tag/master specific manifest" | ||||||
|  |           fi | ||||||
|  |       on: | ||||||
|  |         condition: '"${BUILD_DOCKER}" = 1' | ||||||
|  |  | ||||||
|  |  | ||||||
| before_install: | before_install: | ||||||
|   - sudo apt-get update -qq |   - sudo apt-get update -qq | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Mark Schmitt
					Mark Schmitt