homelab/.gitlab-ci.yml

63 lines
1.8 KiB
YAML

stages:
- test
- deploy
before_script:
- apt-get -y update
- apt-get -y install git
- apt-get -y install ca-certificates curl gnupg lsb-release
- curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
- apt-get -y update
- apt-get -y install docker-ce docker-ce-cli containerd.io
- docker --version
# configure SSH keys
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
docker-compose-test:
image: docker
stage: test
rules:
- changes:
- seedbox/config/
- server/config/
- jafner-tools/config/
script:
- docker --version
- find ~ -type f -name docker-compose.yml > composes.txt
- find ~/server/config/minecraft/ -type f -name *.yml >> composes.txt
- for file in `cat composes.txt`; do docker compose -f $file config; done
- rm composes.txt
server-deploy:
image: debian:bullseye
stage: deploy
rules:
- changes:
- server/
script:
- ssh joey@joey-server "cd /home/joey/homelab && git pull"
seedbox-deploy:
image: debian:bullseye
stage: deploy
rules:
- changes:
- seedbox/
script:
- ssh joey@joey-seedbox "cd /home/joey/homelab && git pull"
jafner-tools-deploy:
image: debian:bullseye
stage: deploy
rules:
- changes:
- jafner-tools/
script:
- ssh root@jafner.tools "cd /root/homelab && git pull"