Skip to content

Commit

Permalink
Add README, CODEOWNERS for rufio
Browse files Browse the repository at this point in the history
Signed-off-by: Micah Hausler <mhausler@amazon.com>
  • Loading branch information
micahhausler committed May 2, 2022
1 parent 1a87a16 commit d2b435c
Show file tree
Hide file tree
Showing 5 changed files with 164 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/.github/settings.yml @chrisdoherty4 @displague @jacobweinstock
/.github/CODEOWNERS @chrisdoherty4 @displague @jacobweinstock
30 changes: 30 additions & 0 deletions .github/settings.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Collaborators: give specific users access to this repository.
# See https://docs.github.com/en/rest/reference/repos#add-a-repository-collaborator for available options
collaborators:
# Maintainers, should also be added to the .github/CODEOWNERS file as owners of this settings.yml file.
- username: chrisdoherty4
permission: maintain
- username: displague
permission: maintain
- username: jacobweinstock
permission: maintain
# Approvers
- username: joelrebel
permission: push
- username: micahhausler
permission: push
- username: nshalman
permission: push
# Reviewers
- username: mmlb
permission: triage
- username: abhay-krishna
permission: triage

# Note: `permission` is only valid on organization-owned repositories.
# The permission to grant the collaborator. Can be one of:
# * `pull` - can pull, but not push to or administer this repository.
# * `push` - can pull and push, but not administer this repository.
# * `admin` - can pull, push and administer this repository.
# * `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions.
# * `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access.
3 changes: 3 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Code of Conduct

Refer to our [Code of Conduct](https://github.com/tinkerbell/.github/blob/main/CODE_OF_CONDUCT.md)
86 changes: 86 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Contributor Guide

Welcome to Rufio! We are really excited to have you.
Please use the following guide on your contributing journey.
Thanks for contributing!

## Table of Contents

- [Context](#Context)
- [Prerequisites](#Prerequisites)
- [DCO Sign Off](#DCO-Sign-Off)
- [Code of Conduct](#Code-of-Conduct)
- [Setting up your development environment](#Setting-up-your-development-environment)
- [Pull Requests](#Pull-Requests)
- [Branching strategy](#Branching-strategy)
- [Quality](#Quality)
- [CI](#CI)
- [Code coverage](#Code-coverage)
- [Pre PR Checklist](#Pre-PR-Checklist)

---

## Context


Rufio is a Kubernetes controller for managing baseboard management state and actions.It is part of the [Tinkerbell stack](https://tinkerbell.org) and provides the glue for machine provisioning by enabling machine restarts and setting next boot devices.

## Prerequisites

### DCO Sign Off

Please read and understand the DCO found [here](docs/DCO.md).

### Code of Conduct

Please read and understand the code of conduct found [here](https://github.com/tinkerbell/rufio/blob/main/CODE_OF_CONDUCT.md).

### Setting up your development environment

1. Install Go

Rufio requires [Go 1.17](https://golang.org/dl/) or later.

1. Install Docker

Rufio uses Docker for protocol buffer code generation, container image builds and for the Ruby client example.
Most versions of Docker will work.

> The items below are nice to haves, but not hard requirements for development
1. Install golangci-lint

[golangci-lint](https://golangci-lint.run/usage/install/) is used in CI for lint checking and should be run locally before creating a PR.

## Pull Requests

### Branching strategy

Rufio uses a fork and pull request model.
See this [doc](https://guides.github.com/activities/forking/) for more details.

### Quality

#### CI

Rufio uses GitHub Actions for CI.
The workflow is found in [.github/workflows/ci.yaml](.github/workflows/ci.yaml).
It is run for each commit and PR.
The container image building only happens once a PR is merged into the main line.

#### Code coverage

Rufio does run code coverage with each PR.
Coverage thresholds are not currently enforced.
It is always nice and very welcomed to add tests and keep or increase the code coverage percentage.

### Pre PR Checklist

This checklist is a helper to make sure there's no gotchas that come up when you submit a PR.

- [ ] You've reviewed the [code of conduct](#Code-of-Conduct)
- [ ] All commits are DCO signed off
- [ ] Code is [formatted and linted](#Linting)
- [ ] Code [builds](#Building) successfully
- [ ] All tests are [passing](#Unit-testing)
- [ ] Code coverage [percentage](#Code-coverage). (main line is the base with which to compare)
43 changes: 43 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Rufio

![For each commit and PR](https://github.com/tinkerbell/rufil/workflows/For%20each%20commit%20and%20PR/badge.svg)
![stability](https://img.shields.io/badge/Stability-Experimental-red.svg)

> This repository is [Experimental](https://github.com/packethost/standards/blob/main/experimental-statement.md) meaning that it's based on untested ideas or techniques and not yet established or finalized or involves a radically new and innovative style!
> This means that support is best effort (at best!) and we strongly encourage you to NOT use this in production.
## Description

**R**ufio
**U**ses
**F**ancy
**I**PMI
**O**perations

Rufio is a Kubernetes controller for managing baseboard management state and actions.

Goals:

* Declaratively enforce and ensure BMC state such as:
* Power state
* Persistent boot order
* NTP/LDAP/TLS Cert configuration (probably future scope)
* Declaratively enact actions such as:
* Power reset
* Configure ephemeral boot order
* Report state such as:
* Firmware version
* Other Redfish/Swordfish machine metadata

Implementation
* Kubernetes-based controller
* AuthN/Z is enforced with Kubernetes Authentication/RBAC
* BMC authentication is managed with Kubernetes Secrets

## Contributing

See the contributors guide [here](CONTRIBUTING.md).

## Website

For complete documentation, please visit the Tinkerbell project hosted at [tinkerbell.org](https://tinkerbell.org).

0 comments on commit d2b435c

Please sign in to comment.