--- kind: pipeline type: docker name: register platform: os: linux arch: amd64 clone: disable: true trigger: event: exclude: - promote --- kind: pipeline type: docker name: yml platform: os: linux arch: amd64 clone: disable: false steps: - name: "yml" image: sigyl/zone-10-batch2yaml:latest commands: - node /app/servers/apps/batch2yaml/build/index.js . yml volumes: - name: dockersock path: /var/run services: - name: docker image: docker:19.03.12-dind@sha256:8dded163e463f4a59bf305b3dca98e312b2cfb89a43da3872e48f95a7554c48f privileged: true volumes: - name: dockersock path: /var/run - name: ca path: /etc/docker/certs.d - name: daemonjson path: /etc/docker/daemon.json volumes: - name: dockersock temp: {} - name: ca host: path: /etc/docker/certs.d - name: daemonjson host: path: /etc/docker/daemon.json trigger: event: - promote target: - yml --- kind: pipeline type: docker name: convert platform: os: linux arch: amd64 clone: disable: false steps: - name: "check out deployed" when: branch: - master image: alpine/git:latest commands: - git config credential.helper '!f() { sleep 1; echo "username=${GIT_USER}"; echo "password=${GIT_PASSWORD}"; }; f' - git fetch - git checkout deployed - git merge master environment: GIT_PASSWORD: from_secret: GIT_PASSWORD GIT_USER: from_secret: GIT_USER - name: "convert to xml" image: sigyl/zone-10-batch2yaml:latest when: branch: - master commands: - node /app/servers/apps/batch2yaml/build/index.js . xml volumes: - name: dockersock path: /var/run - name: "convert to yml" image: sigyl/zone-10-batch2yaml:latest when: branch: - format-branch commands: - node /app/servers/apps/batch2yaml/build/index.js . yml volumes: - name: dockersock path: /var/run - name: "git - status" when: branch: - master - format-branch image: alpine/git:latest commands: - git status volumes: - name: dockersock path: /var/run - name: "git - deployed" when: branch: - master - format-branch image: alpine/git:latest commands: - git config credential.helper '!f() { sleep 1; echo "username=$${GIT_USER}"; echo "password=$${GIT_PASSWORD}"; }; f' - git add -A - git commit -m '$${DRONE_COMMIT_MESSAGE}' - git push origin environment: GIT_PASSWORD: from_secret: GIT_PASSWORD GIT_USER: from_secret: GIT_USER volumes: - name: dockersock path: /var/run services: - name: docker image: docker:19.03.12-dind@sha256:8dded163e463f4a59bf305b3dca98e312b2cfb89a43da3872e48f95a7554c48f privileged: true volumes: - name: dockersock path: /var/run - name: ca path: /etc/docker/certs.d - name: daemonjson path: /etc/docker/daemon.json volumes: - name: dockersock temp: {} - name: ca host: path: /etc/docker/certs.d - name: daemonjson host: path: /etc/docker/daemon.json trigger: branch: - format-branch - master event: - push --- kind: pipeline type: docker name: save platform: os: linux arch: amd64 clone: disable: true steps: - name: mkdir image: appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea settings: envs: - drone_tag - drone_commit - drone_build_number - drone_repo_name - drone_repo_namespace script: - mkdir -p /stack/.images/ghost/built - rm -f /stack/.images/ghost/*.* - rm -f /stack/.images/ghost/built/*.* - name: alpine/git:v2.26.2 image: appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea settings: envs: - drone_tag - drone_commit - drone_build_number - drone_repo_name - drone_repo_namespace - registry_domain - registry_port - registry_password - destination_registry script: - "n=0\nwhile :\ndo\n docker login $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/ --username client --password \"$${REGISTRY_PASSWORD}\" \\\\\n && break # substitute your command here\n n=$((n+1))\n if [ $n -ge 10 ]; then\n echo \"login failed\"\n exit 1\n fi\n echo \"retrying login..$n\"\n sleep 5\ndone\n" - docker pull $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/alpine/git:v2.26.2 - docker save $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/alpine/git:v2.26.2 -o /stack/.images/ghost/alpine_git:v2.26.2.tar - echo "docker load < alpine_git:v2.26.2.tar" >> /stack/.images/ghost/load.sh - echo "docker tag $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/alpine/git:v2.26.2 $${DESTINATION_REGISTRY}/stack/ghost/alpine/git:v2.26.2" >> /stack/.images/ghost/load.sh - name: ghost:3.14.0 image: appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea settings: envs: - drone_tag - drone_commit - drone_build_number - drone_repo_name - drone_repo_namespace - registry_domain - registry_port - registry_password - destination_registry script: - "n=0\nwhile :\ndo\n docker login $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/ --username client --password \"$${REGISTRY_PASSWORD}\" \\\\\n && break # substitute your command here\n n=$((n+1))\n if [ $n -ge 10 ]; then\n echo \"login failed\"\n exit 1\n fi\n echo \"retrying login..$n\"\n sleep 5\ndone\n" - docker pull $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/ghost:3.14.0 - docker save $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/ghost:3.14.0 -o /stack/.images/ghost/ghost:3.14.0.tar - echo "docker load < ghost:3.14.0.tar" >> /stack/.images/ghost/load.sh - echo "docker tag $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/ghost:3.14.0 $${DESTINATION_REGISTRY}/stack/ghost/ghost:3.14.0" >> /stack/.images/ghost/load.sh - name: mysql:5.7 image: appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea settings: envs: - drone_tag - drone_commit - drone_build_number - drone_repo_name - drone_repo_namespace - registry_domain - registry_port - registry_password - destination_registry script: - "n=0\nwhile :\ndo\n docker login $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/ --username client --password \"$${REGISTRY_PASSWORD}\" \\\\\n && break # substitute your command here\n n=$((n+1))\n if [ $n -ge 10 ]; then\n echo \"login failed\"\n exit 1\n fi\n echo \"retrying login..$n\"\n sleep 5\ndone\n" - docker pull $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/mysql:5.7 - docker save $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/mysql:5.7 -o /stack/.images/ghost/mysql:5.7.tar - echo "docker load < mysql:5.7.tar" >> /stack/.images/ghost/load.sh - echo "docker tag $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/mysql:5.7 $${DESTINATION_REGISTRY}/stack/ghost/mysql:5.7" >> /stack/.images/ghost/load.sh - name: my-ghost image: appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea settings: envs: - drone_tag - drone_commit - drone_build_number - drone_repo_name - drone_repo_namespace - registry_domain - registry_port - registry_password - destination_registry script: - "n=0\nwhile :\ndo\n docker login $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/ --username client --password \"$${REGISTRY_PASSWORD}\" \\\\\n && break # substitute your command here\n n=$((n+1))\n if [ $n -ge 10 ]; then\n echo \"login failed\"\n exit 1\n fi\n echo \"retrying login..$n\"\n sleep 5\ndone\n" - docker pull $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/my-ghost - docker save $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/my-ghost -o /stack/.images/ghost/built/my-ghost.tar - echo "docker load my-ghost.tar" >> /stack/.images/ghost/built/load.sh - echo "docker tag $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/stack/ghost/my-ghost ${DESINATION_REGISTRY}/stack/ghost/my-ghost" >> /stack/.images/ghost/built/load.sh trigger: event: - promote target: - save --- kind: pipeline type: docker name: print platform: os: linux arch: amd64 steps: - name: print env image: appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea settings: envs: - drone_tag - drone_commit - drone_build_number - drone_repo_name - drone_repo_namespace - mail_service - mail_user - commento_origin - theme - mysql_root_password script: - rm -f env-ghost - "echo \"export MAIL_SERVICE='$${MAIL_SERVICE}'\" >> env-ghost # \"mail-service\"" - "echo \"export MAIL_USER='$${MAIL_USER}'\" >> env-ghost # \"mail-user\"" - "echo \"export COMMENTO_ORIGIN='$${COMMENTO_ORIGIN}'\" >> env-ghost # \"commento-origin\"" - "echo \"export THEME='$${THEME}'\" >> env-ghost # \"theme\"" - "echo \"export MYSQL_ROOT_PASSWORD='$${MYSQL_ROOT_PASSWORD}'\" >> env-ghost # \"mysql-root-password\"" environment: COMMENTO_ORIGIN: from_secret: commento-origin MAIL_SERVICE: from_secret: mail-service MAIL_USER: from_secret: mail-user MYSQL_ROOT_PASSWORD: from_secret: mysql-root-password THEME: from_secret: theme trigger: event: - promote target: - print --- kind: pipeline type: docker name: build platform: os: linux arch: amd64 steps: - name: "dockerbuild:" image: docker:19.03.12-dind@sha256:8dded163e463f4a59bf305b3dca98e312b2cfb89a43da3872e48f95a7554c48f commands: - set -e - export NAME=ghost - export ROOT=stack - "n=0\nwhile :\ndo\n docker login $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/ --username client --password \"$${REGISTRY_PASSWORD}\" \\\\\n && break # substitute your command here\n n=$((n+1))\n if [ $n -ge 10 ]; then\n echo \"login failed\"\n exit 1\n fi\n echo \"retrying login..$n\"\n sleep 5\ndone\n" - sh .drone/build.sh - sh .drone/push.sh environment: THEME: from_secret: theme volumes: - name: dockersock path: /var/run services: - name: docker image: docker:19.03.12-dind@sha256:8dded163e463f4a59bf305b3dca98e312b2cfb89a43da3872e48f95a7554c48f privileged: true volumes: - name: dockersock path: /var/run - name: ca path: /etc/docker/certs.d - name: daemonjson path: /etc/docker/daemon.json volumes: - name: dockersock temp: {} - name: ca host: path: /etc/docker/certs.d - name: daemonjson host: path: /etc/docker/daemon.json trigger: event: - promote target: - build --- kind: pipeline type: docker name: deploy platform: os: linux arch: amd64 steps: - name: scp image: appleboy/drone-scp:1.6.2@sha256:bd37a55f4b97e7742b0de7333669b96220b3cc422d366e1fa8c34059b736ab47 settings: command_timeout: 2m source: - . target: /stack/ghost - name: deploy image: appleboy/drone-ssh:1.6.2@sha256:b801dc2cd238c192b6e99acfa7bc3f5b9a03f312bd2feb1e10b3a7a28a1b80ea settings: envs: - drone_tag - drone_commit - drone_build_number - drone_repo_name - drone_repo_namespace - scheme - domain - registry_domain - registry_port - registry_password - mail_service - mail_user - commento_origin - theme - mysql_root_password - theme script: - export MYSQL_ROOT_PASSWORD=$${MYSQL_ROOT_PASSWORD} - export MAIL_SERVICE=$${MAIL_SERVICE} - export MAIL_USER=$${MAIL_USER} - export COMMENTO_ORIGIN=$${COMMENTO_ORIGIN} - export THEME=$${THEME} - export THEME=$${THEME} - export SCHEME=$${SCHEME} - export DOMAIN=$${DOMAIN} - export REGISTRY_DOMAIN=$${REGISTRY_DOMAIN} - export REGISTRY_PORT=$${REGISTRY_PORT} - export REGISTRY_PASSWORD=$${REGISTRY_PASSWORD} - set -e - export NAME=ghost - export ROOT=stack - cd /stack/ghost - "n=0\nwhile :\ndo\n docker login $${REGISTRY_DOMAIN}:$${REGISTRY_PORT}/ --username client --password \"$${REGISTRY_PASSWORD}\" \\\\\n && break # substitute your command here\n n=$((n+1))\n if [ $n -ge 10 ]; then\n echo \"login failed\"\n exit 1\n fi\n echo \"retrying login..$n\"\n sleep 5\ndone\n" - sh .drone/pull.sh - sh .drone/deploy.sh environment: COMMENTO_ORIGIN: from_secret: commento-origin MAIL_SERVICE: from_secret: mail-service MAIL_USER: from_secret: mail-user MYSQL_ROOT_PASSWORD: from_secret: mysql-root-password THEME: from_secret: theme trigger: event: - promote - promote target: - deploy - production ...