57 lines
2.0 KiB
YAML
57 lines
2.0 KiB
YAML
---
|
|
name: "Release"
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: "0 0 1 * *" # 1st of every month at midnight
|
|
|
|
jobs:
|
|
release:
|
|
name: Release
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Get Previous Release Tag and Determine Next Tag
|
|
id: determine-next-tag
|
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
|
|
with:
|
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
|
result-encoding: string
|
|
script: |
|
|
const { data: releases } = await github.rest.repos.listReleases({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
per_page: 1,
|
|
});
|
|
|
|
let previousTag = "0.0.0"; // Default if no previous release exists
|
|
if (releases.length > 0) {
|
|
previousTag = releases[0].tag_name;
|
|
}
|
|
|
|
const [previousMajor, previousMinor, previousPatch] = previousTag.split('.').map(Number);
|
|
const currentYear = new Date().getFullYear();
|
|
const currentMonth = new Date().getMonth() + 1; // Months are 0-indexed in JavaScript
|
|
|
|
const nextMajorMinor = `${currentYear}.${currentMonth}`;
|
|
let nextPatch;
|
|
|
|
if (`${previousMajor}.${previousMinor}` === nextMajorMinor) {
|
|
console.log("Month release already exists for the year. Incrementing patch number by 1.");
|
|
nextPatch = previousPatch + 1;
|
|
} else {
|
|
console.log("Month release does not exist for the year. Starting with patch number 0.");
|
|
nextPatch = 0;
|
|
}
|
|
|
|
return `${nextMajorMinor}.${nextPatch}`;
|
|
|
|
- name: Create Release
|
|
uses: ncipollo/release-action@b7eabc95ff50cbeeedec83973935c8f306dfcd0b # v1.20.0
|
|
with:
|
|
generateReleaseNotes: true
|
|
tag: "${{ steps.determine-next-tag.outputs.result }}"
|
|
token: "${{ secrets.GITHUB_TOKEN }}"
|