mirror of
https://github.com/go-gitea/gitea.git
synced 2024-09-01 14:56:30 +00:00
Merge branch 'main' into pacman-packages
This commit is contained in:
commit
42587dde80
@ -268,6 +268,40 @@ The runner will fetch jobs from the Gitea instance and run them automatically.
|
|||||||
|
|
||||||
Since act runner is still in development, it is recommended to check the latest version and upgrade it regularly.
|
Since act runner is still in development, it is recommended to check the latest version and upgrade it regularly.
|
||||||
|
|
||||||
|
## Systemd service
|
||||||
|
|
||||||
|
It is also possible to run act-runner as a [systemd](https://en.wikipedia.org/wiki/Systemd) service. Create an unprivileged `act_runner` user on your system, and the following file in `/etc/systemd/system/act_runner.service`. The paths in `ExecStart` and `WorkingDirectory` may need to be adjusted depending on where you installed the `act_runner` binary, its configuration file, and the home directory of the `act_runner` user.
|
||||||
|
|
||||||
|
```ini
|
||||||
|
[Unit]
|
||||||
|
Description=Gitea Actions runner
|
||||||
|
Documentation=https://gitea.com/gitea/act_runner
|
||||||
|
After=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml
|
||||||
|
ExecReload=/bin/kill -s HUP $MAINPID
|
||||||
|
WorkingDirectory=/var/lib/act_runner
|
||||||
|
TimeoutSec=0
|
||||||
|
RestartSec=10
|
||||||
|
Restart=always
|
||||||
|
User=act_runner
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
```
|
||||||
|
|
||||||
|
Then:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# load the new systemd unit file
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
# start the service and enable it at boot
|
||||||
|
sudo systemctl enable act_runner --now
|
||||||
|
```
|
||||||
|
|
||||||
|
If using Docker, the `act_runner` user should also be added to the `docker` group before starting the service. Keep in mind that this effectively gives `act_runner` root access to the system [[1]](https://docs.docker.com/engine/security/#docker-daemon-attack-surface).
|
||||||
|
|
||||||
## Configuration variable
|
## Configuration variable
|
||||||
|
|
||||||
You can create configuration variables on the user, organization and repository level.
|
You can create configuration variables on the user, organization and repository level.
|
||||||
|
@ -7,6 +7,7 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StorageType is a type of Storage
|
// StorageType is a type of Storage
|
||||||
@ -249,14 +250,24 @@ func getStorageForMinio(targetSec, overrideSec ConfigSection, tp targetSecType,
|
|||||||
return nil, fmt.Errorf("map minio config failed: %v", err)
|
return nil, fmt.Errorf("map minio config failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if storage.MinioConfig.BasePath == "" {
|
var defaultPath string
|
||||||
storage.MinioConfig.BasePath = name + "/"
|
if storage.MinioConfig.BasePath != "" {
|
||||||
|
if tp == targetSecIsStorage || tp == targetSecIsDefault {
|
||||||
|
defaultPath = strings.TrimSuffix(storage.MinioConfig.BasePath, "/") + "/" + name + "/"
|
||||||
|
} else {
|
||||||
|
defaultPath = storage.MinioConfig.BasePath
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if defaultPath == "" {
|
||||||
|
defaultPath = name + "/"
|
||||||
}
|
}
|
||||||
|
|
||||||
if overrideSec != nil {
|
if overrideSec != nil {
|
||||||
storage.MinioConfig.ServeDirect = ConfigSectionKeyBool(overrideSec, "SERVE_DIRECT", storage.MinioConfig.ServeDirect)
|
storage.MinioConfig.ServeDirect = ConfigSectionKeyBool(overrideSec, "SERVE_DIRECT", storage.MinioConfig.ServeDirect)
|
||||||
storage.MinioConfig.BasePath = ConfigSectionKeyString(overrideSec, "MINIO_BASE_PATH", storage.MinioConfig.BasePath)
|
storage.MinioConfig.BasePath = ConfigSectionKeyString(overrideSec, "MINIO_BASE_PATH", defaultPath)
|
||||||
storage.MinioConfig.Bucket = ConfigSectionKeyString(overrideSec, "MINIO_BUCKET", storage.MinioConfig.Bucket)
|
storage.MinioConfig.Bucket = ConfigSectionKeyString(overrideSec, "MINIO_BUCKET", storage.MinioConfig.Bucket)
|
||||||
|
} else {
|
||||||
|
storage.MinioConfig.BasePath = defaultPath
|
||||||
}
|
}
|
||||||
return &storage, nil
|
return &storage, nil
|
||||||
}
|
}
|
||||||
|
@ -412,3 +412,56 @@ MINIO_USE_SSL = true
|
|||||||
assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL)
|
assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL)
|
||||||
assert.EqualValues(t, "repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
|
assert.EqualValues(t, "repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_getStorageConfiguration28(t *testing.T) {
|
||||||
|
cfg, err := NewConfigProviderFromData(`
|
||||||
|
[storage]
|
||||||
|
STORAGE_TYPE = minio
|
||||||
|
MINIO_ACCESS_KEY_ID = my_access_key
|
||||||
|
MINIO_SECRET_ACCESS_KEY = my_secret_key
|
||||||
|
MINIO_USE_SSL = true
|
||||||
|
MINIO_BASE_PATH = /prefix
|
||||||
|
`)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, loadRepoArchiveFrom(cfg))
|
||||||
|
assert.EqualValues(t, "my_access_key", RepoArchive.Storage.MinioConfig.AccessKeyID)
|
||||||
|
assert.EqualValues(t, "my_secret_key", RepoArchive.Storage.MinioConfig.SecretAccessKey)
|
||||||
|
assert.EqualValues(t, true, RepoArchive.Storage.MinioConfig.UseSSL)
|
||||||
|
assert.EqualValues(t, "/prefix/repo-archive/", RepoArchive.Storage.MinioConfig.BasePath)
|
||||||
|
|
||||||
|
cfg, err = NewConfigProviderFromData(`
|
||||||
|
[storage]
|
||||||
|
STORAGE_TYPE = minio
|
||||||
|
MINIO_ACCESS_KEY_ID = my_access_key
|
||||||
|
MINIO_SECRET_ACCESS_KEY = my_secret_key
|
||||||
|
MINIO_USE_SSL = true
|
||||||
|
MINIO_BASE_PATH = /prefix
|
||||||
|
|
||||||
|
[lfs]
|
||||||
|
MINIO_BASE_PATH = /lfs
|
||||||
|
`)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, loadLFSFrom(cfg))
|
||||||
|
assert.EqualValues(t, "my_access_key", LFS.Storage.MinioConfig.AccessKeyID)
|
||||||
|
assert.EqualValues(t, "my_secret_key", LFS.Storage.MinioConfig.SecretAccessKey)
|
||||||
|
assert.EqualValues(t, true, LFS.Storage.MinioConfig.UseSSL)
|
||||||
|
assert.EqualValues(t, "/lfs", LFS.Storage.MinioConfig.BasePath)
|
||||||
|
|
||||||
|
cfg, err = NewConfigProviderFromData(`
|
||||||
|
[storage]
|
||||||
|
STORAGE_TYPE = minio
|
||||||
|
MINIO_ACCESS_KEY_ID = my_access_key
|
||||||
|
MINIO_SECRET_ACCESS_KEY = my_secret_key
|
||||||
|
MINIO_USE_SSL = true
|
||||||
|
MINIO_BASE_PATH = /prefix
|
||||||
|
|
||||||
|
[storage.lfs]
|
||||||
|
MINIO_BASE_PATH = /lfs
|
||||||
|
`)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, loadLFSFrom(cfg))
|
||||||
|
assert.EqualValues(t, "my_access_key", LFS.Storage.MinioConfig.AccessKeyID)
|
||||||
|
assert.EqualValues(t, "my_secret_key", LFS.Storage.MinioConfig.SecretAccessKey)
|
||||||
|
assert.EqualValues(t, true, LFS.Storage.MinioConfig.UseSSL)
|
||||||
|
assert.EqualValues(t, "/lfs", LFS.Storage.MinioConfig.BasePath)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user