Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Protect released changelog in CI #5560

Merged
merged 24 commits into from
Jul 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ec12e69
Protect released changelog in CI
XSAM Jun 28, 2024
409158a
Fix typo
XSAM Jun 28, 2024
d640deb
Test ci: change unreleased content
XSAM Jun 28, 2024
d672de7
Test ci: change released content
XSAM Jun 28, 2024
4f04379
Rename 'Unlock Changelog' to 'Unlock Released Changelog'
XSAM Jun 28, 2024
ed2a233
Rollback changes to changelog
XSAM Jun 28, 2024
8f382a4
Use Reference link comment to separate reference section
XSAM Jun 28, 2024
b7684a4
Fix awk warning
XSAM Jun 28, 2024
f4095e4
Move the position of reference link section
XSAM Jun 28, 2024
25d196b
Simplify the script
XSAM Jun 28, 2024
d441812
Add guideline for adding new release section
XSAM Jul 1, 2024
cb90cf7
Merge branch 'main' into protect-released-changelog
XSAM Jul 1, 2024
7442beb
Merge branch 'main' into protect-released-changelog
XSAM Jul 2, 2024
c05145e
Update CHANGELOG.md
XSAM Jul 2, 2024
2283b30
Merge branch 'main' into protect-released-changelog
XSAM Jul 3, 2024
affb7e4
Merge branch 'main' into protect-released-changelog
XSAM Jul 3, 2024
cc3dbf5
Merge branch 'main' into protect-released-changelog
XSAM Jul 5, 2024
78b3703
Move action logic to a script
XSAM Jul 5, 2024
a7f0349
Merge branch 'main' into protect-released-changelog
XSAM Jul 5, 2024
2d73441
Rename action name
XSAM Jul 5, 2024
a54963b
Update comments
XSAM Jul 5, 2024
e5463b6
Remove the trigger on the main branch
XSAM Jul 5, 2024
ebd1250
Merge branch 'main' into protect-released-changelog
pellared Jul 8, 2024
11360b1
Merge branch 'main' into protect-released-changelog
pellared Jul 8, 2024
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
20 changes: 20 additions & 0 deletions .github/workflows/protect-released-changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This action against that any PR targeting the main branch touches released
# sections in CHANGELOG file. If change to released CHANGELOG is required, like
# doing a release, add the \"Unlock Released Changelog\" label to disable this action.

name: Protect released changelog

on:
pull_request:
types: [opened, synchronize, reopened, labeled, unlabeled]
jobs:
protect-released-changelog:
runs-on: ubuntu-latest
if: ${{ !contains(github.event.pull_request.labels.*.name, 'Unlock Released Changelog')}}

steps:
- uses: actions/checkout@v4

- name: Protect the released changelog
run: |
./verify_released_changelog.sh ${{ github.base_ref }}
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm

## [Unreleased]

<!-- Released section -->
<!-- Don't change this section unless doing release -->

## [1.28.0/0.50.0/0.4.0] 2024-07-02

### Added
Expand Down Expand Up @@ -3087,6 +3090,8 @@ It contains api and sdk for trace and meter.
[0.1.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.1.1
[0.1.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.1.0

<!-- Released section ended -->

[Go 1.22]: https://go.dev/doc/go1.22
[Go 1.21]: https://go.dev/doc/go1.21
[Go 1.20]: https://go.dev/doc/go1.20
Expand Down
1 change: 1 addition & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Update go.mod for submodules to depend on the new release which will happen in t
```

- Move all the `Unreleased` changes into a new section following the title scheme (`[<new tag>] - <date of release>`).
- Make sure the new section is under the comment for released section, like `<!-- Released section -->`, so it is protected from being overwritten in the future.
- Update all the appropriate links at the bottom.

4. Push the changes to upstream and create a Pull Request on GitHub.
Expand Down
42 changes: 42 additions & 0 deletions verify_released_changelog.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#!/bin/bash

# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

TARGET="${1:?Must provide target ref}"

FILE="CHANGELOG.md"
TEMP_DIR=$(mktemp -d)
echo "Temp folder: $TEMP_DIR"

# Only the latest commit of the feature branch is available
# automatically. To diff with the base branch, we need to
# fetch that too (and we only need its latest commit).
git fetch origin "${TARGET}" --depth=1

# Checkout the previous version on the base branch of the changelog to tmpfolder
git --work-tree="$TEMP_DIR" checkout FETCH_HEAD $FILE

PREVIOUS_FILE="$TEMP_DIR/$FILE"
CURRENT_FILE="$FILE"
PREVIOUS_LOCKED_FILE="$TEMP_DIR/previous_locked_section.md"
CURRENT_LOCKED_FILE="$TEMP_DIR/current_locked_section.md"

# Extract released sections from the previous version
awk '/^\<!-- Released section --\>/ {flag=1} /^\<!-- Released section ended --\>/ {flag=0} flag' "$PREVIOUS_FILE" > "$PREVIOUS_LOCKED_FILE"

# Extract released sections from the current version
awk '/^\<!-- Released section --\>/ {flag=1} /^\<!-- Released section ended --\>/ {flag=0} flag' "$CURRENT_FILE" > "$CURRENT_LOCKED_FILE"

# Compare the released sections
if ! diff -q "$PREVIOUS_LOCKED_FILE" "$CURRENT_LOCKED_FILE"; then
echo "Error: The released sections of the changelog file have been modified."
diff "$PREVIOUS_LOCKED_FILE" "$CURRENT_LOCKED_FILE"
rm -rf "$TEMP_DIR"
false
fi

rm -rf "$TEMP_DIR"
echo "The released sections remain unchanged."
Loading