Gitea release workflow now runs composer install --no-dev before zipping, so
each release ships vendor/ with both Twilio and AWS SDKs. The plugin's loader
priority is flipped to match: internal vendor/autoload.php first (always
current after every plugin update), external wp-content/twilio-sdk/ second
(legacy/manual install fallback).
AWS SDK detection wired in alongside Twilio: composer's bundled autoloader
covers Aws\… natively when present; otherwise plugin falls back to a new
external location wp-content/aws-sdk/ via install-aws-sdk-external.sh, which
drops the AWS SDK PHAR with a tiny autoload shim. AWS-missing admin notice
fires only when twp_sms_provider === 'aws_sns' so existing Twilio SMS users
see no new noise.
Loader priority flip applied in three places that all had the same
external-first pattern: twilio-wp-plugin.php (twp_check_sdk_installation),
class-twp-twilio-api.php (init_sdk_client), class-twp-webhooks.php
(constructor). twp_check_sdk_after_update messaging updated to reflect that
plugin updates now bundle the SDK.
Files:
.gitea/workflows/release.yml — composer install before ZIP
twilio-wp-plugin.php — TWP_EXTERNAL_AWS_SDK_DIR, dual-SDK
detection, twp_aws_sdk_missing_notice
includes/class-twp-twilio-api.php — internal-first autoloader
includes/class-twp-webhooks.php — internal-first autoloader
install-aws-sdk-external.sh — new AWS SDK PHAR installer
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
92 lines
3.2 KiB
YAML
92 lines
3.2 KiB
YAML
name: Create Release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
username: ${{ secrets.CI_USER }}
|
|
password: ${{ secrets.CI_TOKEN }}
|
|
fetch-depth: 0 # Important: Fetch all history for commit messages
|
|
|
|
- name: Setup PHP
|
|
uses: shivammathur/setup-php@v2
|
|
with:
|
|
php-version: '8.0'
|
|
tools: composer
|
|
|
|
- name: Install Composer dependencies
|
|
run: composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction
|
|
|
|
- name: Get version
|
|
id: get_version
|
|
run: |
|
|
if [ "${{ github.ref_type }}" = "tag" ]; then
|
|
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "version=$(date +'%Y.%m.%d-%H%M')" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Generate release notes
|
|
id: release_notes
|
|
run: |
|
|
# Find the most recent tag
|
|
LATEST_TAG=$(git describe --tags --abbrev=0 --always 2>/dev/null || echo "none")
|
|
|
|
if [ "$LATEST_TAG" = "none" ]; then
|
|
# If no previous tag exists, get all commits
|
|
COMMITS=$(git log --pretty=format:"* %s (%h)" --no-merges)
|
|
else
|
|
# Get commits since the last tag
|
|
COMMITS=$(git log --pretty=format:"* %s (%h)" ${LATEST_TAG}..HEAD --no-merges)
|
|
fi
|
|
|
|
# Create release notes with header (without encoding newlines)
|
|
echo "notes<<EOF" >> $GITHUB_OUTPUT
|
|
echo "## What's New in ${{ steps.get_version.outputs.version }}" >> $GITHUB_OUTPUT
|
|
echo "" >> $GITHUB_OUTPUT
|
|
echo "$COMMITS" >> $GITHUB_OUTPUT
|
|
echo "EOF" >> $GITHUB_OUTPUT
|
|
|
|
- name: Update plugin version
|
|
run: |
|
|
# Replace version placeholder with actual version
|
|
sed -i "s/Version: {auto_update_value_on_deploy}/Version: ${{ steps.get_version.outputs.version }}/" twilio-wp-plugin.php
|
|
sed -i "s/TWP_VERSION', '{auto_update_value_on_deploy}/TWP_VERSION', '${{ steps.get_version.outputs.version }}/" twilio-wp-plugin.php
|
|
|
|
# Verify the changes were made
|
|
grep "Version:" twilio-wp-plugin.php
|
|
grep "TWP_VERSION" twilio-wp-plugin.php
|
|
|
|
- name: Create ZIP archive
|
|
run: |
|
|
# Create a temp directory with the correct plugin folder name
|
|
mkdir -p /tmp/twilio-wp-plugin
|
|
|
|
# Copy files to the temp directory (excluding git and other unnecessary files)
|
|
cp -r * /tmp/twilio-wp-plugin/ 2>/dev/null || true
|
|
|
|
# Exclude .git and .gitea directories
|
|
rm -rf /tmp/twilio-wp-plugin/.git /tmp/twilio-wp-plugin/.gitea 2>/dev/null || true
|
|
|
|
# Create the ZIP file with the proper structure
|
|
cd /tmp
|
|
zip -r $GITHUB_WORKSPACE/twilio-wp-plugin.zip twilio-wp-plugin
|
|
|
|
- name: Create Release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
token: "${{ secrets.REPO_TOKEN }}"
|
|
title: "Twilio WP Plugin Release ${{ steps.get_version.outputs.version }}"
|
|
tag_name: ${{ steps.get_version.outputs.version }}
|
|
body: "${{ steps.release_notes.outputs.notes }}"
|
|
files: |
|
|
twilio-wp-plugin.zip
|