Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ jobs:
echo "A dependency's license changed: review src/license/texts and commit it"
exit 1
fi
# the release notes are the version's section of CHANGELOG.md; a release candidate (0.2.0-RC1) uses its
# version's (0.2.0). Taken before publishing, so a missing section stops the release before anything is published
- name: Take the release notes from the changelog
run: |
base="${VERSION%%-*}"
awk -v v="$base" '$0 == "## " v {f = 1; next} /^## / {f = 0} f' CHANGELOG.md > release-notes.md
if [ ! -s release-notes.md ]; then
echo "CHANGELOG.md has no section for $base"
exit 1
fi
- name: Import the PGP key
id: import_gpg
uses: crazy-max/ghaction-import-gpg@v7
Expand All @@ -50,6 +60,7 @@ jobs:
- name: Create the GitHub release
uses: softprops/action-gh-release@v2
with:
body_path: release-notes.md
files: |
target/dnp3c-${{ github.ref_name }}.zip
target/dnp3c-${{ github.ref_name }}-cli.jar
Expand Down
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Changelog

## 0.2.0

- **DNP3 IED Certification Procedure 3.1 rev 1**, subset levels 1 to 3, alongside 2.7. Choose the revision with `-rev`; `-revs` lists them.
- **Serial and UDP**, as well as TCP, including 3.1 rev 1's network, multi-drop and collision avoidance tests.
- **Exclusions:** leave a procedure out of a run with a reason, e.g. for a known gap in the device. The report shows it as not run, apart from skipped procedures, with its reason.
- **Reports** say why each procedure was skipped, and name the revision and subset level.
- The runnable jar and the CLI zip list the licenses of the dependencies they bundle.

### Upgrading from 0.1.0

- `-rev` is required, e.g. `-rev 2.7`.
- `outstation.subset.level` is required in the configuration.
- Results are kept by revision and level, e.g. `results/2.7/L2/`.
- Some configuration keys were renamed or removed; an old key is reported as an unknown option. `-write` writes a file with every current option.
- Integration plugins: `IntegrationPlugin`'s per-type methods take the kind of point, and runs can report a procedure as `ProcedureOutcome.Excluded`. See [Automating the tests](docs/automation.md).

## 0.1.0

The first release: the DNP3 IED Certification Procedure, Subset Level 2, version 2.7, over TCP, with a command-line tool, an HTML report, packet capture, and a library for automated runs through an integration plugin.
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ dnp3c is licensed GPL-3.0-only, copyright Step Function I/O LLC.

## Releasing

Pushing a tag releases that version (`.github/workflows/release.yml`): the tag is the version, e.g. `0.1.0`, or `0.1.0-RC1` for a release candidate. The job builds and tests it, publishes `io.stepfunc:dnp3c` to Maven Central, and creates a GitHub release with the CLI zip and the runnable jar. Publishing to Central can't be undone, so tag only what's ready.
Pushing a tag releases that version (`.github/workflows/release.yml`): the tag is the version, e.g. `0.1.0`, or `0.1.0-RC1` for a release candidate. The job builds and tests it, publishes `io.stepfunc:dnp3c` to Maven Central, and creates a GitHub release with the CLI zip and the runnable jar. The release's notes are the version's section of `CHANGELOG.md` (a release candidate uses its version's), so add that section before tagging: without it the job stops before publishing. Keep the changelog high level, with an upgrading list for what breaks. Publishing to Central can't be undone, so tag only what's ready.

## Downstream users

Expand Down
Loading