mirror of
https://gitea.com/gitea/runner.git
synced 2026-11-08 16:20:29 +00:00
perf: speed up job setup, action preparation and the cache server (#1327)
- Look up containers by name instead of listing all of them - On Linux, cache the docker proxy discovery instead of starting a probe container per job - Download a job's actions concurrently and share identical fetches between concurrent jobs - Cache `runner.arch` per run and poll service health every 250ms - Cache server: queue on an in-process lock instead of polling the database file lock, upload S3 objects up to 64MiB in one request and larger ones in 4 concurrent parts | `exec`, median of 5 | Before | After | |---|---:|---:| | 1 step | 1.70s | 0.87s | | 10 steps | 2.84s | 1.97s | | Service + step | 3.78s | 2.18s | | checkout + Node action | 3.64s | 2.52s | Reviewed-on: https://gitea.com/gitea/runner/pulls/1327 Reviewed-by: Zettat123 <[email protected]>
This commit is contained in:
1 parent
af2b3f6df5
commit
1a7f09224f
26 files changed
+688
-140
No files matched your search
@@ -6,6 +6,7 @@ package runner
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"gitea.dev/actionslib/pkg/exprparser"
|
||||
@@ -500,3 +501,22 @@ jobs:
|
||||
assert.NotContains(t, a, "s3cr3t") // it reaches the container name, which no log masker covers
|
||||
assert.NotEqual(t, a, b) // masking the name must not collapse two jobs onto one container
|
||||
}
|
||||
|
||||
func TestNewExpressionEvaluatorReadsJobOutputsWhileCombinationsWriteThem(t *testing.T) {
|
||||
rc := createRunContext(t)
|
||||
rc.caller = &caller{runContext: createRunContext(t)}
|
||||
rc.ExprEval = rc.NewExpressionEvaluator(t.Context())
|
||||
job := rc.Run.Job()
|
||||
var writes sync.WaitGroup
|
||||
writes.Go(func() {
|
||||
for range 100 {
|
||||
unlock := lockJob(job)
|
||||
job.Outputs = map[string]string{"out": "value"}
|
||||
unlock()
|
||||
}
|
||||
})
|
||||
for range 100 {
|
||||
rc.NewExpressionEvaluator(t.Context())
|
||||
}
|
||||
writes.Wait()
|
||||
}
|
||||
Reference in new issue
Block a user