|
1 | 1 | ---
|
2 | 2 | kind: pipeline
|
3 | 3 | name: default
|
4 |
| - |
5 |
| -# Disable default clone |
6 |
| -clone: |
7 |
| - disable: true |
| 4 | +type: docker |
8 | 5 |
|
9 | 6 | steps:
|
10 |
| - # This clone step doesn't use "root" user |
11 |
| - - name: clone |
12 |
| - image: plugins/git:next |
13 |
| - |
14 | 7 | # Restore cache of downloaded dependencies
|
15 |
| - - name: restore cache |
| 8 | + - name: restore-cache |
16 | 9 | image: drillster/drone-volume-cache
|
17 | 10 | settings:
|
18 | 11 | restore: true
|
19 | 12 | mount:
|
20 | 13 | - .sbt
|
21 | 14 | - .ivy2
|
22 |
| - - www/node_modules |
| 15 | + - ui/node_modules |
| 16 | + - ui/bower_components |
23 | 17 | volumes: [{name: cache, path: /cache}]
|
24 | 18 |
|
25 | 19 | # Run project tests
|
26 |
| - - name: run tests and build stage |
| 20 | + - name: run-tests |
27 | 21 | image: thehiveproject/drone-scala-node
|
28 | 22 | commands:
|
29 |
| - - . ~/.nvm/nvm.sh |
30 |
| - - sbt -Duser.home=$PWD test stage |
| 23 | + - sbt -Duser.home=$PWD test:compile test |
31 | 24 |
|
32 | 25 | # Build packages
|
33 |
| - - name: build packages |
| 26 | + - name: build-packages |
34 | 27 | image: thehiveproject/drone-scala-node
|
35 | 28 | settings:
|
36 | 29 | pgp_key: {from_secret: pgp_key}
|
37 | 30 | commands:
|
38 | 31 | - |
|
| 32 | + V=$(sbt -no-colors --error "print cortex/version" | tail -1) |
| 33 | + if ( echo $V | grep -qi snapshot) |
| 34 | + then |
| 35 | + exit 1 |
| 36 | + fi |
39 | 37 | . ~/.nvm/nvm.sh
|
40 | 38 | [ -n "$PLUGIN_PGP_KEY" ] && gpg --batch --import - <<< $PLUGIN_PGP_KEY
|
41 | 39 | sbt -Duser.home=$PWD docker:stage debian:packageBin rpm:packageBin universal:packageBin
|
| 40 | + if ( echo $V | grep -qi rc ) |
| 41 | + then |
| 42 | + echo $( echo $V | sed -re 's/([0-9]+.[0-9]+.[0-9]+)-RC([0-9]+)-([0-9]+)/\1-RC\2,\1-RC\2-\3/' ) > .tags |
| 43 | + else |
| 44 | + echo $( echo $V | sed -re 's/([0-9]+).([0-9]+).([0-9]+)-([0-9]+)/\1,\1.\2,\1.\2.\3,\1.\2.\3-\4,latest/' ) > .tags |
| 45 | + fi |
| 46 | + echo $V > cortex-version.txt |
| 47 | + mv target/rpm/RPMS/noarch/cortex*.rpm target/ |
| 48 | + mv target/universal/cortex*.zip target/ |
42 | 49 | when:
|
43 | 50 | event: [tag]
|
44 | 51 |
|
45 | 52 | # Save external libraries in cache
|
46 |
| - - name: save cache |
| 53 | + - name: save-cache |
47 | 54 | image: drillster/drone-volume-cache
|
48 | 55 | settings:
|
49 | 56 | rebuild: true
|
| 57 | + backend: "filesystem" |
50 | 58 | mount:
|
51 | 59 | - .sbt
|
52 | 60 | - .ivy2
|
53 |
| - - www/node_modules |
| 61 | + - .cache |
| 62 | + - ui/node_modules |
| 63 | + - ui/bower_components |
54 | 64 | volumes: [{name: cache, path: /cache}]
|
55 | 65 |
|
| 66 | + # Send packages using scp |
| 67 | + - name: send packages |
| 68 | + image: appleboy/drone-scp |
| 69 | + settings: |
| 70 | + host: {from_secret: package_host} |
| 71 | + username: {from_secret: package_user} |
| 72 | + key: {from_secret: package_key} |
| 73 | + target: {from_secret: incoming_path} |
| 74 | + source: |
| 75 | + - target/cortex*.deb |
| 76 | + - target/cortex*.rpm |
| 77 | + - target/cortex*.zip |
| 78 | + strip_components: 1 |
| 79 | + when: |
| 80 | + event: [tag] |
| 81 | + |
| 82 | + # Publish packages |
56 | 83 | - name: publish packages
|
57 |
| - image: thehiveproject/drone-bintray |
| 84 | + image: appleboy/drone-ssh |
58 | 85 | settings:
|
59 |
| - user: {from_secret: bintray_user} |
60 |
| - key: {from_secret: bintray_key} |
61 |
| - subject: thehive-project |
62 |
| - package: cortex |
| 86 | + host: {from_secret: package_host} |
| 87 | + user: {from_secret: package_user} |
| 88 | + key: {from_secret: package_key} |
| 89 | + publish_script: {from_secret: publish_script} |
63 | 90 | commands:
|
64 |
| - - | |
65 |
| - export PLUGIN_USER |
66 |
| - export PLUGIN_KEY |
67 |
| - export PLUGIN_SUBJECT |
68 |
| - export PLUGIN_PACKAGE |
69 |
| - export PLUGIN_VERSION=$(cut -d\" -f2 version.sbt) |
70 |
| - echo "Publishing package version $PLUGIN_VERSION" |
71 |
| -
|
72 |
| - if echo $PLUGIN_VERSION | grep -qvi -E \ |
73 |
| - -e '^[0-9]+\.[0-9]+\.[0-9]+$' \ |
74 |
| - -e '^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+$' \ |
75 |
| - -e '^[0-9]+\.[0-9]+\.[0-9]+-RC[0-9]+$'; then |
76 |
| - echo The version $PLUGIN_VERSION has invalid format |
77 |
| - exit 1 |
78 |
| - fi |
79 |
| -
|
80 |
| - CHANNEL=stable |
81 |
| - if $(echo $PLUGIN_VERSION | grep -qi rc) |
82 |
| - then |
83 |
| - CHANNEL=beta |
84 |
| - V=$(echo $PLUGIN_VERSION | sed -e 's/-\([rR][cC]\)/-0.1\1/') |
85 |
| - DEB_FILE=target/cortex_$${V}_all.deb |
86 |
| - RPM_FILE=target/rpm/RPMS/noarch/cortex-$${V}.noarch.rpm |
87 |
| - else |
88 |
| - DEB_FILE=target/cortex_$${PLUGIN_VERSION}_all.deb |
89 |
| - RPM_FILE=target/rpm/RPMS/noarch/cortex-$${PLUGIN_VERSION}.noarch.rpm |
90 |
| - fi |
91 |
| - ZIP_FILE=target/universal/cortex-$${PLUGIN_VERSION}.zip |
92 |
| -
|
93 |
| - upload \ |
94 |
| - --file $DEB_FILE \ |
95 |
| - --repo debian-beta \ |
96 |
| - --extra-param deb_distribution=any \ |
97 |
| - --extra-param deb_component=main \ |
98 |
| - --extra-param deb_architecture=all |
99 |
| -
|
100 |
| - [ $CHANNEL = stable ] && upload \ |
101 |
| - --file $DEB_FILE \ |
102 |
| - --repo debian-stable \ |
103 |
| - --extra-param deb_distribution=any \ |
104 |
| - --extra-param deb_component=main \ |
105 |
| - --extra-param deb_architecture=all |
106 |
| -
|
107 |
| - upload \ |
108 |
| - --file $RPM_FILE \ |
109 |
| - --repo rpm-beta |
110 |
| -
|
111 |
| - [ $CHANNEL = stable ] && upload \ |
112 |
| - --file $RPM_FILE \ |
113 |
| - --repo rpm-stable |
114 |
| -
|
115 |
| - upload \ |
116 |
| - --file $ZIP_FILE \ |
117 |
| - --repo binary |
118 |
| -
|
119 |
| - LATEST_VERSION=latest |
120 |
| - [ $CHANNEL = beta ] && LATEST_VERSION=latest-beta |
121 |
| -
|
122 |
| - removeVersion \ |
123 |
| - --repo binary \ |
124 |
| - --version $LATEST_VERSION |
125 |
| -
|
126 |
| - upload \ |
127 |
| - --file $ZIP_FILE \ |
128 |
| - --repo binary \ |
129 |
| - --version $LATEST_VERSION \ |
130 |
| - --dest-file cortex-$${LATEST_VERSION}.zip |
| 91 | + - PLUGIN_SCRIPT="bash $PLUGIN_PUBLISH_SCRIPT cortex $(cat cortex-version.txt)" /bin/drone-ssh |
131 | 92 | when:
|
132 | 93 | event: [tag]
|
133 | 94 |
|
134 |
| - # Publish docker image |
| 95 | + # Publish docker image on Docker Hub |
135 | 96 | - name: docker
|
136 | 97 | image: plugins/docker
|
137 | 98 | settings:
|
138 | 99 | context: target/docker/stage
|
139 | 100 | dockerfile: target/docker/stage/Dockerfile
|
140 | 101 | repo: thehiveproject/cortex
|
141 |
| - auto_tag: true |
142 | 102 | username: {from_secret: docker_username}
|
143 | 103 | password: {from_secret: docker_password}
|
144 | 104 | when:
|
145 | 105 | event: [tag]
|
146 | 106 |
|
147 |
| - # Deploy binaries in integration environment |
148 |
| - - name: copy binaries in integration environment |
149 |
| - image: appleboy/drone-scp |
150 |
| - settings: |
151 |
| - host: {from_secret: deploy_beta_host} |
152 |
| - username: {from_secret: deploy_username} |
153 |
| - key: {from_secret: deploy_key} |
154 |
| - target: ./cortex-builds/${DRONE_BUILD_NUMBER} |
155 |
| - source: target/universal/stage |
156 |
| - strip_components: 3 |
157 |
| - when: |
158 |
| - branch: [develop] |
159 |
| - |
160 |
| - - name: deploy binaries in integration environment |
161 |
| - image: appleboy/drone-ssh |
162 |
| - settings: |
163 |
| - host: {from_secret: deploy_beta_host} |
164 |
| - username: {from_secret: deploy_username} |
165 |
| - key: {from_secret: deploy_key} |
166 |
| - script: |
167 |
| - - ./start cortex ${DRONE_BUILD_NUMBER} |
168 |
| - when: |
169 |
| - branch: [develop] |
170 |
| - |
171 |
| - # Deploy binaries in staging environment |
172 |
| - - name: copy binaries in staging environment |
173 |
| - image: appleboy/drone-scp |
| 107 | + # Publish docker image on Harbor |
| 108 | + - name: harbor |
| 109 | + image: plugins/docker |
174 | 110 | settings:
|
175 |
| - host: {from_secret: deploy_stable_host} |
176 |
| - username: {from_secret: deploy_username} |
177 |
| - key: {from_secret: deploy_key} |
178 |
| - target: ./cortex-builds/${DRONE_BUILD_NUMBER} |
179 |
| - source: target/universal/stage |
180 |
| - strip_components: 3 |
| 111 | + context: target/docker/stage |
| 112 | + dockerfile: target/docker/stage/Dockerfile |
| 113 | + registry: {from_secret: harbor_registry} |
| 114 | + repo: {from_secret: harbor_repo} |
| 115 | + username: {from_secret: harbor_username} |
| 116 | + password: {from_secret: harbor_password} |
181 | 117 | when:
|
182 |
| - branch: [master] |
| 118 | + event: [tag] |
183 | 119 |
|
184 |
| - - name: deploy binaries in staging environment |
185 |
| - image: appleboy/drone-ssh |
| 120 | + - name: send message |
| 121 | + image: thehiveproject/drone_keybase |
186 | 122 | settings:
|
187 |
| - host: {from_secret: deploy_stable_host} |
188 |
| - username: {from_secret: deploy_username} |
189 |
| - key: {from_secret: deploy_key} |
190 |
| - script: |
191 |
| - - ./start cortex ${DRONE_BUILD_NUMBER} |
| 123 | + username: {from_secret: keybase_username} |
| 124 | + paperkey: {from_secret: keybase_paperkey} |
| 125 | + channel: {from_secret: keybase_channel} |
| 126 | + commands: |
| 127 | + - | |
| 128 | + keybase oneshot -u "$PLUGIN_USERNAME" --paperkey "$PLUGIN_PAPERKEY" |
| 129 | + URL="$DRONE_SYSTEM_PROTO://$DRONE_SYSTEM_HOST/$DRONE_REPO/$DRONE_BUILD_NUMBER" |
| 130 | + if [ $DRONE_BUILD_STATUS = "success" ] |
| 131 | + then |
| 132 | + keybase chat send "$PLUGIN_CHANNEL" ":white_check_mark: $DRONE_REPO: build succeeded $URL" |
| 133 | + else |
| 134 | + keybase chat send "$PLUGIN_CHANNEL" ":x: $DRONE_REPO: build failed $URL" |
| 135 | + fi |
192 | 136 | when:
|
193 |
| - branch: [master] |
| 137 | + status: |
| 138 | + - success |
| 139 | + - failure |
194 | 140 |
|
195 | 141 | volumes:
|
196 | 142 | - name: cache
|
|
0 commit comments