Reusable Forgejo Actions for Valenced plugins and releases
  • Shell 49.8%
  • JavaScript 25.5%
  • Python 24.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
SheWhoReignsSupreme 60b32d0d48
All checks were successful
Validate actions / manifests (push) Successful in 28s
Validate actions / publish-logic (push) Successful in 18s
Update build-plugins/action.yml
2026-10-29 00:39:49 -04:00
.forgejo/workflows Update .forgejo/workflows/validate.yml 2026-10-28 07:35:35 -04:00
build-plugins Update build-plugins/action.yml 2026-10-29 00:39:49 -04:00
checkout-releases Updates 2026-10-28 08:36:35 -04:00
checkout-repository chore: strip comments from action and workflow manifests 2026-10-25 09:43:00 -04:00
publish-releases Update publish-releases/publish.js 2026-10-28 08:10:55 -04:00
scripts Upload files to "scripts" 2026-10-28 08:17:03 -04:00
setup-android-toolchain chore: strip comments from action and workflow manifests 2026-10-25 09:43:00 -04:00
setup-bun feat: initial release of Valenced shared actions 2026-10-25 09:30:58 -04:00
setup-node chore: strip comments from action and workflow manifests 2026-10-25 09:43:00 -04:00
setup-plugin-deps feat: initial release of Valenced shared actions 2026-10-25 09:30:58 -04:00
templates chore: strip comments from action and workflow manifests 2026-10-25 09:43:00 -04:00
.gitignore feat: initial release of Valenced shared actions 2026-10-25 09:30:58 -04:00
LICENSE feat: initial release of Valenced shared actions 2026-10-25 09:30:58 -04:00
README.md feat: initial release of Valenced shared actions 2026-10-25 09:30:58 -04:00

Valenced Shared Actions

Reusable Forgejo Actions for building Valenced plugins and publishing the result into a shared releases repository.

Nothing in here is specific to one plugin repository. If a repository needs the same CI logic twice, it belongs here instead.

How a release works

push to main
   │
   ├── checkout-repository      clone the exact commit that was pushed
   ├── setup-android-toolchain  Temurin JDK, Android SDK, licences
   ├── setup-bun                JS runtime
   ├── setup-plugin-deps        JS dependencies, @valenced/plugin-cli
   ├── checkout-releases        clone shared releases repo into dist/
   ├── (your repository)        anything that has to exist before compilation
   ├── build-plugins            dist/<id>@<version>.zip, dist/index.json
   └── publish-releases         commit dist/ and push it to releases

dist/ is a clone of the releases repository, so the build output is the published tree. The clone has to be made before the build: the build writes into it, and a checkout afterwards would overwrite fresh artifacts with previously published ones.

Because the artifacts land in a separate repository, one organization's plugins can be served from a single index, and a repository can be renamed or moved without invalidating any download URL.

Actions

Action Kind What it does
checkout-repository composite Clones the commit the run was triggered for, authenticated, with safe.directory set.
setup-android-toolchain composite Installs a Temurin JDK and Android SDK (platforms, build-tools, licences) and exports JAVA_HOME, ANDROID_HOME, PATH.
setup-node composite Installs the Node.js runtime for JavaScript actions.
setup-bun composite Installs Bun and puts it on PATH.
setup-plugin-deps composite Runs bun install, builds @valenced/plugin-cli if needed.
checkout-releases composite Clones the shared releases repository into dist/, creating the branch if it does not exist yet.
build-plugins composite Builds and packages every plugin, generates index.json, verifies the artifacts are readable.
publish-releases node20 Commits the artifacts in the releases clone, pushes, optionally prunes superseded ones.

Using them in your own repository

Cross instance references need the full URL:

- uses: https://code.is-your.app/SheWhoReignsSupreme/Valenced-Actions/build-plugins@v1
  with:
    base-url: https://val.jarviscli.dev

Publishing needs an explicit token passed to checkout-releases and publish-releases:

- uses: https://code.is-your.app/SheWhoReignsSupreme/Valenced-Actions/checkout-releases@v1
  with:
    token: ${{ secrets.PUBLISH_TOKEN }}

- uses: https://code.is-your.app/SheWhoReignsSupreme/Valenced-Actions/publish-releases@v1
  with:
    token: ${{ secrets.PUBLISH_TOKEN }}
    prune: 'true'