Skip to content

Commit

Permalink
Switch to draft-release action
Browse files Browse the repository at this point in the history
  • Loading branch information
lucacome committed Mar 20, 2023
1 parent 04fe202 commit a511ed5
Showing 1 changed file with 21 additions and 127 deletions.
148 changes: 21 additions & 127 deletions .github/workflows/draft-release.yaml
Original file line number Diff line number Diff line change
@@ -1,138 +1,32 @@
name: Create Draft Release
name: Create Release Draft

on:
push:
branches:
- release-*
workflow_dispatch:
inputs:
tagFrom:
description: The tag to create the release from.
required: true
type: string
tagTo:
description: The tag to create the release to.
required: true
type: string
branch:
description: The branch where the release will be created.
required: true
type: string

jobs:

binary:
name: Create Draft Release
draft-release:
name: Create Release Draft
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
- run: npm install semver
- uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
continue-on-error: true
with:
script: |
const semver = require('semver');
const ref = context.ref.split("/")[2]
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
}
let tagFrom, tagTo, branch
if (context.eventName === 'workflow_dispatch'){
console.log(`Dispatch run with inputs: ${JSON.stringify(context.payload.inputs)}`)
;({ tagFrom, tagTo, branch } = context.payload.inputs)
} else {
;({ tagFrom, tagTo, branch } = {
tagFrom: latest_release,
tagTo: 'next',
branch: ref,
})
console.log(`Push run with: { tagFrom: ${tagFrom}, tagTo: ${tagTo}, branch: ${branch} }`)
}
console.log(`The latest release was ${tagFrom}`)
let version = tagTo.replace('v', '')
if (version === 'next'){
const temp_notes = (await github.rest.repos.generateReleaseNotes({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
tag_name: tagTo,
previous_tag_name: tagFrom,
target_commitish: branch,
})).data.body
let level
temp_notes.includes("### 🚀 Features") ? level = 'minor' : level = 'patch'
temp_notes.includes("### 💣 Breaking Changes") ? level = 'major' : level = level
version = semver.inc(tagFrom, 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)
- name: Checkout Repository
uses: actions/checkout@24cb9080177205b6e8c946b17badbe402adc938f # v3.4.0

console.log(`The next version is v${version}`)
const footer = `
## Upgrade
- For NGINX, use the v${version} image from our [DockerHub](https://hub.docker.com/r/nginx/nginx-ingress/tags?page=1&ordering=last_updated&name=${version}), [GitHub Container](https://github.com/nginxinc/kubernetes-ingress/pkgs/container/kubernetes-ingress), [Amazon ECR Public Gallery](https://gallery.ecr.aws/nginx/nginx-ingress) or [Quay.io](https://quay.io/repository/nginx/nginx-ingress).
- For NGINX Plus, use the v${version} image from the F5 Container registry or the [AWS Marketplace](https://aws.amazon.com/marketplace/search/?CREATOR=741df81b-dfdc-4d36-b8da-945ea66b522c&FULFILLMENT_OPTION_TYPE=CONTAINER&filters=CREATOR%2CFULFILLMENT_OPTION_TYPE) or build your own image using the v${version} source code.
- For Helm, use version %HELM_CHART_VERSION% of the chart.
## Resources
- Documentation -- https://docs.nginx.com/nginx-ingress-controller/
- Configuration examples -- https://github.com/nginxinc/kubernetes-ingress/tree/v${version}/examples
- Helm Chart -- https://github.com/nginxinc/kubernetes-ingress/tree/v${version}/deployments/helm-chart
- Operator -- https://github.com/nginxinc/nginx-ingress-operator/
`
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: tagFrom,
target_commitish: branch,
}))
let release
if (draft_found){
console.log("Draft found")
release = (await github.rest.repos.updateRelease({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
release_id: draft.id,
tag_name: 'v' + version,
target_commitish: branch,
name: 'v' + version,
body: release_notes.data.body + footer,
draft: true,
}))
} else {
console.log("Draft not found")
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 notes: ${release_notes.data.body}`)
- name: Create/Update Draft
uses: lucacome/draft-release@e1aa7cbd04dbd6baa6c06add5f84e271b21e45ea # v0.1.1
with:
minor-label: 'enhancement'
major-label: 'change'
notes-footer: |
## Upgrade
- For NGINX, use the {{version}} image from our [DockerHub](https://hub.docker.com/r/nginx/nginx-ingress/tags?page=1&ordering=last_updated&name={{version-number}}), [GitHub Container](https://github.com/nginxinc/kubernetes-ingress/pkgs/container/kubernetes-ingress), [Amazon ECR Public Gallery](https://gallery.ecr.aws/nginx/nginx-ingress) or [Quay.io](https://quay.io/repository/nginx/nginx-ingress).
- For NGINX Plus, use the {{version}} image from the F5 Container registry or the [AWS Marketplace](https://aws.amazon.com/marketplace/search/?CREATOR=741df81b-dfdc-4d36-b8da-945ea66b522c&FULFILLMENT_OPTION_TYPE=CONTAINER&filters=CREATOR%2CFULFILLMENT_OPTION_TYPE) or build your own image using the {{version}} source code.
- For Helm, use version %HELM_CHART_VERSION% of the chart.
## Resources
- Documentation -- https://docs.nginx.com/nginx-ingress-controller/
- Configuration examples -- https://github.com/nginxinc/kubernetes-ingress/tree/{{version}}/examples
- Helm Chart -- https://github.com/nginxinc/kubernetes-ingress/tree/{{version}}/deployments/helm-chart
- Operator -- https://github.com/nginxinc/nginx-ingress-operator/

0 comments on commit a511ed5

Please sign in to comment.