mirror of
https://github.com/criyle/go-judge.git
synced 2025-11-04 14:50:02 +08:00
add /version api
This commit is contained in:
parent
20d2815e86
commit
716c2cdc4e
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@ -4,7 +4,7 @@ on:
|
|||||||
branches: [master]
|
branches: [master]
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: Build
|
name: Build-Linux
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
GOARCH: [amd64]
|
GOARCH: [amd64]
|
||||||
@ -22,6 +22,7 @@ jobs:
|
|||||||
GOOS: linux
|
GOOS: linux
|
||||||
GOARCH: ${{ matrix.GOARCH }}
|
GOARCH: ${{ matrix.GOARCH }}
|
||||||
run: |
|
run: |
|
||||||
|
go generate ./cmd/executorserver
|
||||||
go build -o executorserver ./cmd/executorserver
|
go build -o executorserver ./cmd/executorserver
|
||||||
- name: Build shared objects
|
- name: Build shared objects
|
||||||
env:
|
env:
|
||||||
@ -58,6 +59,7 @@ jobs:
|
|||||||
run: go mod download
|
run: go mod download
|
||||||
- name: Build on Windows
|
- name: Build on Windows
|
||||||
run: |
|
run: |
|
||||||
|
go generate ./cmd/executorserver
|
||||||
go build -o executorserver.exe ./cmd/executorserver
|
go build -o executorserver.exe ./cmd/executorserver
|
||||||
go build -buildmode=c-shared -o executorserver.dll ./cmd/ffi
|
go build -buildmode=c-shared -o executorserver.dll ./cmd/ffi
|
||||||
- name: Upload executorserver.exe on Windows
|
- name: Upload executorserver.exe on Windows
|
||||||
@ -83,6 +85,7 @@ jobs:
|
|||||||
run: go mod download
|
run: go mod download
|
||||||
- name: Build on MacOS
|
- name: Build on MacOS
|
||||||
run: |
|
run: |
|
||||||
|
go generate ./cmd/executorserver
|
||||||
go build -o executorserver ./cmd/executorserver
|
go build -o executorserver ./cmd/executorserver
|
||||||
go build -buildmode=c-shared -o executorserver.dylib ./cmd/ffi
|
go build -buildmode=c-shared -o executorserver.dylib ./cmd/ffi
|
||||||
- name: Upload executorserver
|
- name: Upload executorserver
|
||||||
|
|||||||
@ -30,6 +30,7 @@ A rest service to run program in restricted environment and it is basically a wr
|
|||||||
- /ws WebSocket for /run
|
- /ws WebSocket for /run
|
||||||
- /metrics prometheus metrics (specifies `METRICS=1` environment variable to enable metrics)
|
- /metrics prometheus metrics (specifies `METRICS=1` environment variable to enable metrics)
|
||||||
- /debug (specifies `DEBUG=1` environment variable to enable go runtime debug endpoint)
|
- /debug (specifies `DEBUG=1` environment variable to enable go runtime debug endpoint)
|
||||||
|
- /version gets build git version (e.g. `v0.6.4-1-g20d2815`) together with runtime information (go version, os, platform)
|
||||||
|
|
||||||
### Install & Run Developing Server
|
### Install & Run Developing Server
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
"github.com/criyle/go-judge/cmd/executorserver/model"
|
"github.com/criyle/go-judge/cmd/executorserver/model"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
@ -34,3 +35,12 @@ func handleRun(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, model.ConvertResponse(rt).Results)
|
c.JSON(http.StatusOK, model.ConvertResponse(rt).Results)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func handleVersion(c *gin.Context) {
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"buildVersion": Version,
|
||||||
|
"goVersion": runtime.Version(),
|
||||||
|
"platform": runtime.GOARCH,
|
||||||
|
"os": runtime.GOOS,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
3
cmd/executorserver/gen.go
Normal file
3
cmd/executorserver/gen.go
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
//go:generate go run genversion.go
|
||||||
33
cmd/executorserver/genversion.go
Normal file
33
cmd/executorserver/genversion.go
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
// +build ignore
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"log"
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var ret bytes.Buffer
|
||||||
|
c := exec.Command("git", "describe", "--tags")
|
||||||
|
c.Stdout = &ret
|
||||||
|
|
||||||
|
if err := c.Run(); err != nil {
|
||||||
|
log.Fatalln("run git describe", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
fmt.Fprintln(&buf, "// Code generated by go generate; DO NOT EDIT.")
|
||||||
|
fmt.Fprintln(&buf)
|
||||||
|
fmt.Fprintln(&buf, "package main")
|
||||||
|
fmt.Fprintln(&buf)
|
||||||
|
fmt.Fprintf(&buf, "const Version = `%s`", strings.TrimSpace(ret.String()))
|
||||||
|
|
||||||
|
if err := ioutil.WriteFile("version.go", buf.Bytes(), 0644); err != nil {
|
||||||
|
log.Fatalln("write file", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -171,6 +171,9 @@ func main() {
|
|||||||
p.Use(r)
|
p.Use(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Version handle
|
||||||
|
r.GET("/version", handleVersion)
|
||||||
|
|
||||||
// Add auth token
|
// Add auth token
|
||||||
if *token != "" {
|
if *token != "" {
|
||||||
r.Use(tokenAuth(*token))
|
r.Use(tokenAuth(*token))
|
||||||
|
|||||||
5
cmd/executorserver/version.go
Normal file
5
cmd/executorserver/version.go
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// Code generated by go generate; DO NOT EDIT.
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
const Version = `v0.6.4-1-g20d2815`
|
||||||
Loading…
Reference in New Issue
Block a user