---
title: "Release Cycle for artma"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Release Cycle for artma}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
## Introduction
This vignette outlines the release cycle for the **artma** package (Automatic Replication Tools for Meta-Analysis).
## Pull request-based workflow
All changes to **artma** must be made via pull requests (PRs) against the `master` branch. Whenever a PR is opened, updated, or synchronized:
1. **R CMD checks**, **lint checks**, and **package tests** run automatically.
2. The PR cannot be merged until these checks pass, ensuring that every update maintains code quality and package integrity.
### Example contributor flow
```{r contributor_flow, eval=FALSE}
# contributor code:
# 1. Fork or clone the artma repository.
# 2. Create a feature branch based on master.
# 3. Make changes locally (adding features, fixing bugs, etc.).
# 4. Push the branch to your fork or to the main repo (if you have permissions).
# 5. Open a pull request against master.
```
```{r reviewer_flow, eval=FALSE}
# reviewer code:
# 1. Review the open pull request.
# 2. Confirm all checks (R CMD check, lint, tests) pass.
# 3. Request changes or merge, if it looks good.
```
## Version tagging and release
When a PR is merged into `master`, the system checks for the special flag **`release:next-version`** in the PR description or labels. If it exists, a separate workflow called `build-and-tag.yaml` is triggered. This workflow automatically:
- **Builds** the package with the new changes.
- **Tags** a new version based on the provided version increment labels.
### Version increment labels
The PR can include one of the following labels to indicate how the version should be bumped:
- **v-patch**: Increment the patch level (e.g., from 0.1.18 to 0.1.19).
- **v-minor**: Increment the minor version (e.g., from 0.1.18 to 0.2.0).
- **v-major**: Increment the major version (e.g., from 0.1.18 to 1.0.0).
If multiple of these labels appear, the workflow will choose the highest priority bump (major > minor > patch).
### Skipping CRAN or submitting automatically
After a successful tag is created, the `build-and-tag.yaml` workflow also creates a GitHub release. By default, another workflow (`submit-to-cran.yaml`) will run next, automatically **submitting** the new version of **artma** to CRAN.
If your PR or commit message contains the label **`release:skip-cran`**, the CRAN submission is bypassed. In that scenario, the tag is created and the GitHub release is published, but no submission to CRAN occurs.
## Summary
1. **Open a PR** against `master`.
2. **Checks run** automatically (R CMD check, lint, tests).
3. **Merge** once the PR is approved and checks pass.
4. **`release:next-version`?**
- If yes, run `build-and-tag.yaml`, then automatically:
1. Create a new version tag using **v-patch**, **v-minor**, or **v-major** labels.
2. Trigger a GitHub release.
3. By default, run `submit-to-cran.yaml` to submit to CRAN.
- If **`release:skip-cran`** is also present, skip the CRAN submission step.
5. **Enjoy** the newly published version of **artma** or continue development on your next feature branch.
This system ensures that **artma** remains stable, well-tested, and easy to maintain for both developers and end users, while keeping the release process transparent and reproducible.