feat(mysql): v1.0.7 — default port 3306 (was 3307) #65
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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." |