{% extends "base.html" %} {% import "webhooks_panel.html" as w %} {% import "assistants_panel.html" as ai %} {% import "variables_panel.html" as va %} {% import "secrets_panel.html" as se %} {% import "runner_update_fields.html" as ruf %} {% block title %}{{ org.name }} settings{% endblock %} {% block content %}

{{ org.name }} organisation settings · repositories

{% if let Some(n) = notice %}

{{ n }}

{% endif %} {% if let Some(e) = error %}

{{ e }}

{% endif %}

Backups

Copy every repository {{ org.name }} owns, with its issues, proposals and wiki, hourly to a bucket or directory you control. Set up backups

Such as develop. Left empty, they take this site's: {{ site_bookmark }}. Each repository can still choose its own.

Members

{% for (a, r) in members %}{% endfor %}
{{ a.username }}{{ r }}

OxygenFlow priority

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.

Storage

Where the organisation's new repositories may live. Repositories that exist stay where they are.

Listing the organisation's own buckets keeps its data where those buckets are: the provider, the region, the country.

Teams

{% for (t, ms) in teams %}

{{ t.name }}: {% for a in ms %}{{ a.username }}{% if !loop.last %}, {% endif %}{% endfor %}{% if ms.is_empty() %}nobody yet{% endif %}

{% endfor %}

Runners

The OxygenFlow runners that may take this organisation's jobs: the site's, the organisation's, and those of its repositories.

{% if let Some(t) = runner_token %}

Register a runner for the organisation with:

flow runner register {{ shell.base_url }} --token {{ t }} --name NAME
{% endif %} {% if runners.is_empty() %}

None yet: runs wait until a runner that serves them is added.

{% else %}
{% for (r, serves, own) in runners %}{% endfor %}
RunnerStatusServesMachine
{{ r.name }}{{ r.status() }}{{ serves }}{% if r.arch.is_empty() %}unknown{% else %}{{ r.arch }} · {{ r.os }}{% endif %} {% if *own %}
{% endif %}
{% endif %}

Runner updates

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.

{% let ou = updates.owners[0] %}
The organisation{% call ruf::policy_fields(ou, false) %}

Test groups

{% if updates.groups.is_empty() %}

None yet.

{% endif %} {% for gv in updates.groups %}{% let g = gv.g %}

{{ g.name }} {% if let Some(p) = g.percent %}{{ p }}%{% else %}chosen{% endif %} · {{ gv.members.len()|plural("runner", "runners") }} now{% if let Some(w) = g.wave %} · wave {{ w }}{% endif %}

{% for m in gv.members %}{{ m }} {% endfor %}

{% call ruf::policy_fields(gv.policy, false) %}
Who is in it
{% for rv in updates.runners %}{% endfor %}
{% endfor %}

New test group

{% for rv in updates.runners %}{% endfor %}
{% if !updates.runners.is_empty() %}

The organisation's runners

{% for rv in updates.runners %}{% let r = rv.r %} {% endfor %}
RunnerRunsIts policyNowLast saidIts own settings
{{ r.name }}{% for g in rv.groups %} {{ g }}{% endfor %} {% if r.version.is_empty() %}unknown{% else %}flow {{ r.version }}{% endif %} {{ rv.effective_words() }}{{ rv.offer }} {% if r.update_note.is_empty() %}nothing yet{% else %}{{ r.update_note }}{% endif %}
{% call ruf::policy_fields(rv.policy, false) %}
{% endif %}
{% 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.") %}
{% endblock %}