Compare commits
	
		
			11 Commits
		
	
	
		
			2.1.0+2.2.
			...
			feature/se
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d998b61117 | |||
| c93d5c6f44 | |||
| 52e52a1e1d | |||
| 771cf31824 | |||
| 83834c6570 | |||
| 98b5f077e2 | |||
| ed687e52c3 | |||
| cf06532da9 | |||
| 319deaba4b | |||
| 3c44300a2e | |||
| 5ac3a48125 | 
							
								
								
									
										21
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								.drone.yml
									
									
									
									
									
								
							| @ -2,11 +2,16 @@ | ||||
| kind: pipeline | ||||
| name: linters | ||||
| steps: | ||||
|   - name: run shellcheck | ||||
|     image: koalaman/shellcheck-alpine | ||||
|     commands: | ||||
|       - shellcheck backup.sh | ||||
|  | ||||
| trigger: | ||||
|   branch: | ||||
|     - main | ||||
|   - name: publish image | ||||
|     image: plugins/docker | ||||
|     settings: | ||||
|       username: 3wordchant | ||||
|       password: | ||||
|         from_secret: git_coopcloud_tech_token_3wc | ||||
|       repo: git.coopcloud.tech/coop-cloud/backup-bot-two | ||||
|       tags: 2.0.0 | ||||
|       registry: git.coopcloud.tech | ||||
|     when: | ||||
|       event: | ||||
|         exclude: | ||||
|           - pull_request | ||||
|  | ||||
							
								
								
									
										10
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| FROM docker:24.0.7-dind | ||||
|  | ||||
| RUN apk add --upgrade --no-cache restic bash python3 py3-pip | ||||
|  | ||||
| # Todo use requirements file with specific versions | ||||
| RUN pip install click==8.1.7 docker==6.1.3 resticpy==1.0.2 | ||||
|  | ||||
| COPY backupbot.py /usr/bin/backup | ||||
|  | ||||
| ENTRYPOINT /bin/bash | ||||
							
								
								
									
										2
									
								
								abra.sh
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								abra.sh
									
									
									
									
									
								
							| @ -1,3 +1,3 @@ | ||||
| export ENTRYPOINT_VERSION=v1 | ||||
| export ENTRYPOINT_VERSION=v2 | ||||
| export BACKUPBOT_VERSION=v1 | ||||
| export SSH_CONFIG_VERSION=v1 | ||||
|  | ||||
							
								
								
									
										13
									
								
								backupbot.py
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								backupbot.py
									
									
									
									
									
								
							| @ -85,6 +85,7 @@ def get_backup_cmds(): | ||||
|     services = client.services.list() | ||||
|     for s in services: | ||||
|         labels = s.attrs['Spec']['Labels'] | ||||
|         mounts = s.attrs['Spec']['TaskTemplate']['ContainerSpec']['Mounts'] | ||||
|         if (backup := labels.get('backupbot.backup')) and bool(backup): | ||||
|             stack_name = labels['com.docker.stack.namespace'] | ||||
|             # Remove this lines to backup only a specific service | ||||
| @ -92,9 +93,15 @@ def get_backup_cmds(): | ||||
|             # if SERVICE and SERVICE != stack_name: | ||||
|             #     continue | ||||
|             backup_apps.add(stack_name) | ||||
|             backup_paths = backup_paths.union( | ||||
|                 Path(VOLUME_PATH).glob(f"{stack_name}_*")) | ||||
|             if not (container:= container_by_service.get(s.name)): | ||||
|             for mount in mounts: | ||||
|                 if path := labels.get('backupbot.backup.path'): | ||||
|                     path_ = Path(VOLUME_PATH) / f"{mount['Source']}/_data/{path}" | ||||
|                 else: | ||||
|                     path_ = Path(VOLUME_PATH) / f"{mount['Source']}" | ||||
|                 logging.debug( | ||||
|                     f"Added backup path {path_}") | ||||
|                 backup_paths.add(path_) | ||||
|             if not (container := container_by_service.get(s.name)): | ||||
|                 logging.error( | ||||
|                     f"Container {s.name} is not running, hooks can not be executed") | ||||
|                 continue | ||||
|  | ||||
| @ -2,7 +2,7 @@ | ||||
| version: "3.8" | ||||
| services: | ||||
|   app: | ||||
|     image: docker:24.0.7-dind | ||||
|     image: git.coopcloud.tech/coop-cloud/backup-bot-two:2.0.0 | ||||
|     volumes: | ||||
|       - "/var/run/docker.sock:/var/run/docker.sock" | ||||
|       - "/var/lib/docker/volumes/:/var/lib/docker/volumes/" | ||||
| @ -23,9 +23,6 @@ services: | ||||
|       - source: entrypoint | ||||
|         target: /entrypoint.sh | ||||
|         mode: 0555 | ||||
|       - source: backupbot | ||||
|         target: /usr/bin/backup | ||||
|         mode: 0555 | ||||
|     entrypoint: ['/entrypoint.sh'] | ||||
|     healthcheck: | ||||
|       test: "pgrep crond" | ||||
| @ -46,6 +43,3 @@ configs: | ||||
|   entrypoint: | ||||
|     name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION} | ||||
|     file: entrypoint.sh | ||||
|   backupbot: | ||||
|     name: ${STACK_NAME}_backupbot_${BACKUPBOT_VERSION} | ||||
|     file: backupbot.py | ||||
|  | ||||
| @ -2,11 +2,6 @@ | ||||
|  | ||||
| set -e -o pipefail | ||||
|  | ||||
| apk add --upgrade --no-cache restic bash python3 py3-pip | ||||
|  | ||||
| # Todo use requirements file with specific versions | ||||
| pip install click==8.1.7 docker==6.1.3 resticpy==1.0.2 | ||||
|  | ||||
| if [ -n "$SSH_HOST_KEY" ] | ||||
| then | ||||
|     echo "$SSH_HOST_KEY" > /root/.ssh/known_hosts | ||||
|  | ||||
		Reference in New Issue
	
	Block a user