Skip to content

Drone 筆記

1.透過 ngrok,建立公開IP,綁定 localhost:8082 (重啟、重開機就沒了)

Alt text

Alt text

2.綁定github

Alt text

Client ID: 3ab12bcea99814fd59df Client Secret: 2ae999f7e3e8bc29c1c5fec1918d1d1ba13a2067

3.透過 Docker Compose 建立 drone server

  • 開啟 CMD,輸入 WSL。

    Alt text

  • 切到 home 路徑。

    cd ~
    
  • 建立 drone-server 資料夾

    mkdir drone-server
    cd drone-server
    
  • 建立 docker-compose.github.yml

    nano docker-compose.github.yml
    

貼上以下

version: '2'
services:
drone-server:
    /assets/image: drone/drone:1
    ports:
    - 8082:80
    volumes:
    - ./:/data
    restart: always
    environment:
    - DRONE_SERVER_HOST=${DRONE_SERVER_HOST}
    - DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO}
    - DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
    - DRONE_GITHUB_SERVER=<https://github.com>
    - DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}
    - DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}
    - DRONE_LOGS_PRETTY=true
    - DRONE_LOGS_COLOR=true
    - DRONE_USER_CREATE=username:aweit-zhu,admin:true

runner for docker version

drone-runner:
    /assets/image: drone/drone-runner-docker:1
    restart: always
    depends_on:
    - drone-server
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    environment:
    - DRONE_RPC_HOST=${DRONE_RPC_HOST}
    - DRONE_RPC_PROTO=${DRONE_RPC_PROTO}
    - DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
    - DRONE_RUNNER_CAPACITY=3
  • 建立 .env
    nano .env
    

貼上以下

我們目前有的資訊為:
公開 IP  <https://b5c9-58-115-111-122.ngrok-free.app>
Client ID: 3ab12bcea99814fd59df
Client Secret: 2ae999f7e3e8bc29c1c5fec1918d1d1ba13a2067

DRONE_SERVER_HOST=<https://b5c9-58-115-111-122.ngrok-free.app>
DRONE_SERVER_PROTO=https
DRONE_RPC_SECRET=123
DRONE_RPC_HOST=drone-server
DRONE_RPC_PROTO=http
DRONE_GITHUB_CLIENT_ID=3ab12bcea99814fd59df
DRONE_GITHUB_CLIENT_SECRET=2ae999f7e3e8bc29c1c5fec1918d1d1ba13a2067

Alt text

  • 啟動容器

    docker-compose -f docker-compose.github.yml up -d

Alt text

Alt text

點選 Visit Site

Alt text

點選 Authorize aweit-zhu

Alt text

  • Drone Server 的操作

選擇 aweit-zhu/docker-demo 進行 Activate 選擇 Trusted 點選 Save Alt text

  • 回到 github 做設定

將 Payload URL 修改為 修改為 https://b5c9-58-115-111-122.ngrok-free.app /hook

Alt text

4. 撰寫 .drone.yml 檔

  • 建立 ssh_password_master secret

Alt text

  • 建立 ssh_password secret

Alt text

  • 解析 .drone.yml (略)

    kind: pipeline
    type: docker
    name: docker-demo-drone
    steps:
    
    - name: test
        /assets/image: maven:3-jdk-8
        volumes:
    - name: maven-cache
            path: /root/.m2
    - name: maven-build
            path: /app/build
        commands:
    - mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V
    - mvn test -B
    
    - name: package
        /assets/image: maven:3-jdk-8
        volumes:
    - name: maven-cache
            path: /root/.m2
    - name: maven-build
            path: /app/build
        commands:
    - mvn clean package
    - cp target/docker-demo.jar /app/build/docker-demo.jar
    - cp Dockerfile /app/build/Dockerfile
    - cp docker-k8s-demo-deployment.yaml /app/build/docker-k8s-demo-deployment.yaml
    - cp deploymentservice.yaml /app/build/deploymentservice.yaml
    - cp run.sh /app/build/run.sh
    
    - name: scp files
        /assets/image: appleboy/drone-scp
        settings:
        host: 192.168.0.17
        username: root
        password:
            from_secret: ssh_password_master
        port: 22
        command_timeout: 2m
        target: /mydata/maven/build
        source: ./*
    
    - name: build-start01
        /assets/image: appleboy/drone-ssh
        settings:
        host: 172.31.93.122
        username: root
        password:
            from_secret: ssh_password
        port: 2222
        command_timeout: 5m
        script:
            - cd /mydata/maven/build
            - chmod +x run.sh
            - ./run.sh
    
    - name: build-start02
        /assets/image: appleboy/drone-ssh
        settings:
        host: 192.168.0.17
        username: vboxuser
        password:
            from_secret: ssh_password_master
        port: 22
        command_timeout: 5m
        script:
            - cd /mydata/maven/build
            - microk8s.kubectl delete deploy docker-k8s-demo-deployment
            - microk8s.kubectl apply -f ./docker-k8s-demo-deployment.yaml
    
    volumes:
    
    - name: maven-build
        host:
        path: /mydata/maven/build
    - name: maven-cache
        host:
        path: /mydata/maven/cache
    
  • 只要 push 到遠端,就會觸發 drone 執行。

Alt text

Alt text

  • 驗證

Alt text

打開瀏覽器,輸入URL:http://192.168.0.17:60000/

Alt text