kind: pipeline type: docker name: default volumes: - name: docker-sock host: path: /var/run/docker.sock - name: shared-folder host: path: /root/app/drone/workspace - name: go-cache host: path: /root/app/drone/go-cache clone: disable: true steps: - name: clone image: alpine/git:latest pull: never volumes: - name: shared-folder path: /workspace commands: - cd /workspace/prdUploader - git pull - name: build image: golang:1.21-alpine pull: never environment: GO111MODULE: on CGO_ENABLED: 0 GOPROXY: https://goproxy.cn GOMODCACHE: /go/pkg/mod volumes: - name: shared-folder path: /workspace - name: go-cache path: /go/pkg/mod commands: - echo "Building binary..." - cd /workspace/prdUploader - pwd - echo $GOMODCACHE - go mod tidy - go build -o myapp -ldflags "-X main.RunMode=test -s -w" - echo "Building binary finished" - ls -lh myapp - name: deploy image: docker:24.0-cli pull: never volumes: - name: shared-folder path: /workspace - name: docker-sock path: /var/run/docker.sock commands: - echo "Building Docker image..." - cd /workspace/prdUploader - docker build -t prduploader:latest . - echo "Running Docker container..." - | if docker run -p 11000:11000 prduploader:latest; then echo "Deployment successful, cleaning up old container and image..." else echo "Deployment failed, keeping old container and image." fi - cd .. - rm -rf prdUploader - echo "Deployment finished"