# # # @type github workflow # @author Aetherinox # @url https://github.com/Aetherinox # @usage publishes a new release on Github # # @secrets secrets.SELF_TOKEN self github personal access token (fine-grained) # secrets.SELF_TOKEN_CL self github personal access token (classic) # secrets.NPM_TOKEN self npmjs access token # secrets.PYPI_API_TOKEN self Pypi API token (production site) - https://pypi.org/ # secrets.PYPI_API_TEST_TOKEN self Pypi API token (test site) - https://test.pypi.org/ # secrets.SELF_DOCKERHUB_TOKEN self Dockerhub token # secrets.ORG_BINARYNINJA_TOKEN org github personal access token (fine-grained) # secrets.ORG_BINARYNINJA_TOKEN_CL org github personal access token (classic) # secrets.ORG_BINARYNINJA_DOCKERHUB_TOKEN org dockerhub secret # secrets.ORG_BINARYNINJA_GITEA_TOKEN org gitea personal access token (classic) with package:write permission # secrets.BINARYSERV_GPG_KEY_ASC bot gpg private key (armored) | BEGIN PGP PRIVATE KEY BLOCK # secrets.BINARYSERV_GPG_PASSPHRASE bot gpg private key passphrase # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_RELEASES discord webhook to report release notifications from github to discord # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_WORKFLOWS discord webhook to report workflow notifications from github to discord # secrets.DISCORD_WEBHOOK_CHAN_GITHUB_TVAPP2_UPDATES discord webhook to report activity notifications from github to discord # # @local these workflows can be tested locally through the use of `act` # https://github.com/nektos/act # Extract act to folder # Add system env var with path to act.exe # Run the commands: # git pull https://github.com/username/repo # act -W .github/workflows/labels-create.yml -P ubuntu-latest=catthehacker/ubuntu:full-22.04 # act -W .github/workflows/labels-create.yml -s TOKEN_CL=XXXXXXXXXX --pull=false # # name: '๐Ÿ“ฆ Release โ€บ Github' run-name: '๐Ÿ“ฆ Release โ€บ Github' # # # Triggers # # on: workflow_dispatch: inputs: # # # Name of the plugin to use when creating the release zip filename # e.g: tvapp2-v1.0.0.zip # # PROJECT_NAME: description: '๐Ÿ“ฆ Name of App' required: true default: 'tvapp2' type: string # # # ENABLE: the changelog generated in releases tab will only display single commits. # DISABLE: the changelog shows pull requests completed based on their labels # # CHANGELOG_MODE_COMMIT: description: '๐Ÿ“‘ Use Commits Instead of PRs' required: true default: true type: boolean # # # ENABLE: Will show all types of commits, including uncategorized # DISABLE: WIll only show actions that have been categorized using the format # type(scope): description # type: description # # SHOW_UNCATEGORIZED: description: '๐Ÿ—‚๏ธ Show Uncategorized Commits' required: true default: false type: boolean # # # ENABLE: released version will be marked as pre-release # DISABLE: release version will be marked as stable / normal release # # PRERELEASE: description: '๐Ÿงช Build RC (Pre-release)' required: true default: false type: boolean # # # Release Candidate version number # this will be added to the end of your released app in the releases page. # e.g: tvapp2-v1.0.0-rc.1 # # VERSION_RC: description: '๐Ÿงช RC (Pre-release) Ver (tvapp2-rc.v1)' required: false 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' ASSIGN_USER: Aetherinox BOT_NAME_1: EuropaServ BOT_NAME_2: BinaryServ BOT_NAME_DEPENDABOT: dependabot[bot] BOT_NAME_RENOVATE: renovate[bot] # # # Jobs # # jobs: # # # Jobs โ€บ Initialize # # job-initialize: name: >- ๐Ÿ“ฆ Initialize runs-on: ubuntu-latest outputs: package_version: ${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }} permissions: contents: write packages: write steps: # # # Initialize โ€บ Start # # - name: 'โœ… Start' id: task_initialize_start run: | echo "Starting build" # # # Initialize โ€บ Set Env Variables # # - name: >- ๐Ÿ•› Get Timestamp id: task_initialize_label_set_timestamp 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 # # # Initialize โ€บ Checkout # # - name: 'โ˜‘๏ธ Checkout' id: task_initialize_checkout uses: actions/checkout@v4 with: fetch-depth: 0 # # # Initialize โ€บ Set โ€บ Package.json โ€บ Version # # - name: '๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ Package Version โ€บ Set' id: task_initialize_package_getversion working-directory: ./tvapp2 run: | VER=$(cat package.json | jq -r '.version') echo "PACKAGE_VERSION=$VER" >> $GITHUB_OUTPUT # # # Initialize โ€บ Get โ€บ Package.json โ€บ Version # # - name: '๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ Package Version โ€บ Get' id: task_initialize_package_version_get run: | echo "VERSION: ${{ steps.task_initialize_package_getversion.outputs.PACKAGE_VERSION }}" # # # Job โ€บ Release โ€บ Github # # job-release: name: >- ๐Ÿ“ฆ Publish โ€บ Release runs-on: ubuntu-latest needs: [ job-initialize ] env: PACKAGE_VERSION: ${{ needs.job-initialize.outputs.package_version }} outputs: guid: ${{ steps.task_release_dotenv_get.outputs.GUID }} uuid: ${{ steps.task_release_dotenv_get.outputs.UUID }} permissions: contents: write packages: write steps: # # # Release โ€บ Checkout # # - name: 'โ˜‘๏ธ Checkout' id: task_release_checkout uses: actions/checkout@v4 with: fetch-depth: 0 # # # Release โ€บ Set Env Variables # # - name: >- ๐Ÿ•› Get Timestamp id: task_release_label_set_timestamp 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 # # # Release โ€บ Print Version Debug # # - name: '๐Ÿชช Test Next Job Version' id: task_release_debug_print_ver run: | echo "VERSION: ${{ env.PACKAGE_VERSION }}" # # # Release โ€บ Install package via NPM # # - name: '๐Ÿชช NPM โ€บ Install' id: task_release_npm_install working-directory: ./tvapp2 run: | npm ci env: NODE_AUTH_TOKEN: ${{ secrets.SELF_TOKEN_CL }} # # # Release โ€บ Execute npm generate so that a uuid and guid can be created # # - name: '๐Ÿชช Generate IDs' id: task_release_npm_env_generate working-directory: ./tvapp2 run: | npm run root:generate # # # Release โ€บ .ENV โ€บ Get # Get guid and uuid from env variable generated by npm # # - name: '๐Ÿชช .ENV โ€บ Get' id: task_release_dotenv_get uses: falti/dotenv-action@v1 with: path: "./tvapp2/.env" # # # Release โ€บ .ENV โ€บ Print (Debug) # Show guid and uuid from env variable generated by npm # # - name: '๐Ÿชช .ENV โ€บ Read' id: task_dotenv_debug_print run: | echo "GUID: ${{ steps.task_release_dotenv_get.outputs.GUID }}" echo "UUID: ${{ steps.task_release_dotenv_get.outputs.UUID }}" # # # Release โ€บ Build โ€บ Stable # # - name: '๐Ÿ”จ Build โ€บ Stable ( ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip )' id: task_release_build_st if: ${{ startsWith( inputs.PRERELEASE, false ) }} run: | echo Building STABLE Package ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip zip -r ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip Dockerfile Dockerfile.aarch64 docker-compose.yml docker-entrypoint.sh root/ tvapp2/package.json README.md LICENSE echo Building STABLE Package ${{ env.PROJECT_NAME }}-v${{ env.PACKAGE_VERSION }}-docker-compose.zip zip -r ${{ env.PROJECT_NAME }}-v${{ env.PACKAGE_VERSION }}-docker-compose.zip docker-compose.yml README.md LICENSE env: NODE_AUTH_TOKEN: ${{ secrets.ADMINSERV_TOKEN_CL }} # # # Release โ€บ Build โ€บ Release Candidate # # - 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: | echo Building PRE-RELEASE Package ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip zip -r ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip Dockerfile Dockerfile.aarch64 docker-compose.yml docker-entrypoint.sh root/ tvapp2/package.json README.md LICENSE echo Building PRE-RELEASE Package ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}-docker-compose.zip zip -r ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}-docker-compose.zip docker-compose.yml README.md LICENSE env: NODE_AUTH_TOKEN: ${{ secrets.ADMINSERV_TOKEN_CL }} # # # Release โ€บ 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 }} # # # Release โ€บ 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 }}" # # # Release โ€บ Checksum โ€บ Stable # # - 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 filename_compose_zip="${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-docker-compose.zip" sha256_compose="$(shasum --algorithm 256 ${filename_compose_zip} | awk '{ print $1 }')" echo "FILE_COMPOSE_ZIP=${filename_compose_zip}" >> $GITHUB_ENV # # # Release โ€บ Checksum โ€บ Release Candidate # # - 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 filename_compose_zip="${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}-docker-compose.zip" sha256_compose="$(shasum --algorithm 256 ${filename_compose_zip} | awk '{ print $1 }')" echo "FILE_COMPOSE_ZIP=${filename_compose_zip}" >> $GITHUB_ENV # # # Release โ€บ Checksum โ€บ Print # # - name: '๐Ÿ†” Checksum โ€บ Print' id: task_release_checksum_st_get run: | echo ${{ env.SHA256SUM }} # # # Release โ€บ 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 # # # Release โ€บ Checksum โ€บ Add โ€บ Stable # # - 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 # # # Release โ€บ Checksum โ€บ Add โ€บ Release Candidate # # - 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 # # # Release โ€บ 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 ) || startsWith( env.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 || env.CHANGELOG_MODE_COMMIT }} fetchReleaseInformation: true fetchViaCommits: true configurationJson: | { "template": "## Release Info \n| Item | Value |\n| --- | --- |\n|๐Ÿ“„ ${{ env.FILE_ZIP }}|Contains TVApp2 node source code and Docker build kit|\n|๐Ÿ“„ ${{ env.FILE_COMPOSE_ZIP }}|Contains `docker-compose.yml`|\n|๐Ÿท๏ธ SHA256|`${{ env.SHA256SUM }}`|\n|๐Ÿท๏ธ GUID|`${{ steps.task_release_dotenv_get.outputs.GUID }}`|\n|๐Ÿท๏ธ UUID|`${{ steps.task_release_dotenv_get.outputs.UUID }}`|\n|๐Ÿ•Ÿ Stamp|`#{{FROM_TAG}}-#{{FROM_TAG_DATE}} ๐Ÿ”บ #{{TO_TAG}}-#{{TO_TAG_DATE}}`|\n|๐Ÿ“… Last Release|`#{{DAYS_SINCE}} days ago`|\n\n
\n\n---\n\n
\n\n### What's New\nThis release contains the following changes:\n\n
\n\n---\n\n
\n\n### Statistics\nHow the files have changed:\n\n\n
\n\n---\n\n
\n\n### Pull Requests\nThis release is associated with the following pull requests:\n#{{CHANGELOG}}\n\n
\n\n---\n\n
\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 ) || startsWith( env.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 || env.CHANGELOG_MODE_COMMIT }} fetchReleaseInformation: true fetchViaCommits: true configurationJson: | { "template": "## Release Info \n| Item | Value |\n| --- | --- |\n|๐Ÿ“„ ${{ env.FILE_ZIP }}|Contains TVApp2 node source code and Docker build kit|\n|๐Ÿ“„ ${{ env.FILE_COMPOSE_ZIP }}|Contains `docker-compose.yml`|\n|๐Ÿท๏ธ SHA256|`${{ env.SHA256SUM }}`|\n|๐Ÿท๏ธ GUID|`${{ steps.task_release_dotenv_get.outputs.GUID }}`|\n|๐Ÿท๏ธ UUID|`${{ steps.task_release_dotenv_get.outputs.UUID }}`|\n|๐Ÿ•Ÿ Stamp|`#{{FROM_TAG}}-#{{FROM_TAG_DATE}} ๐Ÿ”บ #{{TO_TAG}}-#{{TO_TAG_DATE}}`|\n|๐Ÿ“… Last Release|`#{{DAYS_SINCE}} days ago`|\n\n
\n\n---\n\n
\n\n### What's New\nThis release contains the following changes:\n\n
\n\n---\n\n
\n\n### Statistics\nHow the files have changed:\n\n\n
\n\n---\n\n
\n\n### Commits (#{{UNCATEGORIZED_COUNT}})\nThe following commits are uncategorized:\n#{{UNCATEGORIZED}}\n\n
\n\n---\n\n
\n\n### Pull Requests\nThis release is associated with the following pull requests:\n#{{CHANGELOG}}\n\n
\n\n" } env: GITHUB_TOKEN: ${{ secrets.ADMINSERV_TOKEN }} # # # Changelog > Convert step into ENV # # This is a requirement in order for the action mikepenz/release-changelog-builder-action@v5 to work properly. # If you use special characters like quotes and tildes in your push comments, bash will have no way of knowing # if it's part of the changelog, or code itself. # # By converting the step into an env var, we quote the text, and it fixes the issue. # # - name: "๐Ÿ™Š Changelog โ€บ Step to Env โ€บ Categorized" id: task_release_changelog_escape_categorized env: CHANGELOG_CATEGORIZED: ${{ steps.task_release_changelog_categorized.outputs.changelog }} run: CHANGELOG_CAT="${CHANGELOG_CATEGORIZED}" echo get-changelog-cat=${CHANGELOG_CAT} >> $GITHUB_OUTPUT echo "$CHANGELOG_CATEGORIZED" - name: "๐Ÿ™Š Changelog โ€บ Step to Env โ€บ Uncategorized" id: task_release_changelog_escape_uncategorized env: CHANGELOG_UNCATEGORIZED: ${{ steps.task_release_changelog_uncategorized.outputs.changelog }} run: echo "$CHANGELOG_UNCATEGORIZED" # # # Changelog โ€บ Fetch # # - name: '๐Ÿ“ Changelog โ€บ Print (Categorized)' id: task_release_changelog_print_categorized if: | startsWith( inputs.SHOW_UNCATEGORIZED, false ) || startsWith( env.SHOW_UNCATEGORIZED, false ) run: | echo "$CHANGELOG_CATEGORIZED" echo "${{ steps.task_release_changelog_escape_categorized.outputs.get-changelog-cat }}" - name: '๐Ÿ“ Changelog โ€บ Print (Uncategorized)' id: task_release_changelog_print_uncategorized if: | startsWith( inputs.SHOW_UNCATEGORIZED, true ) || startsWith( env.SHOW_UNCATEGORIZED, true ) run: | echo "CHANGELOG_UNCATEGORIZED" echo "$ {{ env.CHANGELOG_UNCATEGORIZED }}" # # # artifacts > download # # - name: "โš™๏ธ Debug โ€บ Clean Dist Folder" run: | tree # # # [ Release ]: Post Release # # outputs: # [RELEASE ID]: # ${{ steps.task_release_bundle_rc.outputs.id # ${{ steps.task_release_bundle_st.outputs.id # # - name: "๐Ÿณ๏ธ Post โ€บ Stable" id: task_release_bundle_st if: | startsWith( inputs.PRERELEASE, false ) || startsWith( env.PRERELEASE, false ) uses: softprops/action-gh-release@v2 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 }}-v${{ env.PACKAGE_VERSION }}-docker-compose.zip ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip SHA256SUMS.txt prerelease: false body: | ${{ env.CHANGELOG_CATEGORIZED }} ${{ env.CHANGELOG_UNCATEGORIZED }} - name: "๐Ÿณ๏ธ Post โ€บ Release Candidate" id: task_release_bundle_rc if: | startsWith( inputs.PRERELEASE, true ) || startsWith( env.PRERELEASE, true ) uses: softprops/action-gh-release@v2 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 }}-v${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}-docker-compose.zip ${{ 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. ${{ env.CHANGELOG_CATEGORIZED }} ${{ env.CHANGELOG_UNCATEGORIZED }} # # # Print Status # # - name: "๐ŸŽ›๏ธ Status โ€บ Print" id: task_release_status_print run: | echo "Printing Variables" echo echo "---- CHANGELOG ---------------------------------------------------------------" echo "${{ env.CHANGELOG_CATEGORIZED }}" echo "${{ env.CHANGELOG_UNCATEGORIZED }}" 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 ---------------------------------------------------------------" # # # Upload artifacts > release files # # - name: >- ๐Ÿ“‹ Upload Artifacts โ€บ ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip id: task_release_artifact uses: actions/upload-artifact@v4 if: always() with: name: "${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}" path: ${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}.zip retention-days: 30 # # # 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="${{ env.PROJECT_NAME }}-${{ env.PACKAGE_VERSION }}/${{ 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 "This is the main release. It contains all required docker files, and the TVApp2 `package.json`" >> $GITHUB_STEP_SUMMARY echo "| File | Result |" >> $GITHUB_STEP_SUMMARY echo "| ------------------------------- | ----------------------- |" >> $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