File: reconciliation.md

package info (click to toggle)
puppetdb 8.8.1-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 19,692 kB
  • sloc: javascript: 23,285; ruby: 5,620; sh: 3,457; python: 389; xml: 114; makefile: 38
file content (73 lines) | stat: -rw-r--r-- 2,558 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# Reconciling Git commits and Jira tickets

The rake task `release:reconcile` will verify three things. First, that every commit either,
has an associated PDB ticket, or is prefixed by one of `(docs)`, `(maint)`, `(i18n)`.
Second, that every Jira ticket that has the fixVersion `PDB <release_version>` has an associate
git commit. And third it will verify that every commit whose message includes `(PDB-####)`
has a Jira ticket with the fixVersion `PDB <release_version>`.

It does not require authentication as it relies on our Jira API
being open to the public, and the git history residing on your computer.

## How to run

First, ensure you have checked out both `puppetdb` and `pe-puppetdb-extensions` and that both
branches are up to date with the `puppetlabs/[pupppetdb/pe-puppetdb-extension]` repo. This
task will look at the git history in your currently active branches, if it is inaccurate, your
results will be inaccurate as well.

```
bundle install
bundle exec rake release:reconcile[<release_version>,<previous_version>]
```

The rake task always requires 2 arguments to be provided, the version you will be releasing,
and the previously released version. Below are the two cases you'll run into.


For a z release, the previous release is always the proceeding release with the same `X.Y` version.

```
# Z release
bundle exec rake release:reconcile[5.2.10,5.2.9]
```

For an x or a y release, the previous version is the most recent release on the most recent y branch.
```
# X/Y release
# If the previous release was also a y release
bundle exec rake release:reconcile[6.7.0,6.6.0]

# or if y release has a maintained branch
bundle exec rake release:reconcile[6.4.0,6.3.1]
```

## Options

### Environment Variables

Environment variables all have a default value in the rake task,
but are also configurable on the command line.

* `PDB_PATH` - path to the PuppetDB repo (Default: `./`)
* `PDB_PE_PATH` - path to the pe-puppetdb-extensions repo (Default `../pe-puppetdb-extensions`)

## Output

The rake task will output nothing if all commits have a corresponding `PDB` ticket with the correct
`fixVersion`.

For commits that are not prefixed by a `(PDB-###)`, `(docs)`, `(maint)`, or `(i18n)`
it will output
```
INVESTIGATE! <repo> <commit message>
```

For mismatches between Jira and Git it will print one of
```
<ticket> exists in JIRA with fixVersion '<fix_version>', but there is no corresponding git commit
```
or
```
<ticket> has a git commit(s) <sha(s)> in <repo>, but its JIRA ticket does not have fixVersion '<fix_version>'
```