mirror of
https://github.com/TheBinaryNinja/tvapp2.git
synced 2026-06-04 06:25:41 -04:00
ci: update release workflow
This commit is contained in:
347
.github/workflows/release.yml
vendored
347
.github/workflows/release.yml
vendored
@@ -74,6 +74,19 @@ on:
|
||||
type: string
|
||||
default: "1"
|
||||
|
||||
# #
|
||||
# environment variables
|
||||
# #
|
||||
|
||||
env:
|
||||
PROJECT_NAME: ${{ github.event.inputs.PROJECT_NAME || 'tvapp2' }}
|
||||
CHANGELOG_MODE_COMMIT: true
|
||||
SHOW_UNCATEGORIZED: false
|
||||
PRERELEASE: false
|
||||
VERSION_RC: '1'
|
||||
BOT_NAME_1: EuropaServ
|
||||
BOT_NAME_DEPENDABOT: dependabot[bot]
|
||||
|
||||
# #
|
||||
# Jobs
|
||||
# #
|
||||
@@ -199,8 +212,8 @@ jobs:
|
||||
|
||||
- name: "🪪 NPM › Install"
|
||||
id: task_release_npm_install
|
||||
working-directory: ./tvapp2
|
||||
run: |
|
||||
cd ./tvapp2
|
||||
npm ci
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.SELF_TOKEN_CL }}
|
||||
@@ -211,8 +224,8 @@ jobs:
|
||||
|
||||
- name: "🪪 Generate IDs"
|
||||
id: task_release_npm_env_generate
|
||||
working-directory: ./tvapp2
|
||||
run: |
|
||||
cd ./tvapp2
|
||||
npm run root:generate
|
||||
|
||||
# #
|
||||
@@ -241,26 +254,338 @@ jobs:
|
||||
# Build Project & Create Zip
|
||||
# #
|
||||
|
||||
- name: "🔨 Build › Stable ( ${{ inputs.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip )"
|
||||
- name: "🔨 Build › Stable ( ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip )"
|
||||
id: task_release_build_st
|
||||
if: ${{ startsWith( inputs.PRERELEASE, false ) }}
|
||||
run: |
|
||||
ls
|
||||
echo Building STABLE Package .zip ${{ env.PACKAGE_VERSION }}
|
||||
zip -r ${{ inputs.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip package.json README.md LICENSE dist/**
|
||||
ls
|
||||
zip -r ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip Dockerfile Dockerfile.aarch64 docker-entrypoint.sh root/ tvapp2/package.json README.md LICENSE
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.ADMINSERV_TOKEN_CL }}
|
||||
|
||||
- name: "🔨 Build › RC ( ${{ inputs.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip )"
|
||||
- name: "🔨 Build › RC ( ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip )"
|
||||
id: task_release_build_rc
|
||||
if: ${{ startsWith( inputs.PRERELEASE, true ) }}
|
||||
run: |
|
||||
cd ./tvapp2
|
||||
ls
|
||||
echo Building PRE-RELEASE Package .zip ${{ env.PACKAGE_VERSION }}
|
||||
zip -r ${{ inputs.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip package.json README.md LICENSE dist/**
|
||||
ls
|
||||
zip -r ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip Dockerfile Dockerfile.aarch64 docker-entrypoint.sh root/ tvapp2/package.json README.md LICENSE
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.ADMINSERV_TOKEN_CL }}
|
||||
|
||||
# #
|
||||
# [ Tag ]: Pre Create
|
||||
#
|
||||
# in order to use the changelog github action, you must pre-create the tag otherwise
|
||||
# the changelog action will have no idea what tag you are going to be creating and
|
||||
# the list of commits will not be for the correct release.
|
||||
# #
|
||||
|
||||
- name: "🔖 Tag › Pre Create ${{ env.PACKAGE_VERSION }}"
|
||||
id: task_release_tag_create
|
||||
uses: rickstaa/action-create-tag@v1
|
||||
with:
|
||||
tag: ${{ env.PACKAGE_VERSION }}
|
||||
tag_exists_error: false
|
||||
message: "Latest release"
|
||||
gpg_private_key: ${{ secrets.ADMINSERV_GPG_KEY_ASC }}
|
||||
gpg_passphrase: ${{ secrets.ADMINSERV_GPG_PASSPHRASE }}
|
||||
|
||||
# #
|
||||
# [ Tag ]: Confirm
|
||||
#
|
||||
# check if tag already exists
|
||||
# #
|
||||
|
||||
- name: "🔖 Tag › Confirm ${{ env.PACKAGE_VERSION }}"
|
||||
id: task_release_tag_get
|
||||
run: |
|
||||
echo "Tag already present: ${{ env.TAG_EXISTS }}"
|
||||
echo "Tag already present: ${{ steps.task_release_tag_create.outputs.tag_exists }}"
|
||||
|
||||
# #
|
||||
# Checksum › Generate
|
||||
# #
|
||||
|
||||
- name: "🆔 Checksum › Stable"
|
||||
id: task_release_checksum_st_set
|
||||
if: ${{ startsWith( inputs.PRERELEASE, false ) }}
|
||||
run: |
|
||||
filename_zip="${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip"
|
||||
sha256="$(shasum --algorithm 256 ${filename_zip} | awk '{ print $1 }')"
|
||||
shasum --algorithm 256 ${filename_zip} > SHA256SUMS.txt
|
||||
echo "FILE_ZIP=${filename_zip}" >> $GITHUB_ENV
|
||||
echo "SHA256SUM=${sha256}" >> $GITHUB_ENV
|
||||
|
||||
- name: "🆔 Checksum › RC"
|
||||
id: task_release_checksum_rc_set
|
||||
if: ${{ startsWith( inputs.PRERELEASE, true ) }}
|
||||
run: |
|
||||
filename_zip="${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip"
|
||||
sha256="$(shasum --algorithm 256 ${filename_zip} | awk '{ print $1 }')"
|
||||
shasum --algorithm 256 ${filename_zip} > SHA256SUMS.txt
|
||||
echo "FILE_ZIP=${filename_zip}" >> $GITHUB_ENV
|
||||
echo "SHA256SUM=${sha256}" >> $GITHUB_ENV
|
||||
|
||||
# #
|
||||
# Checksum › Print
|
||||
# #
|
||||
|
||||
- name: "🆔 Checksum › Print"
|
||||
id: task_release_checksum_st_get
|
||||
run: |
|
||||
echo ${{ env.SHA256SUM }}
|
||||
|
||||
# #
|
||||
# Contributor Images
|
||||
# #
|
||||
|
||||
- name: "🥸 Contributors › Generate"
|
||||
id: task_release_contribs_generate
|
||||
uses: jaywcjlove/github-action-contributors@main
|
||||
with:
|
||||
filter-author: (renovate\[bot\]|renovate-bot|dependabot\[bot\])
|
||||
output: CONTRIBUTORS.svg
|
||||
avatarSize: 42
|
||||
|
||||
# #
|
||||
# Checksum › Add to ZIP file
|
||||
# #
|
||||
|
||||
- name: "📦 Zip › Add Checksum › Stable"
|
||||
id: task_release_zip_st
|
||||
if: ${{ startsWith( inputs.PRERELEASE, false ) }}
|
||||
run: |
|
||||
echo Zipping STABLE Package .zip ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip
|
||||
zip -jr ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip SHA256SUMS.txt
|
||||
ls
|
||||
|
||||
- name: "📦 Zip › Add Checksum › RC"
|
||||
id: task_release_zip_rc
|
||||
if: ${{ startsWith( inputs.PRERELEASE, true ) }}
|
||||
run: |
|
||||
echo Zipping PRE-RELEASE Package .zip ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip
|
||||
zip -jr ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip SHA256SUMS.txt
|
||||
ls
|
||||
|
||||
# #
|
||||
# Changelog › Generate
|
||||
#
|
||||
# generates a changelog from the github api. requires a PREVIOUS_TAG in order to figure
|
||||
# out the changes made between the two versions.
|
||||
#
|
||||
# outputs:
|
||||
# ${{ steps.changelog.outputs.changelog }}
|
||||
# #
|
||||
|
||||
- name: "📝 Changelog › Pre Setup (Categorized Commits)"
|
||||
id: task_release_changelog_categorized_sha_set
|
||||
run: |
|
||||
echo "TAG_LAST=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
|
||||
echo "COMMIT_LAST=$(git rev-parse HEAD)" >> $GITHUB_ENV
|
||||
|
||||
- name: "📝 Changelog › Build (Categorized)"
|
||||
id: task_release_changelog_categorized
|
||||
if: ${{ startsWith( inputs.SHOW_UNCATEGORIZED, false ) }}
|
||||
uses: mikepenz/release-changelog-builder-action@v5
|
||||
with:
|
||||
token: ${{ secrets.ADMINSERV_TOKEN }}
|
||||
#fromTag: "${{ env.TAG_LAST }}"
|
||||
#toTag: "${{ github.ref }}"
|
||||
configuration: ".github/changelog-configuration.json"
|
||||
ignorePreReleases: false
|
||||
commitMode: ${{ inputs.CHANGELOG_MODE_COMMIT }}
|
||||
fetchReleaseInformation: true
|
||||
fetchViaCommits: true
|
||||
configurationJson: |
|
||||
{
|
||||
"template": "## Release Info \n| Item | Value |\n| --- | --- |\n|<sub>📄 ${{ env.FILE_ZIP }}</sub>|<sub>Contains the latest version of the favicon cloudflare worker</sub>|\n|<sub>🏷️ SHA256</sub>|<sub>`${{ env.SHA256SUM }}`</sub>|\n|<sub>🏷️ GUID</sub>|<sub>`${{ steps.task_release_dotenv_get.outputs.GUID }}`</sub>|\n|<sub>🏷️ GUID</sub>|<sub>`${{ steps.task_release_dotenv_get.outputs.GUID }}`</sub>|\n|<sub>🕟 Stamp</sub>|<sub>`#{{FROM_TAG}}-#{{FROM_TAG_DATE}} 🔺 #{{TO_TAG}}-#{{TO_TAG_DATE}}`</sub>|\n|<sub>📅 Last Release</sub>|<sub>`#{{DAYS_SINCE}} days ago`</sub>|\n\n<br>\n\n---\n\n<br>\n\n### What's New\nThis release contains the following changes:\n\n<br>\n\n---\n\n<br>\n\n### Statistics\nHow the files have changed:\n<ul><li><a href='#{{RELEASE_DIFF}}'>Changed files</a> : <b>#{{CHANGED_FILES}}</b> </li><li>Changes : <b>#{{CHANGES}}</b> </li><li>Commits : <b>#{{COMMITS}}</b> </li><li>Additions : <b>#{{ADDITIONS}}</b></li><li>Deletions : <b>#{{DELETIONS}}</b></li><li>PRs (categorized) : <b>#{{CATEGORIZED_COUNT}}</b></li><li>PRs (uncategorized) : <b>#{{UNCATEGORIZED_COUNT}}</b></li><li>PRs (open) : <b>#{{OPEN_COUNT}}</b></li>\n<br />\n</ul>\n\n<br>\n\n---\n\n<br>\n\n### Pull Requests\nThis release is associated with the following pull requests:\n#{{CHANGELOG}}\n\n<br>\n\n---\n\n<br>\n\n"
|
||||
}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ADMINSERV_TOKEN }}
|
||||
|
||||
# #
|
||||
# shows only categorized commits using the commit standards
|
||||
# type(scope): description
|
||||
# type: description
|
||||
# #
|
||||
|
||||
- name: "📝 Changelog › Build (Uncategorized)"
|
||||
id: task_release_changelog_uncategorized
|
||||
if: ${{ startsWith( inputs.SHOW_UNCATEGORIZED, true ) }}
|
||||
uses: mikepenz/release-changelog-builder-action@v5
|
||||
with:
|
||||
token: ${{ secrets.ADMINSERV_TOKEN }}
|
||||
#fromTag: "${{ env.TAG_LAST }}"
|
||||
#toTag: "${{ github.ref }}"
|
||||
configuration: ".github/changelog-configuration.json"
|
||||
ignorePreReleases: false
|
||||
commitMode: ${{ inputs.CHANGELOG_MODE_COMMIT }}
|
||||
fetchReleaseInformation: true
|
||||
fetchViaCommits: true
|
||||
configurationJson: |
|
||||
{
|
||||
"template": "## Release Info \n| Item | Value |\n| --- | --- |\n|<sub>📄 ${{ env.FILE_ZIP }}</sub>|<sub>Contains the latest version of the favicon cloudflare worker</sub>|\n|<sub>🏷️ SHA256</sub>|<sub>`${{ env.SHA256SUM }}`</sub>|\n|<sub>🏷️ GUID</sub>|<sub>`${{ steps.task_release_dotenv_get.outputs.GUID }}`</sub>|\n|<sub>🏷️ GUID</sub>|<sub>`${{ steps.task_release_dotenv_get.outputs.GUID }}`</sub>|\n|<sub>🕟 Stamp</sub>|<sub>`#{{FROM_TAG}}-#{{FROM_TAG_DATE}} 🔺 #{{TO_TAG}}-#{{TO_TAG_DATE}}`</sub>|\n|<sub>📅 Last Release</sub>|<sub>`#{{DAYS_SINCE}} days ago`</sub>|\n\n<br>\n\n---\n\n<br>\n\n### What's New\nThis release contains the following changes:\n\n<br>\n\n---\n\n<br>\n\n### Statistics\nHow the files have changed:\n<ul><li><a href='#{{RELEASE_DIFF}}'>Changed files</a> : <b>#{{CHANGED_FILES}}</b> </li><li>Changes : <b>#{{CHANGES}}</b> </li><li>Commits : <b>#{{COMMITS}}</b> </li><li>Additions : <b>#{{ADDITIONS}}</b></li><li>Deletions : <b>#{{DELETIONS}}</b></li><li>PRs (categorized) : <b>#{{CATEGORIZED_COUNT}}</b></li><li>PRs (uncategorized) : <b>#{{UNCATEGORIZED_COUNT}}</b></li><li>PRs (open) : <b>#{{OPEN_COUNT}}</b></li>\n<br />\n</ul>\n\n<br>\n\n---\n\n<br>\n\n### Commits (#{{UNCATEGORIZED_COUNT}})\nThe following commits are uncategorized:\n#{{UNCATEGORIZED}}\n\n<br>\n\n---\n\n<br>\n\n### Pull Requests\nThis release is associated with the following pull requests:\n#{{CHANGELOG}}\n\n<br>\n\n"
|
||||
}
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ADMINSERV_TOKEN }}
|
||||
|
||||
# #
|
||||
# Changelog › Fetch
|
||||
# #
|
||||
|
||||
- name: "📝 Changelog › Print (Categorized)"
|
||||
if: ${{ startsWith( inputs.SHOW_UNCATEGORIZED, false ) }}
|
||||
run: |
|
||||
echo "${{ steps.task_release_changelog_categorized.outputs.changelog }}"
|
||||
|
||||
- name: "📝 Changelog › Print (Uncategorized)"
|
||||
if: ${{ startsWith( inputs.SHOW_UNCATEGORIZED, true ) }}
|
||||
run: |
|
||||
echo "${{ steps.task_release_changelog_uncategorized.outputs.changelog }}"
|
||||
|
||||
# #
|
||||
# [ Release ]: Post Release
|
||||
#
|
||||
# outputs:
|
||||
# [RELEASE ID]:
|
||||
# ${{ steps.task_release_bundle_rc.outputs.id
|
||||
# ${{ steps.task_release_bundle_st.outputs.id
|
||||
# #
|
||||
|
||||
- name: "🏳️ Post › Stable"
|
||||
if: ${{ startsWith( inputs.PRERELEASE, false ) }}
|
||||
uses: softprops/action-gh-release@v2
|
||||
id: task_release_bundle_st
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ADMINSERV_TOKEN_CL }}
|
||||
with:
|
||||
token: ${{ secrets.ADMINSERV_TOKEN_CL }}
|
||||
name: v${{ env.PACKAGE_VERSION }}
|
||||
tag_name: ${{ env.PACKAGE_VERSION }}
|
||||
target_commitish: ${{ github.event.inputs.branch }}
|
||||
draft: false
|
||||
generate_release_notes: false
|
||||
files: |
|
||||
${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip
|
||||
SHA256SUMS.txt
|
||||
prerelease: false
|
||||
body: |
|
||||
${{ steps.task_release_changelog_categorized.outputs.changelog }}
|
||||
${{ steps.task_release_changelog_uncategorized.outputs.changelog }}
|
||||
|
||||
- name: "🏳️ Post › Release Candidate"
|
||||
if: ${{ startsWith( inputs.PRERELEASE, true ) }}
|
||||
uses: softprops/action-gh-release@v2
|
||||
id: task_release_bundle_rc
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ADMINSERV_TOKEN }}
|
||||
with:
|
||||
token: ${{ secrets.ADMINSERV_TOKEN }}
|
||||
name: v${{ env.PACKAGE_VERSION }}
|
||||
tag_name: ${{ env.PACKAGE_VERSION }}
|
||||
target_commitish: ${{ github.event.inputs.branch }}
|
||||
draft: false
|
||||
generate_release_notes: false
|
||||
files: |
|
||||
${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip
|
||||
SHA256SUMS.txt
|
||||
prerelease: false
|
||||
body: |
|
||||
> [!WARNING]
|
||||
> This is a **release candidate**, which means it is not a stable release and could contain bugs. You should download it at your own risk.
|
||||
|
||||
${{ steps.task_release_changelog_categorized.outputs.changelog }}
|
||||
${{ steps.task_release_changelog_uncategorized.outputs.changelog }}
|
||||
|
||||
# #
|
||||
# Print Status
|
||||
# #
|
||||
|
||||
- name: "🎛️ Status › Print"
|
||||
id: task_release_status_print
|
||||
run: |
|
||||
echo "Printing Variables"
|
||||
echo
|
||||
echo "---- CHANGELOG ---------------------------------------------------------------"
|
||||
echo "${{ steps.task_release_changelog_categorized.outputs.changelog }}"
|
||||
echo "${{ steps.task_changelog_uncategorized.outputs.changelog }}"
|
||||
echo "---- CHANGELOG ---------------------------------------------------------------"
|
||||
echo ""
|
||||
echo ""
|
||||
echo "---- VARIABLES ---------------------------------------------------------------"
|
||||
echo "Package Version ............ ${{ env.PACKAGE_VERSION }}"
|
||||
echo "Tag: Previous .............. ${{ env.TAG_LAST }}"
|
||||
echo "Tag: Now.... ............... ${{ github.ref }}"
|
||||
echo "Last Commit ................ ${{ env.COMMIT_LAST }}"
|
||||
echo "ST Output ID ............... ${{ steps.task_release_bundle_st.outputs.id }}"
|
||||
echo "RC Output ID ............... ${{ steps.task_release_bundle_rc.outputs.id }}"
|
||||
echo "---- CHANGELOG ---------------------------------------------------------------"
|
||||
|
||||
# #
|
||||
# Job › Complete
|
||||
# #
|
||||
|
||||
job-complete:
|
||||
name: >-
|
||||
🆗 Successful Deployment
|
||||
runs-on: ubuntu-latest
|
||||
needs: [ job-initialize, job-release ]
|
||||
env:
|
||||
PACKAGE_VERSION: ${{ needs.job-initialize.outputs.package_version }}
|
||||
GUID: ${{ needs.job-release.outputs.guid }}
|
||||
UUID: ${{ needs.job-release.outputs.uuid }}
|
||||
steps:
|
||||
|
||||
# #
|
||||
# Job › Complete › Download Artifacts
|
||||
# #
|
||||
|
||||
- name: "📁 Download › Saved Artifacts"
|
||||
id: task_complete_artifacts_download
|
||||
uses: actions/download-artifact@v4
|
||||
|
||||
# #
|
||||
# Job › Complete › Get publish timestamp
|
||||
# #
|
||||
|
||||
- name: >-
|
||||
🕛 Get Timestamp
|
||||
id: task_complete_timestamp_get
|
||||
run: |
|
||||
echo "NOW=$(date +'%m-%d-%Y %H:%M:%S')" >> $GITHUB_ENV
|
||||
echo "NOW_SHORT=$(date +'%m-%d-%Y')" >> $GITHUB_ENV
|
||||
echo "NOW_LONG=$(date +'%m-%d-%Y %H:%M')" >> $GITHUB_ENV
|
||||
echo "NOW_DOCKER_LABEL=$(date +'%Y%m%d')" >> $GITHUB_ENV
|
||||
|
||||
# #
|
||||
# Job > Complete > Set ENVs
|
||||
# #
|
||||
|
||||
- name: "🕛 Get Env Vars"
|
||||
id: task_complete_set_envs
|
||||
run: |
|
||||
release_stable_file="release/${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip"
|
||||
release_stable_sha256="$(shasum --algorithm 256 ${release_stable_file} | awk '{ print $1 }')"
|
||||
|
||||
echo "FILE_STABLE=${release_stable_file}" >> $GITHUB_ENV
|
||||
echo "SHA_STABLE=${release_stable_sha256}" >> $GITHUB_ENV
|
||||
|
||||
# #
|
||||
# Job › Complete › Summary of publish
|
||||
# #
|
||||
|
||||
- name: "🆗 Completed: ${{ env.NOW }}"
|
||||
id: task_complete_summary
|
||||
run: |
|
||||
echo ""
|
||||
echo ""
|
||||
echo "| File | Result |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| ------------------------------- | ----------------------- |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| **Project** | ${{ env.PROJECT_NAME }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| **Deploy Time** | ${{ env.NOW }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo ""
|
||||
echo "### File (${{ env.FILE_STABLE }}) |" >> $GITHUB_STEP_SUMMARY"
|
||||
echo "| **SHA256** | ${{ env.SHA_STABLE }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| **GUID** | ${{ env.GUID }} |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| **UUID** | ${{ env.UUID }} |" >> $GITHUB_STEP_SUMMARY
|
||||
|
||||
|
||||
Reference in New Issue
Block a user