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]
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
name: Build-Linux
|
||||
strategy:
|
||||
matrix:
|
||||
GOARCH: [amd64]
|
||||
@ -22,6 +22,7 @@ jobs:
|
||||
GOOS: linux
|
||||
GOARCH: ${{ matrix.GOARCH }}
|
||||
run: |
|
||||
go generate ./cmd/executorserver
|
||||
go build -o executorserver ./cmd/executorserver
|
||||
- name: Build shared objects
|
||||
env:
|
||||
@ -58,6 +59,7 @@ jobs:
|
||||
run: go mod download
|
||||
- name: Build on Windows
|
||||
run: |
|
||||
go generate ./cmd/executorserver
|
||||
go build -o executorserver.exe ./cmd/executorserver
|
||||
go build -buildmode=c-shared -o executorserver.dll ./cmd/ffi
|
||||
- name: Upload executorserver.exe on Windows
|
||||
@ -83,6 +85,7 @@ jobs:
|
||||
run: go mod download
|
||||
- name: Build on MacOS
|
||||
run: |
|
||||
go generate ./cmd/executorserver
|
||||
go build -o executorserver ./cmd/executorserver
|
||||
go build -buildmode=c-shared -o executorserver.dylib ./cmd/ffi
|
||||
- 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
|
||||
- /metrics prometheus metrics (specifies `METRICS=1` environment variable to enable metrics)
|
||||
- /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
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"runtime"
|
||||
|
||||
"github.com/criyle/go-judge/cmd/executorserver/model"
|
||||
"github.com/gin-gonic/gin"
|
||||
@ -34,3 +35,12 @@ func handleRun(c *gin.Context) {
|
||||
}
|
||||
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)
|
||||
}
|
||||
|
||||
// Version handle
|
||||
r.GET("/version", handleVersion)
|
||||
|
||||
// Add auth token
|
||||
if *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