Compare commits
	
		
			11 Commits
		
	
	
		
			prom-mon
			...
			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