Compare commits

..
9 Commits
Author SHA1 Message Date
Mohamed Youssef 4e9d418e04 update
Build WordPress Plugin (XML-driven) / build-release (push) Failing after 7m17s
2026-08-02 10:17:37 +03:00
Mohamed Youssef 412844bb1f update
Build WordPress Plugin (XML-driven) / build-release (push) Failing after 35s
2026-08-02 10:15:50 +03:00
Mohamed Youssef da3b582a63 update
Build WordPress Plugin (XML-driven) / build-release (push) Failing after 24s
2026-08-02 10:13:22 +03:00
Mohamed Youssef 9019cf48d3 update
Build WordPress Plugin (XML-driven) / build-release (push) Failing after 23s
2026-08-02 10:10:54 +03:00
Mohamed Youssef 4e54ecf721 update
Build WordPress Plugin (Simple) / build-release (push) Failing after 22s
2026-08-02 10:07:36 +03:00
Mohamed Youssef 5b9ad90ed7 update
Build WordPress Plugin (Simple) / build-release (push) Failing after 24s
2026-08-02 09:55:53 +03:00
Mohamed Youssef 4d8823b1b3 update
WP Plugin Version & Release / release (push) Failing after 8s
2026-08-02 09:49:23 +03:00
Mohamed Youssef baf56793b6 update
WP Plugin Version & Release / release (push) Failing after 25s
2026-08-02 09:48:11 +03:00
Mohamed Youssef b8674dc363 update
Build WordPress Plugin for Gitea / build-release (push) Failing after 9s
2026-08-02 09:44:57 +03:00
2 changed files with 61 additions and 115 deletions
+56 -114
View File
@@ -1,153 +1,95 @@
name: Build WordPress Plugin for Gitea
name: Build WordPress Plugin (XML-driven)
on:
push:
branches:
- main # Triggers on every push to main
- main
jobs:
build-release:
runs-on: ubuntu-latest
steps:
- name: Checkout code
- name: Checkout
uses: actions/checkout@v4
# --------------------------------
# OPTIONAL: Setup PHP & Composer
# --------------------------------
# - name: Setup PHP
# uses: shivammathur/setup-php@v2
# with:
# php-version: '7.4'
# tools: composer
# Remove if your plugin does not use Composer.
- name: Install XML tools and zip
run: |
sudo apt-get update
sudo apt-get install -y libxml2-utils zip
# --------------------------------
# OPTIONAL: Setup Node & NPM
# --------------------------------
# - name: Setup Node.js
# uses: actions/setup-node@v4
# with:
# node-version: '20'
# cache: 'npm'
# Remove if your plugin does not use NPM.
# --------------------------------
# OPTIONAL: Install dependencies & build assets
# --------------------------------
# - name: Install Composer dependencies (production only)
# run: |
# if [ -f "composer.json" ]; then
# composer install --no-dev --prefer-dist --optimize-autoloader
# fi
# - name: Install NPM dependencies & build
# run: |
# if [ -f "package.json" ]; then
# npm ci
# fi
# if [ -f "package.json" ] && grep -q '"build"' package.json; then
# npm run build
# fi
# --------------------------------
# Extract plugin metadata
# --------------------------------
- name: Get plugin version and slug
# ------------------------------------------------------------
# 1. Extract metadata from plugin.xml
# ------------------------------------------------------------
- name: Extract metadata from plugin.xml
id: meta
run: |
MAIN_FILE=$(grep -l "Plugin Name:" *.php | head -n 1)
if [ -z "$MAIN_FILE" ]; then
echo "❌ No main plugin file (with 'Plugin Name:') found!" >&2
if [ ! -f plugin.xml ]; then
echo "❌ plugin.xml not found!" >&2
exit 1
fi
VERSION=$(grep "^Version:" "$MAIN_FILE" | awk -F' ' '{print $NF}' | tr -d '\r')
if [ -z "$VERSION" ]; then
echo "❌ Version header not found in $MAIN_FILE" >&2
NAME=$(xmllint --xpath "string(//name)" plugin.xml)
VERSION=v$(xmllint --xpath "string(//version)" plugin.xml)
if [ -z "$NAME" ] || [ -z "$VERSION" ]; then
echo "❌ Could not extract <name> or <version> from plugin.xml" >&2
exit 1
fi
# Use repository name as the plugin slug
SLUG="${GITHUB_REPOSITORY##*/}"
# Sanitize the name to a safe slug (lowercase, replace non-alnum with '-')
SLUG=$(echo "$NAME" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+/-/g; s/^-+//; s/-+$//')
echo "PLUGIN_SLUG=$SLUG" >> $GITHUB_ENV
echo "PLUGIN_VERSION=$VERSION" >> $GITHUB_ENV
echo "PLUGIN_NAME=$NAME" >> $GITHUB_ENV
echo "SLUG=$SLUG" >> $GITHUB_ENV
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "FILENAME=${SLUG}-${VERSION}.zip" >> $GITHUB_ENV
echo "✅ Plugin: $SLUG, Version: $VERSION"
# --------------------------------
# Prepare package (exclude dev files)
# --------------------------------
- name: Prepare package directory
echo "✅ Plugin: $NAME, Slug: $SLUG, Version: $VERSION"
# ------------------------------------------------------------
# 2. Prepare package (copy everything EXCEPT plugin.xml, .git, .github)
# ------------------------------------------------------------
- name: Prepare package
run: |
mkdir -p /tmp/build/${{ env.PLUGIN_SLUG }}
mkdir -p build/"$SLUG"
# Copy everything except .git, .github, and plugin.xml
find . -maxdepth 1 -not -name "." -not -name ".git" -not -name ".github" -not -name "plugin.xml" -exec cp -r {} build/"$SLUG"/ \;
# If you have a .distignore file, use: --exclude-from='.distignore'
rsync -av \
--exclude='.git' \
--exclude='.github' \
--exclude='.distignore' \
--exclude='.gitignore' \
--exclude='node_modules' \
--exclude='vendor' \
--exclude='tests' \
--exclude='.env*' \
--exclude='*.log' \
--exclude='*.map' \
--exclude='package-lock.json' \
--exclude='composer.lock' \
--exclude='package.json' \
--exclude='composer.json' \
--exclude='webpack.config.js' \
--exclude='gulpfile.js' \
--exclude='Gruntfile.js' \
--exclude='phpunit.xml' \
--exclude='.wordpress-org' \
./ /tmp/build/${{ env.PLUGIN_SLUG }}/ 2>/dev/null || true
# Adjust excludes if your plugin needs any of these files in production.
# --------------------------------
# Create ZIP archive
# --------------------------------
- name: Create plugin zip
# ------------------------------------------------------------
# 3. Build the zip
# ------------------------------------------------------------
- name: Build plugin zip
run: |
cd /tmp/build
zip -r "$GITHUB_WORKSPACE/${{ env.FILENAME }}" ${{ env.PLUGIN_SLUG }}/
cd $GITHUB_WORKSPACE
echo "✅ Created: $FILENAME"
cd build
zip -r "../$FILENAME" "$SLUG"
cd ..
# --------------------------------
# Install & configure tea CLI
# --------------------------------
- name: Install tea CLI (pinned version)
# ------------------------------------------------------------
# 4. Install tea CLI
# ------------------------------------------------------------
- name: Install tea CLI
run: |
curl -L https://dl.gitea.io/tea/0.11.0/tea-0.11.0-linux-amd64 -o tea
curl -L https://dl.gitea.io/tea/main/tea-main-linux-amd64 -o tea
chmod +x tea
sudo mv tea /usr/local/bin/
# ------------------------------------------------------------
# 5. Configure tea
# ------------------------------------------------------------
- name: Configure tea
run: |
tea login add \
--name gitea \
--url "${{ vars.GITEA_SERVER_URL }}" \
--token "${{ secrets.GITEA_TOKEN }}"
--url "${{ vars.SERVER_URL }}" \
--token "${{ secrets.OC3_EXTENSION_RELEASE_TOKEN }}"
# --------------------------------
# Create or forceupdate Gitea release
# --------------------------------
- name: Create/update Gitea release
# ------------------------------------------------------------
# 6. Create (or forceupdate) release
# ------------------------------------------------------------
- name: Create release
run: |
TAG="v${{ env.PLUGIN_VERSION }}"
REPO="${{ vars.GITEA_REPO }}"
# --force will overwrite an existing release with the same tag
tea release create "$TAG" \
--title "${{ env.PLUGIN_SLUG }} v${{ env.PLUGIN_VERSION }}" \
--asset "${{ env.FILENAME }}" \
--repo "$REPO" \
tea release create "$VERSION" \
--title "${PLUGIN_NAME}_${VERSION}" \
--asset "${FILENAME}" \
--force
echo "✅ Release $TAG created/updated with asset ${{ env.FILENAME }}"
+4
View File
@@ -0,0 +1,4 @@
<plugin>
<name>Advanced SEO Meta + AI FAQ Schema</name>
<version>3.0.0</version>
</plugin>