<sectionclass="panel"id="backups"><h2>Backups</h2><pclass="small">Copy every repository {{ org.name }} owns, with its issues, proposals and wiki, hourly to a bucket or directory you control. <aclass="go small"href="/orgs/{{ org.name }}/settings/backups">Set up backups</a></p></section>
<labelfor="default_role">Members' default role on the organisation's repositories</label>
32
<selectid="default_role"name="default_role">{% for r in ["none", "read", "triage", "write", "maintain", "admin"] %}<optionvalue="{{ r }}"{% iforg.default_role.as_str() == *r %} selected{% endif %}>{{ r }}</option>{% endfor %}</select>
<pclass="small mute">Such as <code>develop</code>. Left empty, they take this site's: <code>{{ site_bookmark }}</code>. Each repository can still choose its own.</p>
<pclass="small">Runners take higher levels first; within a level, repositories take turns. A repository may set its own level, and a maintainer can expedite one run.</p>
<pclass="small mute">Where the organisation's new repositories may live. Repositories that exist stay where they are.</p>
79
<labelclass="check"><inputtype="checkbox"name="require_bucket"value="1"{% ifpolicy.require_bucket %} checked{% endif %}> Keep every new repository in a bucket, not on this server's disk</label>
80
<labelfor="allowed">Buckets allowed, one store URL prefix per line (empty: any bucket)</label>
<p><strong>{{ t.name }}</strong>: {% for a in ms %}{{ a.username }}{% if !loop.last %}, {% endif %}{% endfor %}{% if ms.is_empty() %}<spanclass="mute">nobody yet</span>{% endif %}
<pclass="small">The OxygenFlow runners that may take this organisation's jobs: the site's, the organisation's, and those of its repositories.</p>
101
{% if let Some(t) = runner_token %}<pclass="note">Register a runner for the organisation with:</p><preclass="snippet">flow runner register {{ shell.base_url }} --token {{ t }} --name NAME</pre>{% endif %}
102
{% if runners.is_empty() %}<pclass="mute small">None yet: runs wait until a runner that serves them is added.</p>{% else %}
<formmethod="post"action="/orgs/{{ org.name }}/settings/runners/token"><inputtype="hidden"name="_csrf"value="{{ shell.csrf }}"><buttontype="submit">Add a runner for the organisation</button></form>
<pclass="small">The organisation's own runners can update themselves: off unless chosen. Try a build on a test group first (runners you pick, or a percentage of them, the same machines every time), then turn updates on for the rest. A runner's own setting wins over a group's, a group's over the organisation's, the organisation's over the site's.</p>
<labelclass="pol"><inputtype="radio"name="mode"value="percent"{% ifg.percent.is_some() %} checked{% endif %}> a percentage: <inputtype="number"name="percent"min="1"max="100"value="{% if let Some(p) = g.percent %}{{ p }}{% endif %}">%</label>
132
<labelclass="pol"><inputtype="radio"name="mode"value="chosen"{% ifg.percent.is_none() %} checked{% endif %}> these runners:</label>
133
<divclass="pol-row">{% for rv in updates.runners %}<labelclass="pol"><inputtype="checkbox"name="runner"value="{{ rv.r.id }}"{% ifgv.chosen.contains(rv.r.id) %} checked{% endif %}> {{ rv.r.name }}</label>{% endfor %}</div>
<labelclass="pol">Wave <inputtype="number"name="wave"min="1"max="9"size="3"value="{% if let Some(w) = g.wave %}{{ w }}{% endif %}"title="Blank: after every wave"></label>
<formclass="tiny"method="post"action="/orgs/{{ org.name }}/settings/runners/updates/groups/{{ g.id }}/delete"data-confirm="Remove the test group {{ g.name }}?"><inputtype="hidden"name="_csrf"value="{{ shell.csrf }}"><buttonclass="danger-btn">remove group</button></form>
<labelclass="pol"><inputtype="radio"name="mode"value="percent"> a percentage of the organisation's runners: <inputtype="number"name="percent"min="1"max="100">%</label>
146
<labelclass="pol"><inputtype="radio"name="mode"value="chosen"checked> these runners:</label>
147
<divclass="pol-row">{% for rv in updates.runners %}<labelclass="pol"><inputtype="checkbox"name="runner"value="{{ rv.r.id }}"> {{ rv.r.name }}</label>{% endfor %}</div>
{% call w::panel("/orgs/" ~ org.name ~ "/settings", hooks, shell.csrf, "These hear every repository of the organisation, as well as each repository's own webhooks.") %}
{% call va::panel("/orgs/" ~ org.name ~ "/settings", variables, shell.csrf, "Jobs of every repository of the organisation get these, beside the site's and each repository's own.") %}
{% call se::panel("/orgs/" ~ org.name ~ "/settings", secrets, shell.csrf, "Jobs of every repository of the organisation may use these, beside the site's and each repository's own.") %}
{% call ai::panel("/orgs/" ~ org.name ~ "/settings", assistants, shell.csrf, "Every repository of the organisation may ask these, beside the site's and its own.") %}