sofairofficial / sleppa Goto Github PK
View Code? Open in Web Editor NEWAutomated release management and package publishing
Automated release management and package publishing
For now, Sleppa configuration crate is not generic.
It loads some value that are defined in structures inside the crate.
In order to be more generic, if a plugin needs a configuration file and/or data, this plugin is in charged to provide a way to load these information.
To implement that, a HashMap and new structure could be used to be more dynamic.
Context
, Configuration
and Value
HashMap<String, Value>
HashMap<String, Value>
This tasks aims to implement the feature system for Sleppa to implement conditional compilation. The goal is to provide several features :
sleppa_primitives
, sleppa_commit_analyzer
, sleppa_configuration
and sleppa_versioner
sleppa_changelog
sleppa_code_archiver
sleppa_notifier
Moreover, the versioning begins with 0.1.0
at the moment. While the crate is semver compatible, the version is provided by the packages uploaded either on GitHub package and crates.io.
Therefore, version on the Sleppa
crate must be set at 0.0.0-semver
in each Cargo.toml
file. The version follows the tag in the GitHub repository.
0.0.0-semver
in all Cargo.toml
file to indicate the crate follows a semantic versioning.Cargo.toml
to 0.0.0-semver
, e.g. sleppa_primitives = { version = "0.0.0-semver", path = "crates/sleppa_primitives" }
.Aim
This tasks aims to implement primitives for Sleppa
to work.
Sleppa
to workThis tasks aims to set up and configure the repository.
This task aims to implement a plugin for Sleppa
to generate the CHANGELOG
file.
For every release, the file is updated with the new version, the message and the link to the commits it refers.
The changelog is a markdown file and looks like :
To generate this changelog, the path must be described in a toml configuration file. The default path is /changelogs/CHANGELOG.md
.
If the file does not exist, a new one is created. If it exists, the new content must be added to this file in a reverse chronological order.
To write the changelog, the commits since the last tag of a repository are given to this crate. Their message will be analyzed to retrieved the type of the commit. Or the sleppa_commit_analyzer
is changed to keep this information when parsing their message.
Once the changelog has been written it must be added to the git repository by an automatic commit with a message which looks like Release v3.2.1
where v3.2.1
is the new tag of the repository.
CHANGELOG
file is updated for every releasesemantic-release
or Cocogitto
CHANGELOG
file is a markdown file/changelogs/CHANGELOG.md
Release v3.2.1
This tasks aims to implement the configuration file needed for Sleppa
to work. This file is mandatory and its name is sleppa.toml
.
This configuration file is close to a .releaserc.json
from semantic-release
or a cog.toml
from Cocogitto
The file is a toml
file
The file defines exactly 3 release action types : Major
, Minor
and Patch
The [release_rules]
section is mandatory
For each release action type, a grammar and a format is provided
[release_rules]
section is missingThis tasks aims to implement a code archiver which publish a release and its tag to the repository. The archives are a .zip
and a .tar.gz
format. The tag is formed like v3.2.1
.
This tasks aims to implement a crate publisher into the crates.io website.
This tasks aims to implement the parser of the commit's message to match the release action type.
As we are running a squash-and-merge strategy for the repository, it must retrieves the pull request's inner commit messages.
major
> minor
> patch
.Issue to solve (#3)
where 3
is the pull request's number.major
> minor
> patch
contributor's bible
This task aims to implement a crate to notify when a new release is published on a collaboration platform such as Mattermost, Slack, Zulip, etc. .
Notify
to define the general behavior in lib.rs
file. This traits contains a method notify_release
with a Context and a message as arguments.project-largo-release
This tasks aims to implement a versioner for Sleppa. This versioner determines the new tag based on a given release action type.
v3.2.1
where `v.{major}.{minor}.{patch}v3.2.1
-> v4.0.0
v3.2.1
-> v3.3.0
v3.2.1
-> v3.2.2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.