🌑 Cloudflare Worker › Release #11
This file contains 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
# # | |
# @parent github workflow | |
# @desc publish release to github | |
# version of release fetched from /src/package.json. | |
# ensure `cloudflare/wrangler-action@v3` worker uses env variable "production" | |
# @author Aetherinox | |
# @url https://github.com/Aetherinox | |
# # | |
run-name: "🌑 Cloudflare Worker › Release" | |
name: "☁️ Worker › Release" | |
# # | |
# triggers | |
# # | |
on: | |
workflow_dispatch: | |
inputs: | |
# # | |
# Name of the plugin to use when creating the release zip filename | |
# e.g: searxico-cf-worker-v1.0.0.zip | |
# # | |
PLUGIN_NAME: | |
description: "📦 Name of App" | |
required: true | |
default: 'searxico' | |
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: searxico-cf-worker-v1.0.0-rc.1 | |
# # | |
VERSION_RC: | |
description: "🧪 RC (Pre-release) Ver (searxico-cf-worker-rc.v1)" | |
required: false | |
type: string | |
default: "1" | |
# # | |
# environment variables | |
# # | |
env: | |
PLUGIN_NAME: ${{ github.event.inputs.PLUGIN_NAME || 'searxico' }} | |
CHANGELOG_MODE_COMMIT: true | |
SHOW_UNCATEGORIZED: false | |
PRERELEASE: false | |
VERSION_RC: '1' | |
WORKER_ID: 'favicon' | |
FOLDER_DIST: 'dist' | |
BOT_NAME_1: AdminServ | |
BOT_NAME_2: AdminServX | |
BOT_NAME_3: EuropaServ | |
BOT_NAME_DEPENDABOT: dependabot[bot] | |
# # | |
# jobs | |
# # | |
jobs: | |
# # | |
# JOB > INITIALIZE | |
# # | |
job-initialize: | |
name: >- | |
📦 Initialize | |
runs-on: ubuntu-latest | |
outputs: | |
package_version: ${{ steps.task_initialize_package_version.outputs.PACKAGE_VERSION }} | |
permissions: | |
contents: write | |
packages: write | |
environment: | |
name: Orion | |
steps: | |
# # | |
# Job > Initialize > Start | |
# # | |
- name: "✅ Start" | |
id: task_initialize_start | |
run: | | |
echo "Starting build" | |
# # | |
# Job > Initialize > Checkout | |
# # | |
- name: "☑️ Checkout" | |
id: task_initialize_checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# # | |
# Package Version > Set | |
# Get version from package.json VERSION value | |
# # | |
- name: "👁️🗨️ Package Version › Get" | |
id: task_initialize_package_version | |
run: | | |
VER=$(cat src/package.json | jq -r '.version') | |
echo "PACKAGE_VERSION=$VER" >> $GITHUB_OUTPUT | |
# # | |
# Package Version > Print (Debug) | |
# # | |
- name: "👁️🗨️ Package Version › Print" | |
id: task_initialize_package_version_debug | |
run: | | |
echo "VERSION: ${{ steps.task_initialize_package_version.outputs.PACKAGE_VERSION }}" | |
# # | |
# Job > Release > Cloudflare | |
# # | |
job-cloudflare: | |
name: >- | |
☁️ Cloudflare Worker | |
needs: job-initialize | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
packages: write | |
outputs: | |
cf_deploy_url: ${{ steps.task_cloudflare_deploy.outputs.deployment-url }} | |
environment: | |
name: Orion | |
steps: | |
# # | |
# Cloudflare Worker > Checkout | |
# # | |
- name: "☑️ Checkout" | |
id: task_cloudflare_checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# # | |
# Cloudflare Worker > Setup Node | |
# # | |
- name: "⚙️ Setup › Node" | |
id: task_cloudflare_node_setup | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.x' | |
registry-url: https://npm.pkg.github.com/ | |
scope: '@aetherinox' | |
# # | |
# Cloudflare Worker > Install Node | |
# # | |
- name: "📦 NPM › Install" | |
id: task_cloudflare_npm_install | |
run: | | |
npm install | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.SELF_TOKEN_CL }} | |
# # | |
# Cloudflare Worker > Run Prettier | |
# # | |
- name: "🪪 NPM › Pretty" | |
id: task_cloudflare_npm_prettylint | |
run: | | |
npm run pretty | |
# # | |
# Cloudflare Worker > Debug > Print pacakge Version | |
# # | |
- name: "☁️ Cloudflare › Version" | |
id: task_cloudflare_version | |
run: | | |
echo "VERSION: ${{ env.PACKAGE_VERSION }}" | |
# # | |
# Cloudflare Worker > Deploy | |
# | |
# ensure `environment` is set to production. options available: | |
# - production | |
# - dev | |
# # | |
- name: "☁️ Cloudflare › Deploy" | |
id: task_cloudflare_deploy | |
uses: cloudflare/wrangler-action@v3 | |
with: | |
apiToken: ${{ secrets.CF_TOKEN }} | |
accountId: ${{ secrets.CF_ACCOUNT_ID }} | |
workingDirectory: "src" | |
environment: 'production' | |
command: deploy --minify | |
# # | |
# Cloudflare Worker > Deployment › Output | |
# | |
# returns the deployment url | |
# # | |
- name: "☁️ Cloudflare › Deployment Output" | |
id: task_cloudflare_deploy_output | |
env: | |
DEPLOYMENT_URL: ${{ steps.task_cloudflare_deploy.outputs.deployment-url }} | |
run: echo $DEPLOYMENT_URL | |
# # | |
# Job > Release > Github | |
# # | |
job-release: | |
name: >- | |
📦 Publish › Release | |
runs-on: ubuntu-latest | |
needs: [ job-initialize, job-cloudflare ] | |
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 | |
environment: | |
name: Orion | |
steps: | |
# # | |
# Release > Checkout | |
# # | |
- name: "☑️ Checkout" | |
id: task_release_checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
# # | |
# 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 | |
run: | | |
npm install | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.SELF_TOKEN_CL }} | |
# # | |
# Release > Print / Lint | |
# # | |
- name: "🪪 NPM › Pretty" | |
id: task_release_npm_prettylint | |
run: | | |
npm run pretty | |
# # | |
# Release > Execute npm generate so that a uuid and guid can be created | |
# # | |
- name: "🪪 Generate IDs" | |
id: task_release_npm_env_generate | |
run: | | |
npm run root:generate | |
# # | |
# .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 | |
# # | |
# .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 }}" | |
# # | |
# Build Project & Create Zip | |
# # | |
- name: "🔨 Build › Stable ( ${{ inputs.PLUGIN_NAME }}-${{ env.PACKAGE_VERSION }}.zip )" | |
id: task_release_build_st | |
if: ${{ startsWith( inputs.PRERELEASE, false ) }} | |
run: | | |
echo Building STABLE Package .zip ${{ env.PACKAGE_VERSION }} | |
zip -r ${{ inputs.PLUGIN_NAME }}-${{ env.PACKAGE_VERSION }}.zip package.json wrangler.toml .prettierrc README.md LICENSE src -x src/tests/**\* | |
ls | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.ADMINSERV_TOKEN_CL }} | |
- name: "🔨 Build › RC ( ${{ inputs.PLUGIN_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 .zip ${{ env.PACKAGE_VERSION }} | |
zip -r ${{ inputs.PLUGIN_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip package.json wrangler.toml .prettierrc README.md LICENSE src -x src/tests/**\* | |
ls | |
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="${{ inputs.PLUGIN_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="${{ inputs.PLUGIN_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 ${{ inputs.PLUGIN_NAME }}-${{ env.PACKAGE_VERSION }}.zip | |
zip -jr ${{ inputs.PLUGIN_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 ${{ inputs.PLUGIN_NAME }}-${{ env.PACKAGE_VERSION }}-rc.${{ inputs.VERSION_RC }}.zip | |
zip -jr ${{ inputs.PLUGIN_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: | | |
${{ inputs.PLUGIN_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: | | |
${{ inputs.PLUGIN_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 ---------------------------------------------------------------" | |
# # | |
# Upload artifacts > .deb packages | |
# # | |
- name: >- | |
📋 Upload Artifacts › ${{ inputs.PLUGIN_NAME }}-${{ env.PACKAGE_VERSION }}.zip | |
id: task_release_artifact | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: "release" | |
path: ${{ inputs.PLUGIN_NAME }}-${{ env.PACKAGE_VERSION }}.zip | |
retention-days: 30 | |
# # | |
# JOB > COMPLETE | |
# # | |
job-complete: | |
name: >- | |
🆗 Successful Deployment | |
runs-on: ubuntu-latest | |
environment: | |
name: Orion | |
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 | |
# # | |
# Job > Complete > Cloudflare > Check Project | |
# this step checks to see if your project already exists on cloudflare | |
# today date --utc +%FT%TZ | |
# yesterday date --utc -d '-1 day' '+%FT%TZ' | |
# | |
# Endpoint `/workers/scripts/` requires Cloudflare API permission: | |
# Workers Scripts:Read | |
# | |
# Endpoint `https://api.cloudflare.com/client/v4/graphql` requires Cloudflare API permission: | |
# Account Analytics:Read | |
# # | |
- name: "☁️ CF › Check Project" | |
id: task_complete_project_check | |
shell: bash | |
run: | | |
yesturday=$(date --utc -d '-1 day' '+%FT%TZ') | |
now=$(date --utc +%FT%TZ) | |
worker_env=$(curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CF_ACCOUNT_ID }}/workers/scripts/${{ env.WORKER_ID }}/settings/" \ | |
-H "Authorization: Bearer ${{ secrets.CF_TOKEN }}" \ | |
-H "Content-Type:application/json" | jq -r '.result.bindings[0].text') | |
echo "WORKER_ENV=$worker_env" >> $GITHUB_ENV | |
worker_compatdate=$(curl -s -X GET "https://api.cloudflare.com/client/v4/accounts/${{ secrets.CF_ACCOUNT_ID }}/workers/scripts/${{ env.WORKER_ID }}/settings/" \ | |
-H "Authorization: Bearer ${{ secrets.CF_TOKEN }}" \ | |
-H "Content-Type:application/json" | jq -r '.result.compatibility_date') | |
echo "WORKER_COMPATDATE=$worker_compatdate" >> $GITHUB_ENV | |
API_JSON=$(echo "{ \"query\": | |
\"query GetWorkersAnalytics(\$accountTag: string, \$datetimeStart: string, \$scriptName: string) { | |
viewer { | |
accounts(filter: {accountTag: \$accountTag}) { | |
workersInvocationsAdaptive(limit: 1000, filter: { | |
scriptName: \$scriptName, | |
datetime_geq: \$datetimeStart, | |
datetime_leq: \$datetimeEnd | |
}) { | |
sum { | |
subrequests | |
requests | |
errors | |
} | |
} | |
} | |
} | |
}\", | |
\"variables\": { | |
\"accountTag\": \"${{ secrets.CF_ACCOUNT_ID }}\", | |
\"datetimeStart\": \"$yesturday\", | |
\"datetimeEnd\": \"$now\", | |
\"scriptName\": \"${{ env.WORKER_ID }}\" | |
} | |
}" | curl --silent \ | |
https://api.cloudflare.com/client/v4/graphql \ | |
--header "Authorization: Bearer ${{ secrets.CF_TOKEN }}" \ | |
--header "Accept: application/json" \ | |
--header "Content-Type: application/json" \ | |
--data @-) | |
api_err=$(echo $API_JSON | jq -r ".data.viewer.accounts[0].workersInvocationsAdaptive[0].sum.errors") | |
api_req=$(echo $API_JSON | jq -r ".data.viewer.accounts[0].workersInvocationsAdaptive[0].sum.requests") | |
api_req_sub=$(echo $API_JSON | jq -r ".data.viewer.accounts[0].workersInvocationsAdaptive[0].sum.subrequests") | |
echo "ENV_API_ERR=$api_err" >> $GITHUB_ENV | |
echo "ENV_API_REQ=$api_req" >> $GITHUB_ENV | |
echo "ENV_API_SUBREQ=$api_req_sub" >> $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.PLUGIN_NAME }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| **Deploy Time** | ${{ env.NOW }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| **Worker Compatibility Date** | ${{ env.WORKER_COMPATDATE }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| **Worker State** | ${{ env.WORKER_ENV }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| **Worker Errors** | ${{ env.ENV_API_ERR }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| **Worker Requests** | ${{ env.ENV_API_REQ }} |" >> $GITHUB_STEP_SUMMARY | |
echo "| **Worker Subrequests** | ${{ env.ENV_API_SUBREQ }} |" >> $GITHUB_STEP_SUMMARY |