Skip to content
Snippets Groups Projects
Commit 3d54d71b authored by Tomasz Maczukin's avatar Tomasz Maczukin
Browse files

Merge branch '2500-unregister-all-runners' into 'master'

Adds an option `--all` to unregister command

Closes #2500

See merge request !622
parents 9cc2ebc7 43fde65a
No related branches found
No related tags found
No related merge requests found
...@@ -11,40 +11,61 @@ import ( ...@@ -11,40 +11,61 @@ import (
type UnregisterCommand struct { type UnregisterCommand struct {
configOptions configOptions
common.RunnerCredentials common.RunnerCredentials
network common.Network network common.Network
Name string `toml:"name" json:"name" short:"n" long:"name" description:"Name of the runner you wish to unregister"` Name string `toml:"name" json:"name" short:"n" long:"name" description:"Name of the runner you wish to unregister"`
AllRunners bool `toml:"all_runners" json:"all-runners" long:"all-runners" description:"Unregister all runners"`
} }
func (c *UnregisterCommand) Execute(context *cli.Context) { func (c *UnregisterCommand) unregisterAllRunners() (runners []*common.RunnerConfig) {
userModeWarning(false) log.Warningln("Unregistering all runners")
for _, r := range c.config.Runners {
err := c.loadConfig() if !c.network.UnregisterRunner(r.RunnerCredentials) {
if err != nil { log.Errorln("Failed to unregister runner", r.Name)
log.Fatalln(err) //If unregister fails, leave the runner in the config
return runners = append(runners, r)
}
} }
return
}
if len(c.Name) > 0 { func (c *UnregisterCommand) unregisterSingleRunner() (runners []*common.RunnerConfig) {
if len(c.Name) > 0 { // Unregister when given a name
runnerConfig, err := c.RunnerByName(c.Name) runnerConfig, err := c.RunnerByName(c.Name)
if err != nil { if err != nil {
log.Fatalln(err) log.Fatalln(err)
return
} }
c.RunnerCredentials = runnerConfig.RunnerCredentials c.RunnerCredentials = runnerConfig.RunnerCredentials
} }
// Unregister given Token and URL of the runner
if !c.network.UnregisterRunner(c.RunnerCredentials) { if !c.network.UnregisterRunner(c.RunnerCredentials) {
log.Fatalln("Failed to unregister runner", c.Name) log.Fatalln("Failed to unregister runner", c.Name)
return
} }
runners := []*common.RunnerConfig{}
for _, otherRunner := range c.config.Runners { for _, otherRunner := range c.config.Runners {
if otherRunner.RunnerCredentials == c.RunnerCredentials { if otherRunner.RunnerCredentials == c.RunnerCredentials {
continue continue
} }
runners = append(runners, otherRunner) runners = append(runners, otherRunner)
} }
return
}
func (c *UnregisterCommand) Execute(context *cli.Context) {
userModeWarning(false)
err := c.loadConfig()
if err != nil {
log.Fatalln(err)
return
}
var runners []*common.RunnerConfig
if c.AllRunners {
runners = c.unregisterAllRunners()
} else {
runners = c.unregisterSingleRunner()
}
// check if anything changed // check if anything changed
if len(c.config.Runners) == len(runners) { if len(c.config.Runners) == len(runners) {
......
...@@ -248,9 +248,12 @@ gitlab-runner verify --delete ...@@ -248,9 +248,12 @@ gitlab-runner verify --delete
### gitlab-runner unregister ### gitlab-runner unregister
This command allows to unregister one of the registered runners. It expects either This command allows to unregister one of the registered runners. It expects
a full URL and the runner's token, or the runner's name. First get the runner's details by either a full URL and the runner's token, or the runner's name. With the
executing `gitlab-runner list`: `--all-runners` option it will unregister all the attached runners.
To unregister a specific runner, first get the runner's details by executing
`gitlab-runner list`:
```bash ```bash
test-runner Executor=shell Token=t0k3n URL=http://gitlab.example.com test-runner Executor=shell Token=t0k3n URL=http://gitlab.example.com
...@@ -276,6 +279,12 @@ gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n ...@@ -276,6 +279,12 @@ gitlab-runner unregister --url http://gitlab.example.com/ --token t0k3n
gitlab-runner unregister --name test-runner gitlab-runner unregister --name test-runner
``` ```
#### All Runners:
```bash
gitlab-runner unregister --all-runners
```
## Service-related commands ## Service-related commands
The following commands allow you to manage the runner as a system or user The following commands allow you to manage the runner as a system or user
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment