kind: pipeline type: docker name: testing steps: - name: unittests image: golang:1.17-buster environment: SNAPSHOTS_S3_ENDPOINT: minio:9000 TEST_S3_ENDPOINT: minio:9000 volumes: - name: dockersock path: /var/run commands: - go mod tidy - make test services: - name: minio image: minio/minio:latest environment: MINIO_ROOT_USER: test MINIO_ROOT_PASSWORD: testtest command: - server - /data - --console-address - :9001 - name: docker image: docker:dind privileged: true volumes: - name: dockersock path: /var/run volumes: - name: dockersock temp: {} --- kind: pipeline type: docker name: Dev deploy steps: - name: build # image: golang:1.17-buster # this one is used in production image: golang:1.17-bullseye # this one is used in dev commands: - go mod tidy - make build - name: deploy image: debian:buster environment: #NODE: node-x.rosti.cz NODES: 192.168.1.236 192.168.1.220 SSH_KEY: from_secret: SSH_KEY commands: - apt update && apt install -y ssh - | for NODE in $NODES; do echo "\033[0;32mDeploying $NODE\033[0m" mkdir -p ~/.ssh && echo "$SSH_KEY" > ~/.ssh/id_ed25519 && chmod 600 ~/.ssh/id_ed25519 echo "\033[1;33m.. scanning SSH keys\033[0m" ssh-keyscan $NODE > ~/.ssh/known_hosts echo "\033[1;33m.. copying the binary\033[0m" scp node-api root@$NODE:/usr/local/bin/node-api_ echo "\033[1;33m.. replacing the binary\033[0m" ssh root@$NODE mv /usr/local/bin/node-api_ /usr/local/bin/node-api echo "\033[1;33m.. restarting service\033[0m" ssh root@$NODE systemctl restart node-api done trigger: branch: - main event: - push - custom depends_on: - testing --- kind: pipeline type: docker name: Production deploy (Debian 10) steps: - name: build image: golang:1.17-buster # this one is used in production #image: golang:1.17-bullseye # this one is used in dev commands: - go mod tidy - make build - name: deploy image: debian:buster environment: NODES: node-18.rosti.cz node-19.rosti.cz SSH_KEY: from_secret: SSH_KEY commands: - apt update && apt install -y ssh - | for NODE in $NODES; do echo "\033[0;32mDeploying $NODE\033[0m" mkdir -p ~/.ssh && echo "$SSH_KEY" > ~/.ssh/id_ed25519 && chmod 600 ~/.ssh/id_ed25519 echo "\033[1;33m.. scanning SSH keys\033[0m" ssh-keyscan $NODE > ~/.ssh/known_hosts echo "\033[1;33m.. copying the binary\033[0m" scp node-api root@$NODE:/usr/local/bin/node-api_ echo "\033[1;33m.. replacing the binary\033[0m" ssh root@$NODE mv /usr/local/bin/node-api_ /usr/local/bin/node-api echo "\033[1;33m.. restarting service\033[0m" ssh root@$NODE systemctl restart node-api done depends_on: - testing trigger: event: - promote target: - production --- kind: pipeline type: docker name: Production deploy (Debian 11) steps: - name: build image: golang:1.18-bullseye # this one is used in production #image: golang:1.17-bullseye # this one is used in dev commands: - go mod tidy - make build - name: deploy image: debian:bullseye environment: NODES: node-20.rosti.cz SSH_KEY: from_secret: SSH_KEY commands: - apt update && apt install -y ssh - | for NODE in $NODES; do echo "\033[0;32mDeploying $NODE\033[0m" mkdir -p ~/.ssh && echo "$SSH_KEY" > ~/.ssh/id_ed25519 && chmod 600 ~/.ssh/id_ed25519 echo "\033[1;33m.. scanning SSH keys\033[0m" ssh-keyscan $NODE > ~/.ssh/known_hosts echo "\033[1;33m.. copying the binary\033[0m" scp node-api root@$NODE:/usr/local/bin/node-api_ echo "\033[1;33m.. replacing the binary\033[0m" ssh root@$NODE mv /usr/local/bin/node-api_ /usr/local/bin/node-api echo "\033[1;33m.. restarting service\033[0m" ssh root@$NODE systemctl restart node-api done depends_on: - testing trigger: event: - promote target: - production