docs: add docs
Signed-off-by: kjuulh <contact@kjuulh.io>
This commit is contained in:
parent
f7a6ea5d83
commit
decdf5f777
81
docs/configuration.md
Normal file
81
docs/configuration.md
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
# Configuration
|
||||||
|
|
||||||
|
`cuddle-please` requires configuration to function, it is quite flexible, and tries to help you as much as possible filling out values for you, or using sane defaults.
|
||||||
|
|
||||||
|
First of all, you can either use the `cuddle.yaml` if using `cuddle`, or `cuddle.please.yaml` if using standalone.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# file: cuddle.yaml
|
||||||
|
please:
|
||||||
|
<contents of cuddle.please.yaml>
|
||||||
|
---
|
||||||
|
# file: cuddle.please.yaml
|
||||||
|
project:
|
||||||
|
owner: kjuulh
|
||||||
|
repository: cuddle-please
|
||||||
|
branch: main
|
||||||
|
settings:
|
||||||
|
api_url: https://git.front.kjuulh.io
|
||||||
|
```
|
||||||
|
|
||||||
|
This is all the configuration, most of these won't be needed when running in CI.
|
||||||
|
|
||||||
|
`cuddle` fetches configuration items from different sources, each level is able to override the previous layer.
|
||||||
|
|
||||||
|
1. Execution environment
|
||||||
|
2. Configuration files
|
||||||
|
3. Stdin
|
||||||
|
4. Env variables
|
||||||
|
5. Cli arguments
|
||||||
|
6. User input
|
||||||
|
|
||||||
|
Lets break each down.
|
||||||
|
|
||||||
|
### Execution environment
|
||||||
|
|
||||||
|
Execution environment, is the environment under which cuddle-please is run, if running in CI, we're able to take some variables, without requiring input from the user, or configuration values.
|
||||||
|
|
||||||
|
Right now only `drone-ci` is supported, but github actions and such, are nearly done.
|
||||||
|
|
||||||
|
#### Drone CI
|
||||||
|
|
||||||
|
Drone CI, will automatically fill out
|
||||||
|
```yaml
|
||||||
|
project:
|
||||||
|
owner: <drone>
|
||||||
|
repository: <drone>
|
||||||
|
branch: <drone>
|
||||||
|
```
|
||||||
|
|
||||||
|
This means that the only thing the user needs to configure is the `api_url` and the access `<token>`
|
||||||
|
|
||||||
|
### Configuration files
|
||||||
|
|
||||||
|
Already shown above, this allows setting hard-coded values, especially useful for the `api_url`.
|
||||||
|
|
||||||
|
### Stdin
|
||||||
|
|
||||||
|
All the configurations can be passed via. stdin
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cat cuddle.please.yaml | cuddle-please release --stdin
|
||||||
|
```
|
||||||
|
|
||||||
|
### Env variables
|
||||||
|
|
||||||
|
The CLI shows which env variables are available via. `cuddle-please release --help`.
|
||||||
|
|
||||||
|
### CLI args
|
||||||
|
|
||||||
|
The CLI shows which args are available via. `cuddle-please release -h # or --help`
|
||||||
|
|
||||||
|
`-h` gives a shorthand description and `--help` provides a longer explanation of each arg.
|
||||||
|
|
||||||
|
There are some args, which are exclusive to the cli or env variables, such as `<token>`. This is because it is a secret and it shouldn't be leaked in the configuration. There are some exceptions such as `GITHUB_TOKEN` which is picked in the environment variable layer.
|
||||||
|
|
||||||
|
### Interactive (User input)
|
||||||
|
|
||||||
|
cuddle-please will determine whether or not it is running with a user interactive `stdin`, and will prompt for missing values if running locally. This is disabled without a proper tty, or if running in one of the CI execution environments by default. Otherwise `--no-interactive` can be passed to any command.
|
||||||
|
|
||||||
|
|
||||||
|
|
152
docs/getting-started.md
Normal file
152
docs/getting-started.md
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
# Getting started
|
||||||
|
|
||||||
|
`cuddle-please` is a tool to manage releases in a git repository.
|
||||||
|
|
||||||
|
It is either run manually or in ci. To get the most correct behavior
|
||||||
|
`cuddle-please` should be run on each commit on your primary branch
|
||||||
|
(main/master).
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
First you need the executable
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo install cuddle-please
|
||||||
|
```
|
||||||
|
|
||||||
|
or docker (not public yet)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run -v $PWD:/mnt/src -e CUDDLE_PLEASE_TOKEN=<token> kjuulh/cuddle-please:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
!!! warning Other distributions to be added.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
`cuddle-please` requires configuration to function, it is quite flexible, and
|
||||||
|
tries to help you as much as possible filling out values for you, or using sane
|
||||||
|
defaults.
|
||||||
|
|
||||||
|
For this `getting-started` guide, we will use cli args, but see
|
||||||
|
[configuration](configuration.md) for all the other options, both manual,
|
||||||
|
automatic, and interactive.
|
||||||
|
|
||||||
|
## Running
|
||||||
|
|
||||||
|
First make sure you're on your release branch, this is likely either `main` or
|
||||||
|
`master`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
cuddle-please release \
|
||||||
|
--engine gitea \
|
||||||
|
--owner kjuulh \
|
||||||
|
--repository cuddle-please \
|
||||||
|
--branch main
|
||||||
|
--api-url 'https://git.front.kjuulh.io/kjuulh/cuddle-please' \
|
||||||
|
--token <personal-access-token> \
|
||||||
|
--dry-run
|
||||||
|
```
|
||||||
|
|
||||||
|
We use `gitea` backend here, but you can either leave it out (as it is default
|
||||||
|
gitea), or set it to github (once that is done).
|
||||||
|
|
||||||
|
The token needs to have write access to your repository, as well as the api.
|
||||||
|
(guide tbd).
|
||||||
|
|
||||||
|
Dry-run is used here to not commit any changes to your backend, it may still
|
||||||
|
change your local git setup, but not the backends. Simply remove the arg if you
|
||||||
|
want to commit. !!! note `--token` can also be set with
|
||||||
|
`export CUDDLE_PLEASE_TOKEN='<personal-access-token>'` if you don't want to leak
|
||||||
|
the secret to your cli history.
|
||||||
|
|
||||||
|
When run you should get output that it has created a dry_run pull-request,
|
||||||
|
meaning that it was supposed to do the action but didn't commit it.
|
||||||
|
|
||||||
|
If you've used versioning previously in your repository, i.e. a tag with
|
||||||
|
`v1.0.0` or `1.0.0` it will use that to bump the commits based on
|
||||||
|
[conventional commits](https://www.conventionalcommits.org/en/v1.0.0/) and
|
||||||
|
[keep a changelog](https://keepachangelog.com/en/1.1.0/).
|
||||||
|
|
||||||
|
Changelog generation can be disabled with `--no-changelog`.
|
||||||
|
|
||||||
|
### Merging the pr.
|
||||||
|
|
||||||
|
If you've created the pull-request (i.e. with the dry-run arg). You can simply
|
||||||
|
just go to the pull-request and squash merge it.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# showing the command again, now without --dry-run
|
||||||
|
# you were automatically moved to cuddle-please/release when running the above command
|
||||||
|
git checkout main
|
||||||
|
|
||||||
|
cuddle-please release \
|
||||||
|
--engine gitea \
|
||||||
|
--owner kjuulh \
|
||||||
|
--repository cuddle-please \
|
||||||
|
--branch main
|
||||||
|
--api-url 'https://git.front.kjuulh.io/kjuulh/cuddle-please' \
|
||||||
|
--token <personal-access-token>
|
||||||
|
```
|
||||||
|
|
||||||
|
It is quite important that the title of the release commit is
|
||||||
|
`chore(release): <something>`. `<something>` will be the version of the release.
|
||||||
|
|
||||||
|
When it is merged, simply update the local repository and run the same command
|
||||||
|
as above.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# you were automatically moved to cuddle-please/release when running the above command
|
||||||
|
git checkout main
|
||||||
|
git pull origin main
|
||||||
|
|
||||||
|
cuddle-please release \
|
||||||
|
--engine gitea \
|
||||||
|
--owner kjuulh \
|
||||||
|
--repository cuddle-please \
|
||||||
|
--branch main
|
||||||
|
--api-url 'https://git.front.kjuulh.io/kjuulh/cuddle-please' \
|
||||||
|
--token <personal-access-token> \
|
||||||
|
```
|
||||||
|
|
||||||
|
You should now see a release artifact in the releases page, as well as a tag
|
||||||
|
with the version.
|
||||||
|
|
||||||
|
### Running in CI.
|
||||||
|
|
||||||
|
Cuddle-please shines the best when running in CI, as we're able to pull most
|
||||||
|
variables from that, such as `owner`, `repository`, `branch`, etc.
|
||||||
|
|
||||||
|
To run in ci see [continuous-integration](continuous-integration.md) for all the
|
||||||
|
different platforms.
|
||||||
|
|
||||||
|
Below is a snippet showing a `drone-ci` setup
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
kind: pipeline
|
||||||
|
name: cuddle-please-release
|
||||||
|
type: docker
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: cuddle-please release
|
||||||
|
image: docker.io/kjuulh/cuddle-please:v0.1.0
|
||||||
|
commands:
|
||||||
|
- cuddle-please release
|
||||||
|
environment:
|
||||||
|
CUDDLE_PLEASE_TOKEN:
|
||||||
|
from_secret: cuddle-please-token
|
||||||
|
CUDDLE_PLEASE_API_URL: "https://git.front.kjuulh.io"
|
||||||
|
when:
|
||||||
|
branch:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
```
|
||||||
|
|
||||||
|
All the other options will automatically be pulled from the drone environment.
|
||||||
|
Throughts its own
|
||||||
|
[runtime configuration](https://docs.drone.io/pipeline/environment/reference/).
|
||||||
|
Right now only drone is supported with these fetch features, Please open an
|
||||||
|
issue, if you have another environment you'd like to run in. Such as github
|
||||||
|
actions, circleci, etc.
|
@ -1,17 +1,35 @@
|
|||||||
# Welcome to MkDocs
|
# Cuddle docs
|
||||||
|
|
||||||
For full documentation visit [mkdocs.org](https://www.mkdocs.org).
|
Cuddle Please is an extension to `cuddle`, it is a separate binary that can be executed standalone as `cuddle-please`, or in cuddle as `cuddle please`.
|
||||||
|
|
||||||
## Commands
|
The goal of the software is to be a `release-please` clone, targeting `gitea` instead of `github`.
|
||||||
|
|
||||||
* `mkdocs new [dir-name]` - Create a new project.
|
The tool can be executed as a binary using:
|
||||||
* `mkdocs serve` - Start the live-reloading docs server.
|
|
||||||
* `mkdocs build` - Build the documentation site.
|
|
||||||
* `mkdocs -h` - Print help message and exit.
|
|
||||||
|
|
||||||
## Project layout
|
```bash
|
||||||
|
cuddle please release # if using cuddle
|
||||||
|
# or
|
||||||
|
cuddle-please release # if using standalone
|
||||||
|
```
|
||||||
|
|
||||||
mkdocs.yml # The configuration file.
|
And when a release has been built:
|
||||||
docs/
|
|
||||||
index.md # The documentation homepage.
|
```bash
|
||||||
... # Other markdown pages, images and other files.
|
cuddle please release
|
||||||
|
# or
|
||||||
|
cuddle-please release
|
||||||
|
```
|
||||||
|
|
||||||
|
cuddle will default to information to it available in git, or use a specific entry in `cuddle.yaml` called
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# ...
|
||||||
|
please:
|
||||||
|
name: <something>
|
||||||
|
# ...
|
||||||
|
# ...
|
||||||
|
```
|
||||||
|
|
||||||
|
or as `cuddle.please.yaml`
|
||||||
|
|
||||||
|
See docs for more information about installation and some such
|
||||||
|
29
docs/installation.md
Normal file
29
docs/installation.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Installation
|
||||||
|
|
||||||
|
## Cargo version
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo install cuddle-please
|
||||||
|
# or
|
||||||
|
cargo binstall cuddle-please # if using binstall
|
||||||
|
```
|
||||||
|
|
||||||
|
More to come as the project matures.
|
||||||
|
|
||||||
|
## Development version
|
||||||
|
|
||||||
|
### Cuddle
|
||||||
|
|
||||||
|
[Cuddle](https://git.front.kjuulh.io/kjuulh/cuddle) is a script and configuration management tool, it is by far the easiest approach for building the development version of cuddle-please, but optional.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cuddle x build:release
|
||||||
|
# or docker
|
||||||
|
cuddle x build:docker:release
|
||||||
|
```
|
||||||
|
|
||||||
|
### Cargo
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo build --release -p cuddle_cli
|
||||||
|
```
|
@ -19,3 +19,7 @@ theme:
|
|||||||
toggle:
|
toggle:
|
||||||
icon: material/brightness-4
|
icon: material/brightness-4
|
||||||
name: Switch to light mode # Palette toggle for light mode
|
name: Switch to light mode # Palette toggle for light mode
|
||||||
|
markdown_extensions:
|
||||||
|
- admonition
|
||||||
|
- pymdownx.details
|
||||||
|
- pymdownx.superfences
|
Loading…
Reference in New Issue
Block a user