Skip to content

feat(mysql): v1.0.7 — default port 3306 (was 3307) #65

feat(mysql): v1.0.7 — default port 3306 (was 3307)

feat(mysql): v1.0.7 — default port 3306 (was 3307) #65

Workflow file for this run

name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_dispatch:
permissions:
contents: read
# F99: build job needs to pull NKS.WebDevConsole.Plugin.SDK from the
# org-wide GitHub Packages feed. `packages: read` is not in the default
# GITHUB_TOKEN scope, which produced a 403 on dotnet restore.
packages: read
jobs:
# F100 landed: plugin csprojs now reference Plugin.SDK as a NuGet
# PackageReference resolved from the NKS Hub GitHub Packages feed
# (see nuget.config + Directory.Build.props). This job runs a full
# `dotnet restore` + `dotnet build` to catch any drift between the
# published SDK version and what the plugins compile against.
# GITHUB_TOKEN already has read:packages on the runner, so no extra
# secret is needed — we just set the username/token env vars that
# nuget.config interpolates from.
structure:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install helpers
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq libxml2-utils jq
- name: Verify every plugin has csproj + plugin.json
run: |
set -e
missing=0
for dir in NKS.WebDevConsole.Plugin.*/; do
name=$(basename "$dir")
csproj="$dir${name}.csproj"
manifest="${dir}plugin.json"
readme="${dir}README.md"
if [ ! -f "$csproj" ]; then
echo "::error file=$csproj::$name missing csproj"
missing=$((missing+1))
else
if ! xmllint --noout "$csproj" 2>/dev/null; then
echo "::error file=$csproj::malformed XML in $csproj"
missing=$((missing+1))
fi
fi
if [ ! -f "$manifest" ]; then
echo "::warning file=$dir::$name missing plugin.json (expected for ship-ready plugins)"
else
if ! jq empty "$manifest" 2>/dev/null; then
echo "::error file=$manifest::malformed JSON in $manifest"
missing=$((missing+1))
fi
fi
if [ ! -f "$readme" ]; then
echo "::warning file=$dir::$name missing README.md"
fi
done
if [ $missing -gt 0 ]; then
echo "::error::$missing structural issues found"
exit 1
fi
echo "All plugins structurally valid."
# SDK nupkg is downloaded from the most recent nks-hub/webdev-console
# GitHub Release (attached by publish-sdk.yml in that repo) and added as
# a local NuGet source. This avoids the cross-repo GitHub Packages 403
# (a GITHUB_TOKEN from THIS repo has no read:packages scope on packages
# owned by sibling repos — github.com-side UI linking would be the
# alternative fix, not something the workflow can self-heal).
build:
runs-on: ubuntu-latest
needs: structure
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-dotnet@v5
with:
dotnet-version: '9.0.x'
- name: Fetch SDK nupkg from monorepo release
run: |
set -e
mkdir -p .local-nuget
latest_tag=$(gh release list --repo nks-hub/webdev-console --limit 50 \
--json tagName --jq '.[].tagName' | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1)
echo "Using SDK nupkg from release ${latest_tag}"
gh release download "${latest_tag}" \
--repo nks-hub/webdev-console \
--pattern '*.nupkg' \
--dir .local-nuget
ls -la .local-nuget
- name: Rewrite nuget.config to point at local feed
run: |
cat > nuget.config <<'EOF'
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="local-sdk" value=".local-nuget" />
</packageSources>
</configuration>
EOF
- name: Restore (every plugin project)
run: |
set -e
for proj in NKS.WebDevConsole.Plugin.*/*.csproj; do
echo "::group::restore $proj"
dotnet restore "$proj"
echo "::endgroup::"
done
- name: Build (Release)
run: |
set -e
for proj in NKS.WebDevConsole.Plugin.*/*.csproj; do
echo "::group::build $proj"
dotnet build "$proj" -c Release --no-restore
echo "::endgroup::"
done
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Verify core docs exist
run: |
set -e
for f in README.md LICENSE SECURITY.md CONTRIBUTING.md docs/PLUGIN-API.md docs/MANIFEST.md docs/WRITING-A-PLUGIN.md; do
if [ ! -f "$f" ]; then
echo "::error file=$f::missing required doc"
exit 1
fi
done
echo "All required docs present."