Build WordPress Plugin (XML-driven) / build-release (push) Failing after 24s
99 lines
3.3 KiB
YAML
99 lines
3.3 KiB
YAML
name: Build WordPress Plugin (XML-driven)
|
||
|
||
on:
|
||
push:
|
||
branches:
|
||
- main
|
||
|
||
jobs:
|
||
build-release:
|
||
runs-on: ubuntu-latest
|
||
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Install XML tools and zip
|
||
run: |
|
||
sudo apt-get update
|
||
sudo apt-get install -y libxml2-utils zip
|
||
|
||
# ------------------------------------------------------------
|
||
# 1. Extract metadata from plugin.xml
|
||
# ------------------------------------------------------------
|
||
- name: Extract metadata from plugin.xml
|
||
id: meta
|
||
run: |
|
||
if [ ! -f plugin.xml ]; then
|
||
echo "❌ plugin.xml not found!" >&2
|
||
exit 1
|
||
fi
|
||
|
||
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
|
||
|
||
# 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_NAME=$NAME" >> $GITHUB_ENV
|
||
echo "SLUG=$SLUG" >> $GITHUB_ENV
|
||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||
echo "FILENAME=${SLUG}-${VERSION}.zip" >> $GITHUB_ENV
|
||
|
||
echo "✅ Plugin: $NAME, Slug: $SLUG, Version: $VERSION"
|
||
|
||
# ------------------------------------------------------------
|
||
# 2. Prepare package (copy everything EXCEPT plugin.xml, .git, .github)
|
||
# ------------------------------------------------------------
|
||
- name: Prepare package
|
||
run: |
|
||
mkdir -p build/"$SLUG"
|
||
rsync -a \
|
||
--exclude='.git' \
|
||
--exclude='.github' \
|
||
--exclude='plugin.xml' \
|
||
./ build/"$SLUG"/
|
||
|
||
# ------------------------------------------------------------
|
||
# 3. Build the zip
|
||
# ------------------------------------------------------------
|
||
- name: Build plugin zip
|
||
run: |
|
||
cd build
|
||
zip -r "../$FILENAME" "$SLUG"
|
||
cd ..
|
||
|
||
# ------------------------------------------------------------
|
||
# 4. Install tea CLI
|
||
# ------------------------------------------------------------
|
||
- name: Install tea CLI
|
||
run: |
|
||
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.SERVER_URL }}" \
|
||
--token "${{ secrets.OC3_EXTENSION_RELEASE_TOKEN }}"
|
||
|
||
# ------------------------------------------------------------
|
||
# 6. Create (or force‑update) release
|
||
# ------------------------------------------------------------
|
||
- name: Create release
|
||
run: |
|
||
tea release create "$VERSION" \
|
||
--title "${PLUGIN_NAME}_${VERSION}" \
|
||
--asset "${FILENAME}" \
|
||
--repo "${{ vars.GITEA_REPO }}" \
|
||
--force |