mirror of
https://github.com/simon987/task_tracker.git
synced 2025-04-19 18:16:45 +00:00
Jenkins CI setup
This commit is contained in:
parent
6bc2483968
commit
d17113726e
@ -1,5 +1,5 @@
|
||||
server:
|
||||
address: "0.0.0.0:42901"
|
||||
address: "localhost:3010"
|
||||
|
||||
database:
|
||||
conn_str: "user=task_tracker password=task_tracker dbname=task_tracker sslmode=disable"
|
||||
|
79
jenkins/Jenkinsfile
vendored
79
jenkins/Jenkinsfile
vendored
@ -1,22 +1,79 @@
|
||||
def remote = [:]
|
||||
remote.name = 'remote'
|
||||
remote.host = 'localhost'
|
||||
remote.user = 'simon'
|
||||
remote.identityFile = '/var/lib/jenkins/.ssh/id_rsa'
|
||||
remote.knownHosts = '/var/lib/jenkins/.ssh/known_hosts'
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
docker {
|
||||
image 'node:10-alpine'
|
||||
}
|
||||
}
|
||||
agent none
|
||||
environment {
|
||||
CI = 'true'
|
||||
GOOS='linux'
|
||||
CGO_ENABLED='0'
|
||||
HOME='.'
|
||||
}
|
||||
stages {
|
||||
stage('Build') {
|
||||
steps {
|
||||
sh 'cd web/angular && ng build --prod --optimization'
|
||||
stage('Parallel build & test') {
|
||||
failFast true
|
||||
parallel {
|
||||
stage('Build - web') {
|
||||
agent {
|
||||
docker {
|
||||
image 'node:10-alpine'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'cd web/angular/ && npm install'
|
||||
sh 'cd web/angular/ && ./node_modules/\\@angular/cli/bin/ng build --prod --optimization --output-path "${WORKSPACE}/webroot"'
|
||||
stash includes: 'webroot/', name: 'webdist'
|
||||
}
|
||||
}
|
||||
stage('Build - api') {
|
||||
agent {
|
||||
docker {
|
||||
image 'golang:latest'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'mkdir -p /go/src/github.com/task_tracker'
|
||||
sh 'cp -r api config main storage config.yml schema.sql "/go/src/github.com/task_tracker"'
|
||||
sh 'cd /go/src/github.com/task_tracker/main && go get ./...'
|
||||
sh 'cd /go/src/github.com/task_tracker/main && go build -a -installsuffix cgo -o "${WORKSPACE}/tt_api" .'
|
||||
stash includes: 'tt_api', name: 'apidist'
|
||||
}
|
||||
}
|
||||
stage('Test - api') {
|
||||
agent {
|
||||
docker {
|
||||
image 'golang:latest'
|
||||
args '--network "host"'
|
||||
}
|
||||
}
|
||||
steps {
|
||||
sh 'mkdir -p /go/src/github.com/task_tracker'
|
||||
sh 'cp -r api config main storage test config.yml schema.sql "/go/src/github.com/task_tracker"'
|
||||
sh 'cd /go/src/github.com/task_tracker/ && go get -t ./test/...'
|
||||
sh 'cd /go/src/github.com/task_tracker/test && go test .'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage('Deliver') {
|
||||
stage('Deploy') {
|
||||
agent none
|
||||
steps {
|
||||
sh './jenkins/deploy.sh'
|
||||
node('master') {
|
||||
unstash 'webdist'
|
||||
unstash 'apidist'
|
||||
sshPut remote: remote, from: 'tt_api', into: 'task_tracker/'
|
||||
sshPut remote: remote, from: 'config.yml', into: 'task_tracker/'
|
||||
sshPut remote: remote, from: 'schema.sql', into: 'task_tracker/'
|
||||
sshPut remote: remote, from: 'webroot/', into: 'task_tracker'
|
||||
sshPut remote: remote, from: 'jenkins/deploy.sh', into: 'task_tracker/'
|
||||
sshCommand remote: remote, command: 'chmod +x task_tracker/deploy.sh && ./task_tracker/deploy.sh'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
13
jenkins/deploy.sh
Normal file → Executable file
13
jenkins/deploy.sh
Normal file → Executable file
@ -1,4 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
#!/bin/bash
|
||||
|
||||
cp web/angular/dist/ /home/drone/task_tracker/webroot/
|
||||
echo "test"
|
||||
export TTROOT="task_tracker"
|
||||
|
||||
chmod 755 -R "${TTROOT}/webroot"
|
||||
|
||||
screen -S tt_api -X quit
|
||||
echo "starting client"
|
||||
screen -S tt_api -d -m bash -c "cd ${TTROOT} && ./tt_api"
|
||||
sleep 1
|
||||
screen -list
|
||||
|
@ -21,9 +21,22 @@ func New() *Database {
|
||||
d := Database{}
|
||||
d.workerCache = make(map[int64]*Worker)
|
||||
|
||||
d.init()
|
||||
|
||||
return &d
|
||||
}
|
||||
|
||||
func (database *Database) init() {
|
||||
|
||||
db := database.getDB()
|
||||
|
||||
_, err := db.Exec(`SELECT * FROM project`)
|
||||
if err != nil {
|
||||
logrus.Info("Database first time setup")
|
||||
database.Reset()
|
||||
}
|
||||
}
|
||||
|
||||
func (database *Database) Reset() {
|
||||
|
||||
file, err := os.Open("./schema.sql")
|
||||
|
@ -209,7 +209,6 @@ func (database *Database) GetSecret(pid int64, workerId int64) (secret string, e
|
||||
}
|
||||
|
||||
err = row.Scan(&secret)
|
||||
handleErr(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@ server:
|
||||
address: "127.0.0.1:5001"
|
||||
|
||||
database:
|
||||
conn_str: "user=task_tracker password=task_tracker dbname=task_tracker sslmode=disable"
|
||||
conn_str: "user=task_tracker password=task_tracker dbname=task_tracker_test sslmode=disable"
|
||||
log_levels: ["debug", "error", "trace", "info", "warn"]
|
||||
|
||||
git:
|
||||
|
604
web/angular/package-lock.json
generated
604
web/angular/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -33,8 +33,8 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-devkit/build-angular": "~0.12.0",
|
||||
"@angular/cli": "~7.2.2",
|
||||
"@angular/compiler-cli": "~7.2.0",
|
||||
"@angular/cli": "^7.2.4",
|
||||
"@angular/compiler-cli": "^7.2.6",
|
||||
"@angular/language-service": "~7.2.0",
|
||||
"@types/chart.js": "^2.7.42",
|
||||
"@types/jasmine": "~2.8.8",
|
||||
|
@ -6,7 +6,7 @@ import {Credentials} from "./models/credentials";
|
||||
@Injectable()
|
||||
export class ApiService {
|
||||
|
||||
public url: string = "http://localhost/api";
|
||||
public url: string = "https://tt.simon987.net/api";
|
||||
private options: {
|
||||
withCredentials: true,
|
||||
responseType: "json"
|
||||
|
Loading…
x
Reference in New Issue
Block a user