version 0.2.2
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is failing Details

This commit is contained in:
Cadey Ratio 2020-05-31 16:34:05 -04:00
parent d6d6d84e43
commit f32c927889
7 changed files with 139 additions and 6 deletions

View File

@ -1,5 +1,5 @@
kind: pipeline
name: tools
name: tests/release
steps:
- name: rust tests
@ -7,6 +7,9 @@ steps:
pull: always
commands:
- cargo test
when:
event:
- push
- name: auto-release
image: xena/gitea-release:0.2.1
@ -19,5 +22,52 @@ steps:
event:
- push
branch:
include:
- master
- master
---
kind: pipeline
name: docker
steps:
- name: build docker image
image: "monacoremo/nix:2020-04-05-05f09348-circleci"
environment:
USER: root
run:
- cachix use xe
- nix-build docker.nix
- cp $(readlink result) /result/docker.tgz
volumes:
- name: image
path: /result
when:
event:
- tag
- name: push docker image
image: docker:dind
volumes:
- name: image
path: /result
- name: dockersock
path: /var/run/docker.sock
steps:
- docker load /result/docker.tgz
- echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin
- docker push xena/gitea-release
environment:
DOCKER_USERNAME:
from_secret: DOCKER_USERNAME
DOCKER_PASSWORD:
from_secret: DOCKER_PASSWORD
when:
event:
- tag
volumes:
- name: image
temp: {}
- name: dockersock
host:
path: /var/run/docker.sock

View File

@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
## 0.2.2
Update README, automatically push docker images
## 0.2.1
Hotfix for typos in the docker manifest.

2
Cargo.lock generated
View File

@ -326,7 +326,7 @@ dependencies = [
[[package]]
name = "gitea-release"
version = "0.2.1"
version = "0.2.2"
dependencies = [
"anyhow",
"byte-unit",

View File

@ -1,6 +1,6 @@
[package]
name = "gitea-release"
version = "0.2.1"
version = "0.2.2"
authors = ["Christine Dodrill <me@christine.website>"]
edition = "2018"

View File

@ -8,3 +8,80 @@ repositories that reads from CHANGELOG and VERSION files. This is a clone of
[github-release](https://github.com/github-release/github-release), but more
suited for my individual needs. This may also turn into a generic webhook
handler, but one thing at a time. :)
## Installation
### With Nix
```console
$ nix-env -if https://tulpa.dev/cadey/gitea-release/archive/master.tar.gz
```
### With cargo
```console
$ cargo install --git https://tulpa.dev/cadey/gitea-release.git
```
## Drone Plugin
To use this as a drone plugin, add the following to your `.drone.yml`:
```yaml
- name: auto-release
image: xena/gitea-release:0.2.2
settings:
auth_username: cadey
changelog_path: ./CHANGELOG.md
gitea_server: https://tulpa.dev
gitea_token:
from_secret: GITEA_TOKEN
when:
event:
- push
branch:
- master
```
Replace the values of the settings as makes sense for your gitea server. The
`changelog_path` attribute is optional, and will be `./CHANGELOG.md` by default.
## CHANGELOG.md and VERSION files
The `CHANGELOG.md` file is based on the [Keep a Changelog][kacl] format, but
modified slightly to make it easier for this tool. Here is an example changelog
that this tool accepts:
[kacl]: https://keepachangelog.com/en/1.0.0/
```markdown
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## 0.1.0
Hi there this is a test!
### ADDED
- something
```
The `VERSION` file plays into this as well. The `VERSION` file MUST be a single
line containing a [semantic version][semver] string. When this tool is run with
the `release` subcommand, the following actions take place:
[semver]: https://semver.org/spec/v2.0.0.html
- The `VERSION` file is read and loaded as the desired tag for the repo
- The `CHANGELOG.md` file is read and the changes for the `VERSION` are
cherry-picked out of the file
- The git repo is checked to see if that tag already exists
- If the tag exists, the tool exits and does nothing
- If the tag does not exist, it is created (with the changelog fragment as the
body of the tag) and pushed to the gitea server
- A gitea release is created using the changelog fragment and the release name
is generated from the `VERSION` string

View File

@ -1 +1 @@
0.2.1
0.2.2

View File

@ -41,5 +41,7 @@ pub(crate) async fn run(
return Err(anyhow!("{:?} -> {}", resp.status(), resp.text().await?));
}
println!("Created release {}", tag);
Ok(())
}