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
7 changes: 0 additions & 7 deletions .chglog.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ jobs:
build-snapshot:
name: Build Snapshot
runs-on: ubuntu-22.04
if: ${{ !startsWith(github.ref, 'refs/heads/release-') }}
if: ${{ !startsWith(github.ref_name, 'release-') }}
steps:
- uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -136,7 +136,7 @@ jobs:
if: always()

trigger-release-workflow:
if: startsWith(github.ref, 'refs/heads/release-')
if: startsWith(github.ref_name, 'release-')
needs: [ lint, unit-test, component-test, performance-test ]
uses: ./.github/workflows/release-branch.yml
secrets: inherit
130 changes: 58 additions & 72 deletions .github/workflows/release-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,75 +30,71 @@ jobs:
script: |
const semver = require('semver');
const ref = context.ref.split("/")[2]
const version = ref.split("-")[1]
console.log(`The release version is v${version}`)

const releases = (await github.rest.repos.listReleases({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
per_page: 100,
})).data
let latest_release
const latest_release_current_branch = releases.find(release => !release.draft && release.tag_name.startsWith("v" + ref.split("-")[1]))
if (latest_release_current_branch === undefined){
latest_release = (await github.rest.repos.getLatestRelease({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
})).data.tag_name
} else {
latest_release = latest_release_current_branch.tag_name
}
console.log(`The latest release was ${latest_release}`)
const temp_notes = (await github.rest.repos.generateReleaseNotes({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
tag_name: "next",
previous_tag_name: latest_release,
target_commitish: ref,
})).data.body
let level
temp_notes.includes("### 🚀 Features") ? level = 'minor' : level = 'patch'
temp_notes.includes("### 💣 Breaking Changes") ? level = 'major' : level = level
const version = semver.inc(latest_release, level)
console.log(`The level of the release is ${level}`)
const draft = releases.find((r) => r.draft && r.tag_name === "v"+version)
const draft_found = !(draft === undefined)
console.log(`The next version is v${version}`)
const footer = `
## Resources
- Documentation -- https://github.com/nginx/agent#readme
`
const release_notes = (await github.rest.repos.generateReleaseNotes({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
tag_name: 'v' + version,
previous_tag_name: latest_release,
target_commitish: ref,
}))
let release
if (draft_found){
console.log("Draft release already exists. Deleting current draft release and recreating it")
release = (await github.rest.repos.deleteRelease({

const latest_release = (await github.rest.repos.getLatestRelease({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
release_id: draft.id,
}))
}
release = (await github.rest.repos.createRelease({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
tag_name: 'v' + version,
target_commitish: ref,
name: 'v' + version,
body: release_notes.data.body + footer,
draft: true,
}))
console.log(`Release created: ${release.data.html_url}`)
console.log(`Release ID: ${release.data.id}`)
console.log(`Release notes: ${release_notes.data.body}`)
console.log(`Release Upload URL: ${release.data.upload_url}`)
})).data.tag_name

return {
version: version,
release_id: release.data.id,
release_upload_url: release.data.upload_url,
console.log(`The latest release was ${latest_release}`)

if (latest_release === "v"+version) {
core.setFailed(`A published release already exists for ${latest_release}`)
} else {
const draft = releases.find((r) => r.draft && r.tag_name === "v"+version)
const draft_found = !(draft === undefined)

let release
if (draft_found){
console.log("Draft release already exists. Deleting current draft release and recreating it")
release = (await github.rest.repos.deleteRelease({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
release_id: draft.id,
}))
}

const release_notes = (await github.rest.repos.generateReleaseNotes({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
tag_name: "v"+version,
previous_tag_name: latest_release,
target_commitish: ref,
}))

const footer = `
## Resources
- Documentation -- https://github.com/nginx/agent#readme
`

release = (await github.rest.repos.createRelease({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
tag_name: "v"+version,
target_commitish: ref,
name: "v"+version,
body: release_notes.data.body + footer,
draft: true,
}))

console.log(`Release created: ${release.data.html_url}`)
console.log(`Release ID: ${release.data.id}`)
console.log(`Release notes: ${release_notes.data.body}`)
console.log(`Release Upload URL: ${release.data.upload_url}`)

return {
version: version,
release_id: release.data.id,
release_upload_url: release.data.upload_url,
}
}
- name: Set Environment Variables
run: |
Expand All @@ -111,23 +107,13 @@ jobs:
sudo apt-get update
sudo apt-get install -y gpgv1 monkeysphere
go install github.com/goreleaser/nfpm/v2/cmd/nfpm@v2.18.0
go install github.com/goreleaser/chglog/cmd/chglog@v0.2.0
- name: Tag release
env:
PUBLISH_PACKAGE: ${{ inputs.publishPackages }}
run: |
git config --global user.name 'github-actions'
git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com'

git tag -a "v${{env.VERSION}}" -m "CI Autogenerated"
git tag -a "sdk/v${{env.VERSION}}" -m "CI Autogenerated"
- name: Update Changelog
if: ${{ inputs.publishPackages == true }}
run: |
chglog init -o ./scripts/changelog.yml .
chglog format -i ./scripts/changelog.yml --template repo > ./docs/CHANGELOG.md
git commit -am "Updating changelog"
git push
- name: Push Tags
if: ${{ inputs.publishPackages == true }}
run: |
Expand Down Expand Up @@ -203,7 +189,7 @@ jobs:
script: |
const { repo, owner } = context.repo;
const result = await github.rest.pulls.create({
title: 'Merge ${{ github.event.inputs.branch }} back into main',
title: 'Merge ${{ github.ref_name }} back into main',
owner,
repo,
head: '${{ github.ref_name }}',
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ Minimum system sizing recommendations for NGINX Agent:
Get involved with the project by contributing! Please see our [contributing guide](CONTRIBUTING.md) for details.

# Change Log
See our [changelog](docs/CHANGELOG.md) to keep track of updates.
See our [release page](https://github.com/nginx/agent/releases) to keep track of updates.

# License
[Apache License, Version 2.0](LICENSE)
Loading