What a run can do
A run reads. It does not change anything.- It reads one repository. Its token covers only the repository you choose. The token can read the files, the workflow runs and the checks. It has no write permission.
- It cannot push, open a pull request or write to a tracker. It holds no credential that can write.
- It gets no build variables and no destinations. See Destinations and secrets.
- It never starts a build. The agent reads text from the repository, and that text can try to steer the agent. So a member reads each issue first. See Why an issue from outside the team waits.
Before you start
- You need the Edit factory settings permission.
- The factory needs a connected GitHub repository. See Connect a repository.
- The factory needs a self-hosted runner whose builds run in a microVM or a container. See Container builds.
- It has sent a heartbeat within three of its own poll intervals. Otherwise OuterLayer counts it as not running.
- Its builds do not run with
shared-userisolation. - It is not a managed runner. A managed runner takes no scheduled run.
- OuterLayer does not provide its sandboxes. A runner whose
runner.sandbox.providersetting is"outerlayer"takes no scheduled run. - It has a command for a run.
- Its
runner.queuessetting includesimplement. See the config file. - Its
reposfilter lets the automation’s repository through. - It is up to date. See Update a runner.
Add a schedule automation
- Open Settings, then Automations.
- Choose New automation, then choose Schedule.
- Enter a name.
- Under Schedule, choose Hourly, Daily, Weekdays or Weekly. Hourly runs at the start of each hour.
- Set the Time, and the Day for Weekly.
- Choose the Time zone. The form starts with the time zone of your browser.
- Choose the Repository. The run reads its default branch.
- In What to look for, tell the agent what to look for. The field holds up to 2,000 characters.
- Under File issues in, choose the same repository, or a Linear team or Jira project of the factory.
- Set the Daily limit: the most issues the automation files in 24 hours. The default is 5, and you can set 1 to 100.
- Choose Save.
Start a run now
Choose Run now on the automation’s page. You need the Edit factory settings permission. Run now works while the automation is off. The button is off while the last run is pending or running. It works again after a run fails because no runner took it in 7 days.How a run files issues
The agent gives each issue a topic: short text that names what the issue is about. OuterLayer uses the topic and the daily limit to hold issues back:- One open issue for each topic. While the issue that the automation filed for a topic is open, OuterLayer files no other issue for that topic.
- A closed topic stays closed. A member can close an issue with no merged pull request linked to it. Then OuterLayer files no new issue for that topic. The same applies when a member chooses Remove from Work on the issue’s item. If a pull request merged before the issue closed, the fix shipped. A later run that finds the topic again files a new issue.
- The daily limit. The automation files at most its daily limit of issues in 24 hours. At the limit, the agent stops reporting.
- Secrets. OuterLayer files nothing for an issue whose title, topic or body looks like it holds a secret, such as a token.
Topics that stay closed
The automation’s page has a section Topics that stay closed. It lists each topic whose issue a member closed without a fix, with a link to that issue. The section is not there when no topic is closed. To let OuterLayer file a topic again, choose File again on its row. You need the Edit factory settings permission. File again files no issue at once. OuterLayer files a new issue the next time a run finds the topic. A run stops after 30 minutes. The run log then shows Failed, and the run files nothing. The agent reads its topics and reports with three CLI commands that only a run’s agent can use. See Run commands.Read the run log
The automation’s page shows the run log. Each row has the time, who started the run, the result, the cost and a link to the session of the run. OuterLayer keeps each row for 90 days.
A pending row gives one of four reasons:
- No runner of the factory is running. No runner has sent a heartbeat within three of its poll intervals.
- No running runner takes this automation’s runs. A runner is running, but none meets the conditions in Before you start for this repository.
- Every runner that takes this run is unavailable. The row names each runner and its state, such as “ollie is low on disk”.
- The run waits for a free runner. A runner takes builds first, so the run waits until a runner is free.
Notices and the switch-off after repeated failures
OuterLayer tells the creator of a schedule automation when a run waits for a runner or fails. It sends the same notices for other automations that a member adds. See Notices about an automation for who gets them and what each email says. A schedule automation that keeps failing is a waste of runs. So OuterLayer switches it off in either of these cases:- Five runs in a row fail.
- A run waits 7 days and no runner takes it. This ends the run as Failed.