mirror of
https://github.com/terorie/od-database-crawler.git
synced 2025-04-18 18:06:45 +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 (
|
||||
"bytes"
|
||||
"crypto"
|
||||
"crypto/hmac"
|
||||
"encoding/hex"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"github.com/fasthttp/websocket"
|
||||
@ -17,7 +15,6 @@ import (
|
||||
"net/url"
|
||||
"os"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
var serverWorker *TrackerWorker
|
||||
@ -215,39 +212,14 @@ type ServerTripper struct{}
|
||||
func (t *ServerTripper) RoundTrip(req *http.Request) (res *http.Response, err error) {
|
||||
req.Header.Set("User-Agent", serverUserAgent)
|
||||
|
||||
//TODO: Move this whole block elsewhere
|
||||
//TODO: Use task_tracker/client ?
|
||||
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("Timestamp", time.Now().Format(time.RFC1123))
|
||||
req.Header.Add("X-Signature", sig)
|
||||
|
||||
req.Header.Add("X-Secret", base64.StdEncoding.EncodeToString(serverWorker.Secret))
|
||||
}
|
||||
return http.DefaultTransport.RoundTrip(req)
|
||||
}
|
||||
|
||||
const mimeJSON = "application/json"
|
||||
|
||||
// https://github.com/simon987/task_tracker/blob/master/api/models.go
|
||||
|
||||
type releaseTaskRequest struct {
|
||||
|
Loading…
x
Reference in New Issue
Block a user