Skip to content

📦 Release

📦 Release #14

Workflow file for this run

name: "📦 Release"
run-name: "📦 Release"
on:
workflow_dispatch:
inputs:
# ---------------------------------------------------------------------------------------
# Name of the plugin to use when creating the release zip filename
# e.g: csf-firewall-v1.0.0.zip
# ---------------------------------------------------------------------------------------
PLUGIN_NAME:
description: "📦 Name of Plugin"
required: true
default: 'csf-firewall'
type: string
# ---------------------------------------------------------------------------------------
# Version to release
# e.g: v1.0.0
# ---------------------------------------------------------------------------------------
PLUGIN_VERSION:
description: "📦 Version"
required: true
default: '1.x.x'
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: csf-firewall-v1.0.0-rc.1
# ---------------------------------------------------------------------------------------
VERSION_RC:
description: "🧪 RC (Pre-release) Ver (csf-firewall-rc.v1)"
required: false
type: string
default: "1"
# ---------------------------------------------------------------------------------------
# environment variables
# ---------------------------------------------------------------------------------------
env:
PLUGIN_NAME: csf-firewall
ASSIGN_USER: Aetherinox
BOT_NAME_1: AdminServ
BOT_NAME_2: AdminServX
BOT_NAME_3: EuropaServ
BOT_NAME_DEPENDABOT: dependabot[bot]
# ---------------------------------------------------------------------------------------
# jobs
# ---------------------------------------------------------------------------------------
jobs:
# ---------------------------------------------------------------------------------------
# JOB > INITIALIZE
# ---------------------------------------------------------------------------------------
job-upload:
name: >-
📦 Package › Upload
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
outputs:
version_csf: ${{ steps.task_build_download_csf.outputs.VERSION_CSF }}
version_build: ${{ steps.task_build_download_csf.outputs.VERSION_BUILD }}
version_tag_previous: ${{ steps.task_build_getver.outputs.VERSION_TAG_PREV }}
steps:
# ---------------------------------------------------------------------------------------
# Job > Start
# ---------------------------------------------------------------------------------------
- name: "✅ Start"
id: task_build_start
run: |
echo "Starting build"
# ---------------------------------------------------------------------------------------
# Job > Checkout
# ---------------------------------------------------------------------------------------
- name: "☑️ Checkout"
id: task_build_checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
# ---------------------------------------------------------------------------------------
# Job > Get Previous Tag
#
# this is for no particular reason except to just report the last version released
# ---------------------------------------------------------------------------------------
- name: "🏷️ Get Previous tag"
id: task_tag_previous
uses: "WyriHaximus/github-action-get-previous-tag@v1"
with:
fallback: 1.0.0
# ---------------------------------------------------------------------------------------
# Job > Print Current Version
#
# this is for no particular reason except to just report the last version released
# ---------------------------------------------------------------------------------------
- name: "🔨 Debug: Previous Github Tag"
id: task_build_getver
run: |
echo -e ${{ steps.task_tag_previous.outputs.tag }}
echo "VERSION_TAG_PREV=${{ steps.task_tag_previous.outputs.tag }}" >> $GITHUB_OUTPUT
# ---------------------------------------------------------------------------------------
# Job > Download latest version of ConfigServer Firewall
#
# download csf .tgz from official website
# read /csf/version.txt inside the .tgz and grab version, assign to env var
# rename original .tgz to new name which includes version number:
# - csf-firewall.tgz => csf-firewall-v14.20.tgz
# ---------------------------------------------------------------------------------------
- name: "⬇️ Download: ConfigServer Firewall"
id: task_build_download_csf
run: |
mkdir release
wget https://download.configserver.com/csf.tgz -O release/${{ inputs.PLUGIN_NAME }}.tgz
# #
# generate build number
# 2408.07 (YYMM.DD)
# #
ver_build=$(date -u '+%y%m-%d')
echo "VERSION_BUILD=$ver_build" >> $GITHUB_OUTPUT
# #
# get csf version from version.txt in .tgz
# #
ver_csf=$(tar -axf release/${{ inputs.PLUGIN_NAME }}.tgz csf/version.txt -O)
echo "VERSION_CSF=$ver_csf" >> $GITHUB_OUTPUT
echo -e "Found ConfigServer Firewall v${ver_csf}"
# #
# rename .tgz
# #
mv release/${{ inputs.PLUGIN_NAME }}.tgz release/${{ inputs.PLUGIN_NAME }}-v${ver_csf}.tgz
echo -e "Creating release/${{ inputs.PLUGIN_NAME }}-v${ver_csf}.tgz"
# ---------------------------------------------------------------------------------------
# Upload artifacts > release/csf-firewall-v14.20.tgz
# ---------------------------------------------------------------------------------------
- name: >-
📋 Upload Artifacts › ${{ inputs.PLUGIN_NAME }}.tgz
id: task_build_artifact_csf
uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ inputs.PLUGIN_NAME }}-v${{ steps.task_build_download_csf.outputs.VERSION_CSF }}.tgz
path: release/${{ inputs.PLUGIN_NAME }}-v${{ steps.task_build_download_csf.outputs.VERSION_CSF }}.tgz
retention-days: 30
# ---------------------------------------------------------------------------------------
# Job > Release
# ---------------------------------------------------------------------------------------
job-release:
name: >-
📦 Package › Release
runs-on: ubuntu-latest
needs: [ job-upload ]
permissions:
contents: write
packages: write
env:
VERSION_CSF: ${{ needs.job-upload.outputs.version_csf }}
VERSION_BUILD: ${{ needs.job-upload.outputs.version_build }}
VERSION_TAG_PREV: ${{ needs.job-upload.outputs.version_tag_previous }}
steps:
# ---------------------------------------------------------------------------------------
# Dist Releases > Checkout
# ---------------------------------------------------------------------------------------
- name: "☑️ Checkout"
uses: actions/checkout@v4
id: task_release_checkout
with:
fetch-depth: 0
# ---------------------------------------------------------------------------------------
# Debug : View passed values
# ---------------------------------------------------------------------------------------
- name: "⚙️ Debug › Passed Values"
id: task_release_debug_print_vals_1
run: |
echo "TAG VERSION (Previous) ........... ${{ env.VERSION_TAG_PREV }}"
echo "TAG VERSION (Next) ............... ${{ inputs.PLUGIN_VERSION }}"
echo "CSF VERSION ...................... ${{ env.VERSION_CSF }}"
echo "RELEASE BUILD .................... ${{ env.VERSION_BUILD }}"
# ---------------------------------------------------------------------------------------
# Build Project & Create Zip
# ---------------------------------------------------------------------------------------
- name: "🔨 Build › Stable ( ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}.zip )"
id: task_release_build_st
if: ${{ startsWith( inputs.PRERELEASE, false ) }}
run: |
echo Building STABLE Package .zip ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}.zip
mv patch/* .
zip -r ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}.zip README.md LICENSE *.sh
ls
env:
NODE_AUTH_TOKEN: ${{ secrets.ADMINSERV_TOKEN_CL }}
- name: "🔨 Build › Release Candidate ( ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}-rc.${{ inputs.VERSION_RC }}.zip )"
id: task_release_build_rc
if: ${{ startsWith( inputs.PRERELEASE, true ) }}
run: |
echo Building PRE-RELEASE Package .zip ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}-rc.${{ inputs.VERSION_RC }}.zip
zip -r ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}-rc.${{ inputs.VERSION_RC }}.zip README.md LICENSE *.sh
ls
env:
NODE_AUTH_TOKEN: ${{ secrets.ADMINSERV_TOKEN_CL }}
# ---------------------------------------------------------------------------------------
# Upload artifacts > csf-firewall-v14.20*.zip
# ---------------------------------------------------------------------------------------
- name: >-
📋 Upload Artifacts › ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}.zip
id: task_release_artifact_st
if: ${{ startsWith( inputs.PRERELEASE, false ) }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}
path: ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}.zip
retention-days: 30
- name: >-
📋 Upload Artifacts › ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}-rc.${{ inputs.VERSION_RC }}.zip
id: task_release_artifact_rc
if: ${{ startsWith( inputs.PRERELEASE, true ) }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}-rc.${{ inputs.VERSION_RC }}
path: ${{ inputs.PLUGIN_NAME }}-${{ env.VERSION_CSF }}-rc.${{ inputs.VERSION_RC }}.zip
retention-days: 30