1
0
Fork 0
mirror of https://code.forgejo.org/forgejo/runner.git synced 2025-08-31 18:30:58 +00:00

chore: panic if a random name cannot be created (#853)

If that happens so much will go wrong that there is no point in continuing to do anything. It simplifies the requirements of the caller: it may be a function that is assumed to never error.

<!--start release-notes-assistant-->
<!--URL:https://code.forgejo.org/forgejo/runner-->
- other
  - [PR](https://code.forgejo.org/forgejo/runner/pulls/853): <!--number 853 --><!--line 0 --><!--description Y2hvcmU6IHBhbmljIGlmIGEgcmFuZG9tIG5hbWUgY2Fubm90IGJlIGNyZWF0ZWQ=-->chore: panic if a random name cannot be created<!--description-->
<!--end release-notes-assistant-->

Reviewed-on: https://code.forgejo.org/forgejo/runner/pulls/853
Reviewed-by: Mathieu Fenniak <mfenniak@noreply.code.forgejo.org>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
This commit is contained in:
Earl Warren 2025-08-14 15:46:01 +00:00 committed by earl-warren
parent 987efff021
commit 0ff1ec4c04
No known key found for this signature in database
GPG key ID: F128CBE6AB3A7201
4 changed files with 14 additions and 18 deletions

View file

@ -167,11 +167,7 @@ func (h *Handler) ExternalURL() string {
// The function returns the 32-bit random key which the run will use to identify itself.
func (h *Handler) AddRun(data RunData) (string, error) {
for retries := 0; retries < 3; retries++ {
key, err := common.RandName(4)
if err != nil {
return "", errors.New("Could not generate the run id")
}
key := common.MustRandName(4)
_, loaded := h.runs.LoadOrStore(key, data)
if !loaded {
// The key was unique and added successfully

View file

@ -5,12 +5,21 @@ package common
import (
"crypto/rand"
"encoding/hex"
"fmt"
)
func RandName(size int) (string, error) {
func randName(size int) (string, error) {
randBytes := make([]byte, size)
if _, err := rand.Read(randBytes); err != nil {
return "", err
}
return hex.EncodeToString(randBytes), nil
}
func MustRandName(size int) string {
name, err := randName(size)
if err != nil {
panic(fmt.Errorf("RandName(%d): %v", size, err))
}
return name
}

View file

@ -39,10 +39,7 @@ func (c GoGitActionCache) Fetch(ctx context.Context, cacheDir, url, ref, token s
if err != nil {
return "", err
}
branchName, err := common.RandName(12)
if err != nil {
return "", err
}
branchName := common.MustRandName(12)
var auth transport.AuthMethod
if token != "" {

View file

@ -283,10 +283,7 @@ func (rc *RunContext) startHostEnvironment() common.Executor {
return true
})
cacheDir := rc.ActionCacheDir()
randName, err := common.RandName(8)
if err != nil {
return err
}
randName := common.MustRandName(8)
miscpath := filepath.Join(cacheDir, randName)
actPath := filepath.Join(miscpath, "act")
if err := os.MkdirAll(actPath, 0o777); err != nil {
@ -624,10 +621,7 @@ func (rc *RunContext) sh(ctx context.Context, script string) (stdout, stderr str
env[k] = v
}
base, err := common.RandName(8)
if err != nil {
return "", "", err
}
base := common.MustRandName(8)
name := base + ".sh"
oldStdout, oldStderr := rc.JobContainer.ReplaceLogWriter(hout, herr)
err = rc.JobContainer.Copy(rc.JobContainer.GetActPath(), &container.FileEntry{