Skip to content

Auto Releaser By MicroResearch Corporation #52

Auto Releaser By MicroResearch Corporation

Auto Releaser By MicroResearch Corporation #52

name: Auto Releaser By MicroResearch Corporation
on:
workflow_dispatch: # Manual trigger (optional)
schedule:
- cron: '0 0 * * *' # Runs daily at midnight UTC
jobs:
auto-release:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
# Step 1: Get latest release date
- name: Get latest release date
id: get_release
uses: actions/github-script@v7
with:
script: |
try {
const latestRelease = await github.rest.repos.getLatestRelease({
owner: context.repo.owner,
repo: context.repo.repo
});
return latestRelease.data.published_at;
} catch (error) {
return null;
}
# Step 2: Check if 3 days passed
- name: Check if 3 days passed
id: check_days
run: |
latest_release="${{ steps.get_release.outputs.result }}"
if [ -n "$latest_release" ]; then
release_ts=$(date -d "$latest_release" +%s)
now_ts=$(date +%s)
diff_days=$(( (now_ts - release_ts) / 86400 ))
echo "Days since last release: $diff_days"
if [ "$diff_days" -lt 3 ]; then
echo "Less than 3 days since last release, exiting..."
exit 0
fi
# Step 3: Prepare project files (exclude unwanted files/folders)
- name: Prepare project files
run: |
rm -rf release
mkdir -p release
rsync -av --exclude='.git' --exclude='.github' --exclude='.vscode' \
--exclude='.gitignore' --exclude='package.json' --exclude='Structure.md' \
./ release/
echo "Project files copied to release folder."
# Step 4: Create ZIP package
- name: Create ZIP package
run: |
ZIP_FILE="release_$(date +'%Y.%m.%d').zip"
zip -r "$ZIP_FILE" release
echo "ZIP file created: $ZIP_FILE"
echo "ZIP_FILE=$ZIP_FILE" >> $GITHUB_ENV
# Step 5: Generate release notes automatically
- name: Generate release notes
id: release_notes
run: |
TAG="v$(date +'%Y.%m.%d')"
NOTES="Release $TAG\n\n"
NOTES+="Author: M Ramzan Ch\nCompany: MicroResearch Corporation\nReleased By: MR Intelligence\nPublished By: Pro Badney"
echo -e "$NOTES" > release_notes.txt
echo "Release notes generated."
echo "RELEASE_NOTES=$(cat release_notes.txt)" >> $GITHUB_ENV
# Step 6: Publish GitHub release with ZIP and notes
- name: Create new release with ZIP
uses: ncipollo/release-action@v1
with:
tag: "v$(date +'%Y.%m.%d')"
name: "v$(date +'%Y-%m-%d')"
body: ${{ env.RELEASE_NOTES }}
draft: false
prerelease: false
files: ${{ env.ZIP_FILE }}