From fa0b438a95f3859d8ab6d46f0755a78d6264007c Mon Sep 17 00:00:00 2001 From: j Date: Tue, 17 Jun 2025 16:12:00 +1000 Subject: [PATCH] Port over, may not work --- .forgejo/workflows/wordpress-plugin.yml | 90 +++++++++++++++++++++++++ src/my-first-plugin.php | 27 ++++++++ 2 files changed, 117 insertions(+) create mode 100644 .forgejo/workflows/wordpress-plugin.yml create mode 100644 src/my-first-plugin.php diff --git a/.forgejo/workflows/wordpress-plugin.yml b/.forgejo/workflows/wordpress-plugin.yml new file mode 100644 index 0000000..9d4542a --- /dev/null +++ b/.forgejo/workflows/wordpress-plugin.yml @@ -0,0 +1,90 @@ +# Building and releasing Wordpress plugins is pretty simple +# It's just zipping up some PHP. This doesn't contain any unit tests +# this is just zipping and shipping. +# +# Generally speaking your directory structure would be: +# . +# ├── README.md +# └── src +# └── wordpress-plugin.php +# +# With the repository name being the name of your plugin to make it easier +# to Google for. Up to you though; you can configure the source dir below. +# +# When you tag a commit and the tag stats with 'v', this workflow will +# zip and ship the Wordpress plugin to the 'releases' tab of Github or Forgejo + +name: Build & Release WordPress Plugin + +on: + push: + tags: + - 'v*' + +jobs: + build: + runs-on: docker + container: debian:12 + + env: + SOURCE_DIR: "src" + + + steps: + + - name: Prepare Build Environment + run: | + apt update && apt -y install zip nodejs curl jq + + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Package plugin + run: | + # Set plugin name like this because it's easier than inline + PLUGIN_NAME=$(echo $GITHUB_REPOSITORY | awk -F'/' '{ print $2 }') + + # Create a build directory to ensure that we're correctly creating + # a single child directory in the zip. + mkdir -p build + cp -r ${SOURCE_DIR}/* "build/${PLUGIN_NAME}" + + # Zip it up for shipping + zip -r "${PLUGIN_NAME}.zip" "build/${PLUGIN_NAME}" + + - name: Create Release if not exists + run: | + # Curl request that uses the repos token & Forgejo's built-in variables + # to create a new release based on the tag that you have pushed + # + # It doesn't care if the release exists or not. + curl -X POST "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases" \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -H "Content-Type: application/json" \ + -d '{ + "tag_name": "'"${GITHUB_REF##*/}"'", + "target_commitish": "main", + "name": "'"${GITHUB_REF##*/}"'", + "body": "Auto release", + "draft": false, + "prerelease": false + }' || true + + - name: Upload Plugin Zip to Release + run: | + # Set some variables because it's cleaner than in-line + TAG_NAME="${GITHUB_REF##*/}" + REPO_NAME="$(basename $GITHUB_REPOSITORY)" + PLUGIN_NAME=$(echo $GITHUB_REPOSITORY | awk -F'/' '{ print $2 }') + + # Get the release ID created in the last step + RELEASE_ID=$(curl -s \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/tags/${TAG_NAME}" \ + | jq -r '.id') + + # Pushes he zip file to be shown in the "Releases" tab under this release. + curl -X POST "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets?name=${PLUGIN_NAME}.zip" \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -H "Content-Type: application/zip" \ + --data-binary "@build/${PLUGIN_NAME}.zip" diff --git a/src/my-first-plugin.php b/src/my-first-plugin.php new file mode 100644 index 0000000..c952502 --- /dev/null +++ b/src/my-first-plugin.php @@ -0,0 +1,27 @@ + +
+

+
+