You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							105 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							105 lines
						
					
					
						
							3.3 KiB
						
					
					
				| #!/usr/bin/env bash | |
|  | |
| # Determine the basedir of this script. | |
| # It should be located in the same directory as the docker-bake.hcl | |
| # This ensures you can run this script from both inside and outside of the docker directory | |
| BASEDIR=$(RL=$(readlink -n "$0"); SP="${RL:-$0}"; dirname "$(cd "$(dirname "${SP}")" || exit; pwd)/$(basename "${SP}")") | |
| 
 | |
| # Load build env's | |
| source "${BASEDIR}/bake_env.sh" | |
| 
 | |
| # Check if a target is given as first argument | |
| # If not we assume the defaults and pass the given arguments to the podman command | |
| case "${1}" in | |
|     alpine*|debian*) | |
|         TARGET="${1}" | |
|         # Now shift the $@ array so we only have the rest of the arguments | |
|         # This allows us too append these as extra arguments too the podman buildx build command | |
|         shift | |
|     ;; | |
| esac | |
| 
 | |
| LABEL_ARGS=( | |
|     --label org.opencontainers.image.description="Unofficial Bitwarden compatible server written in Rust" | |
|     --label org.opencontainers.image.licenses="AGPL-3.0-only" | |
|     --label org.opencontainers.image.documentation="https://github.com/dani-garcia/vaultwarden/wiki" | |
|     --label org.opencontainers.image.url="https://github.com/dani-garcia/vaultwarden" | |
|     --label org.opencontainers.image.created="$(date --utc --iso-8601=seconds)" | |
| ) | |
| if [[ -n "${SOURCE_REPOSITORY_URL}" ]]; then | |
|     LABEL_ARGS+=(--label org.opencontainers.image.source="${SOURCE_REPOSITORY_URL}") | |
| fi | |
| if [[ -n "${SOURCE_COMMIT}" ]]; then | |
|     LABEL_ARGS+=(--label org.opencontainers.image.revision="${SOURCE_COMMIT}") | |
| fi | |
| if [[ -n "${SOURCE_VERSION}" ]]; then | |
|     LABEL_ARGS+=(--label org.opencontainers.image.version="${SOURCE_VERSION}") | |
| fi | |
| 
 | |
| # Check if and which --build-arg arguments we need to configure | |
| BUILD_ARGS=() | |
| if [[ -n "${DB}" ]]; then | |
|     BUILD_ARGS+=(--build-arg DB="${DB}") | |
| fi | |
| if [[ -n "${CARGO_PROFILE}" ]]; then | |
|     BUILD_ARGS+=(--build-arg CARGO_PROFILE="${CARGO_PROFILE}") | |
| fi | |
| if [[ -n "${VW_VERSION}" ]]; then | |
|     BUILD_ARGS+=(--build-arg VW_VERSION="${VW_VERSION}") | |
| fi | |
| 
 | |
| # Set the default BASE_TAGS if non are provided | |
| if [[ -z "${BASE_TAGS}" ]]; then | |
|     BASE_TAGS="testing" | |
| fi | |
| 
 | |
| # Set the default CONTAINER_REGISTRIES if non are provided | |
| if [[ -z "${CONTAINER_REGISTRIES}" ]]; then | |
|     CONTAINER_REGISTRIES="vaultwarden/server" | |
| fi | |
| 
 | |
| # Check which Dockerfile we need to use, default is debian | |
| case "${TARGET}" in | |
|     alpine*) | |
|         BASE_TAGS="${BASE_TAGS}-alpine" | |
|         DOCKERFILE="Dockerfile.alpine" | |
|         ;; | |
|     *) | |
|         DOCKERFILE="Dockerfile.debian" | |
|         ;; | |
| esac | |
| 
 | |
| # Check which platform we need to build and append the BASE_TAGS with the architecture | |
| case "${TARGET}" in | |
|     *-arm64) | |
|         BASE_TAGS="${BASE_TAGS}-arm64" | |
|         PLATFORM="linux/arm64" | |
|         ;; | |
|     *-armv7) | |
|         BASE_TAGS="${BASE_TAGS}-armv7" | |
|         PLATFORM="linux/arm/v7" | |
|         ;; | |
|     *-armv6) | |
|         BASE_TAGS="${BASE_TAGS}-armv6" | |
|         PLATFORM="linux/arm/v6" | |
|         ;; | |
|     *) | |
|         BASE_TAGS="${BASE_TAGS}-amd64" | |
|         PLATFORM="linux/amd64" | |
|         ;; | |
| esac | |
| 
 | |
| # Be verbose on what is being executed | |
| set -x | |
| 
 | |
| # Build the image with podman | |
| # We use the docker format here since we are using `SHELL`, which is not supported by OCI | |
| # shellcheck disable=SC2086 | |
| podman buildx build \ | |
|   --platform="${PLATFORM}" \ | |
|   --tag="${CONTAINER_REGISTRIES}:${BASE_TAGS}" \ | |
|   --format=docker \ | |
|   "${LABEL_ARGS[@]}" \ | |
|   "${BUILD_ARGS[@]}" \ | |
|   --file="${BASEDIR}/${DOCKERFILE}" "$@" \ | |
|   "${BASEDIR}/.."
 | |
| 
 |