Auto Releaser By MicroResearch Corporation #52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |