Merge "Initial Contributions and Developer Docs"
This commit is contained in:
commit
d462b8a014
42
CONTRIBUTING.md
Normal file
42
CONTRIBUTING.md
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Contributing Guidelines
|
||||||
|
|
||||||
|
The airshipctl project accepts contributions via gerrit reviews. For help
|
||||||
|
getting started with gerrit, see the official [OpenDev
|
||||||
|
documentation](https://docs.openstack.org/contributors/common/setup-gerrit.html).
|
||||||
|
This document outlines the process to help get your contribution accepted.
|
||||||
|
|
||||||
|
## Support Channels
|
||||||
|
|
||||||
|
Whether you are a user or contributor, official support channels are available
|
||||||
|
[here](https://wiki.openstack.org/wiki/Airship#Get_in_Touch)
|
||||||
|
|
||||||
|
You can also report [bugs](https://airship.atlassian.net/issues/?jql=project%20%3D%20AIR%20AND%20issuetype%20%3D%20Bug%20order%20by%20created%20DESC).
|
||||||
|
|
||||||
|
|
||||||
|
Before opening a new issue or submitting a patchset, it's helpful to search the
|
||||||
|
bug reports above - it's likely that another user has already reported the issue you're
|
||||||
|
facing, or it's a known issue that we're already aware of. It is also worth
|
||||||
|
asking on the IRC channels.
|
||||||
|
|
||||||
|
## Story Lifecycle
|
||||||
|
|
||||||
|
The airshipctl project uses Jira to track all efforts, whether those are
|
||||||
|
contributions to this repository or other community projects. The Jira issues
|
||||||
|
are a combination of epics, issues, subtasks, bugs, and milestones. We use
|
||||||
|
epics to define large deliverables and many epics have been created already.
|
||||||
|
The project assumes that developers trying to break down epics into managable
|
||||||
|
work will create their own issues/stories and any related subtasks to further
|
||||||
|
breakdown their work. Milestones act as human readable goals for the sprint they
|
||||||
|
are assigned to.
|
||||||
|
|
||||||
|
- [Active Sprints](https://airship.atlassian.net/secure/RapidBoard.jspa?rapidView=1)
|
||||||
|
- [Issues](https://airship.atlassian.net/projects/AIR/issues)
|
||||||
|
|
||||||
|
The airshipctl project leverages 1-month sprints primarily for the purpose of
|
||||||
|
chronologically ordering work in Jira.
|
||||||
|
|
||||||
|
### Coding Conventions
|
||||||
|
|
||||||
|
Airship has a set of [coding conventions](https://airship-docs.readthedocs.io/en/latest/conventions.html) that are meant to cover all Airship subprojects.
|
||||||
|
|
||||||
|
However, airshipctl also has its own specific coding conventions and standards in the official airshipctl [developer guide](docs/developers.md).
|
101
docs/developers.md
Normal file
101
docs/developers.md
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# Developers Guide
|
||||||
|
|
||||||
|
This guide explains how to set up your environment for developing on
|
||||||
|
airshipctl.
|
||||||
|
|
||||||
|
## Environment Expectations
|
||||||
|
|
||||||
|
- Go 1.13
|
||||||
|
- Docker
|
||||||
|
- Git
|
||||||
|
|
||||||
|
## Building airshipctl
|
||||||
|
|
||||||
|
We use Make to build our programs. The simplest way to get started is:
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ make build
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: The airshipctl application is a go module. This means you do not need to
|
||||||
|
clone the repository into `$GOPATH` in order to build it. You should be able to
|
||||||
|
build it from any directory.
|
||||||
|
|
||||||
|
This will build the airshipctl binary.
|
||||||
|
|
||||||
|
To run all the tests including linting and coverage reports, run `make test`. To
|
||||||
|
run all tests in a containerized environment, run `make docker-image-unit-tests`
|
||||||
|
or `make docker-image-lint`
|
||||||
|
|
||||||
|
To run airshipctl locally, you can run `bin/airshipctl`.
|
||||||
|
|
||||||
|
## Docker Images
|
||||||
|
|
||||||
|
If you want to build an `airshipctl` Docker container, run `make docker-image`.
|
||||||
|
|
||||||
|
To build Docker images, use `make docker-image`.
|
||||||
|
|
||||||
|
Pre-built images are already available at [quay.io](http://quay.io/airshipit/airshipctl).
|
||||||
|
|
||||||
|
## Contribution Guidelines
|
||||||
|
|
||||||
|
We welcome contributions. This project has set up some guidelines in order to
|
||||||
|
ensure that (a) code quality remains high, (b) the project remains consistent,
|
||||||
|
and (c) contributions follow the open source legal requirements. Our intent is
|
||||||
|
not to burden contributors, but to build elegant and high-quality open source
|
||||||
|
code so that our users will benefit.
|
||||||
|
|
||||||
|
Make sure you have read and understood the main airshipctl [Contributing
|
||||||
|
Guide](/CONTRIBUTING.md)
|
||||||
|
|
||||||
|
### Structure of the Code
|
||||||
|
|
||||||
|
The code for the airshipctl project is organized as follows:
|
||||||
|
|
||||||
|
- The individual programs are located in `cmd/`. Code inside of `cmd/` is not
|
||||||
|
designed for library re-use.
|
||||||
|
- Shared libraries are stored in `pkg/`.
|
||||||
|
- Both commands and shared libraries may require test data fixtures. These
|
||||||
|
should be placed in a `testdata/` subdirectory within the command or library.
|
||||||
|
- The `testutil/` directory contains functions that are helpful for unit tests.
|
||||||
|
- The `zuul.d/` directory contains Zuul YAML definitions for CI/CD jobs to run.
|
||||||
|
- The `playbooks/` directory contains playbooks that the Zuul CI/CD jobs will run.
|
||||||
|
- The `tools/` directory contains scripts used by the Makefile and CI/CD pipeline.
|
||||||
|
- The `docs/` folder is used for documentation and examples.
|
||||||
|
|
||||||
|
Go dependencies are managed by `go mod` and stored in `go.mod` and `go.sum`
|
||||||
|
|
||||||
|
### Git Conventions
|
||||||
|
|
||||||
|
We use Git for our version control system. The `master` branch is the home of
|
||||||
|
the current development candidate. Releases are tagged.
|
||||||
|
|
||||||
|
We accept changes to the code via Gerrit pull requests. One workflow for doing
|
||||||
|
this is as follows:
|
||||||
|
|
||||||
|
1. `git clone` the `opendev.org/airship/airshipctl` repository.
|
||||||
|
2. Create a new working branch (`git checkout -b feat/my-feature`) and do your
|
||||||
|
work on that branch.
|
||||||
|
3. When you are ready for us to review, push your branch to gerrit using
|
||||||
|
`git-review`. For more information on the gerrit workflow, see the [OpenDev
|
||||||
|
documentation](https://docs.openstack.org/contributors/common/setup-gerrit.html).
|
||||||
|
|
||||||
|
### Go Conventions
|
||||||
|
|
||||||
|
We follow the Go coding style standards very closely. Typically, running `go
|
||||||
|
fmt` will make your code beautiful for you.
|
||||||
|
|
||||||
|
We also typically follow the conventions of `golangci-lint`.
|
||||||
|
|
||||||
|
Read more:
|
||||||
|
|
||||||
|
- Effective Go [introduces
|
||||||
|
formatting](https://golang.org/doc/effective_go.html#formatting).
|
||||||
|
- The Go Wiki has a great article on
|
||||||
|
[formatting](https://github.com/golang/go/wiki/CodeReviewComments).
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
|
||||||
|
In order to ensure that all package unit tests follow the same standards and use
|
||||||
|
the same frameworks, airshipctl has a document outlining [specific test
|
||||||
|
guidelines](/docs/testing-guidelines.md) maintained separately.
|
Loading…
Reference in New Issue
Block a user