mirror of
https://github.com/terorie/od-database-crawler.git
synced 2025-04-19 10:26:43 +00:00
Jenkins setup
This commit is contained in:
parent
76bc8293d6
commit
860fa79327
47
jenkins/Jenkinsfile
vendored
Normal file
47
jenkins/Jenkinsfile
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
def remote = [:]
|
||||||
|
remote.name = 'remote'
|
||||||
|
remote.host = env.DEPLOY_HOST
|
||||||
|
remote.user = env.DEPLOY_USER
|
||||||
|
remote.identityFile = '/var/lib/jenkins/.ssh/id_rsa'
|
||||||
|
remote.knownHosts = '/var/lib/jenkins/.ssh/known_hosts'
|
||||||
|
remote.allowAnyHosts = true
|
||||||
|
remote.retryCount = 3
|
||||||
|
remote.retryWaitSec = 3
|
||||||
|
logLevel = 'FINER'
|
||||||
|
|
||||||
|
pipeline {
|
||||||
|
agent none
|
||||||
|
environment {
|
||||||
|
GOOS='linux'
|
||||||
|
CGO_ENABLED='0'
|
||||||
|
HOME='.'
|
||||||
|
}
|
||||||
|
stages {
|
||||||
|
stage('Build') {
|
||||||
|
agent {
|
||||||
|
docker {
|
||||||
|
image 'golang:latest'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
sh 'mkdir -p /go/src/github.com/terorie/od-database-crawler'
|
||||||
|
sh 'cp -r *.go fasturl ds jenkins/build.sh "/go/src/github.com/terorie/od-database-crawler"'
|
||||||
|
sh 'cd /go/src/github.com/terorie/od-database-crawler && go get ./...'
|
||||||
|
sh './jenkins/build.sh'
|
||||||
|
stash includes: 'dist/', name: 'dist'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage('Deploy') {
|
||||||
|
agent none
|
||||||
|
steps {
|
||||||
|
node('master') {
|
||||||
|
unstash 'dist'
|
||||||
|
sshCommand remote: remote, command: "ls od-database-crawler/"
|
||||||
|
sshPut remote: remote, from: 'dist/', into: 'od-database-crawler'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
23
jenkins/build.sh
Executable file
23
jenkins/build.sh
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
appname="od-database-crawler"
|
||||||
|
outdir="dist/"
|
||||||
|
tag="${BUILD_ID}_$(date +%Y-%m-%d)"
|
||||||
|
|
||||||
|
rm -rf "./${outdir}"
|
||||||
|
mkdir build 2> /dev/null
|
||||||
|
|
||||||
|
name=${outdir}${appname}-${tag}-linux
|
||||||
|
GOOS="linux" GOARCH="amd64" go build -ldflags="-s -w" -o ${name}
|
||||||
|
gzip -f ${name}
|
||||||
|
echo ${name}
|
||||||
|
|
||||||
|
name=${outdir}${appname}-${tag}-mac
|
||||||
|
GOOS="darwin" GOARCH="amd64" go build -ldflags="-s -w" -o ${name}
|
||||||
|
gzip -f ${name}
|
||||||
|
echo ${name}
|
||||||
|
|
||||||
|
name=${outdir}${appname}-${tag}-freebsd
|
||||||
|
GOOS="freebsd" GOARCH="amd64" go build -ldflags="-s -w" -o ${name}
|
||||||
|
gzip -f ${name}
|
||||||
|
echo ${name}
|
34
server.go
34
server.go
@ -2,9 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto"
|
"encoding/base64"
|
||||||
"crypto/hmac"
|
|
||||||
"encoding/hex"
|
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/fasthttp/websocket"
|
"github.com/fasthttp/websocket"
|
||||||
@ -17,7 +15,6 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var serverWorker *TrackerWorker
|
var serverWorker *TrackerWorker
|
||||||
@ -215,39 +212,14 @@ type ServerTripper struct{}
|
|||||||
func (t *ServerTripper) RoundTrip(req *http.Request) (res *http.Response, err error) {
|
func (t *ServerTripper) RoundTrip(req *http.Request) (res *http.Response, err error) {
|
||||||
req.Header.Set("User-Agent", serverUserAgent)
|
req.Header.Set("User-Agent", serverUserAgent)
|
||||||
|
|
||||||
//TODO: Move this whole block elsewhere
|
//TODO: Use task_tracker/client ?
|
||||||
if serverWorker != nil {
|
if serverWorker != nil {
|
||||||
var content []byte
|
|
||||||
if req.Method == "GET" {
|
|
||||||
content = []byte("/task/get/" + strconv.Itoa(config.TrackerProject))
|
|
||||||
} else {
|
|
||||||
//todo: this is retarded and should be moved elsewhere
|
|
||||||
buf, _ := ioutil.ReadAll(req.Body)
|
|
||||||
rdr1 := ioutil.NopCloser(bytes.NewBuffer(buf))
|
|
||||||
rdr2 := ioutil.NopCloser(bytes.NewBuffer(buf))
|
|
||||||
|
|
||||||
content, _ = ioutil.ReadAll(rdr1)
|
|
||||||
|
|
||||||
req.Body = rdr2
|
|
||||||
}
|
|
||||||
|
|
||||||
ts := time.Now().Format(time.RFC1123)
|
|
||||||
|
|
||||||
mac := hmac.New(crypto.SHA256.New, serverWorker.Secret)
|
|
||||||
mac.Write(content)
|
|
||||||
mac.Write([]byte(ts))
|
|
||||||
sig := hex.EncodeToString(mac.Sum(nil))
|
|
||||||
|
|
||||||
req.Header.Add("X-Worker-Id", strconv.Itoa(serverWorker.Id))
|
req.Header.Add("X-Worker-Id", strconv.Itoa(serverWorker.Id))
|
||||||
req.Header.Add("Timestamp", time.Now().Format(time.RFC1123))
|
req.Header.Add("X-Secret", base64.StdEncoding.EncodeToString(serverWorker.Secret))
|
||||||
req.Header.Add("X-Signature", sig)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
return http.DefaultTransport.RoundTrip(req)
|
return http.DefaultTransport.RoundTrip(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
const mimeJSON = "application/json"
|
|
||||||
|
|
||||||
// https://github.com/simon987/task_tracker/blob/master/api/models.go
|
// https://github.com/simon987/task_tracker/blob/master/api/models.go
|
||||||
|
|
||||||
type releaseTaskRequest struct {
|
type releaseTaskRequest struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user