Skip to content

Switch sample from Console to Resolver #40

Switch sample from Console to Resolver

Switch sample from Console to Resolver #40

name: "Test Site"
on:
workflow_dispatch:
pull_request:
branches: [ "develop" ]
jobs:
build:
runs-on: ubuntu-latest
environment: sandbox
steps:
# Clone current repo
- name: Checkout
uses: actions/checkout@v3
with:
path: src
# ref: develop # <-- required to deploy beta docs
# npm install
- name: npm install
working-directory: ./src
run: |
npm install
# compress the images
- name: Compress Images
working-directory: ./src
run: |
node ./scripts/compress.js ./
# Clone all the Meadow dependencies adjacent for DocFX build use.
- name: Checkout Meadow.Units side-by-side
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Units
path: Meadow.Units
ref: main
- name: Checkout Meadow.Logging side-by-side
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Logging
path: Meadow.Logging
ref: main
- name: Checkout Meadow.Contracts side-by-side
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Contracts
path: Meadow.Contracts
ref: main
- name: Checkout Meadow.Modbus side-by-side
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Modbus
path: Meadow.Modbus
ref: main
- name: Checkout Meadow.Foundation side-by-side
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Foundation
path: Meadow.Foundation
ref: main
- name: Checkout Meadow.Core side-by-side
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Core
path: Meadow.Core
ref: main
- name: Checkout MQTTnet side-by-side
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/MQTTnet
path: MQTTnet
ref: master
- name: Checkout Meadow side-by-side
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
# Private repo requires token access; rest are public repos.
token: ${{ secrets.CI_ACCESS_TOKEN }}
repository: WildernessLabs/Meadow
path: Meadow
ref: main
# Clone more Meadow-related repos for API docs generation (via DocFX).
- name: Checkout Meadow.Foundation.CompositeDevices into DocFX-expected Source location
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Foundation.CompositeDevices
path: Meadow.Foundation.CompositeDevices
ref: main
- name: Checkout Meadow.Foundation.Grove into DocFX-expected Source location
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Foundation.Grove
path: Meadow.Foundation.Grove
ref: main
- name: Checkout Meadow.Foundation.FeatherWings into DocFX-expected Source location
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Foundation.FeatherWings
path: Meadow.Foundation.FeatherWings
ref: main
- name: Checkout Meadow.Foundation.mikroBUS into DocFX-expected Source location
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/checkout@v3
with:
repository: WildernessLabs/Meadow.Foundation.mikroBUS
path: Meadow.Foundation.mikroBUS
ref: main
# # Set up for DocFX
- name: Setup .NET Core SDK 7.0.x
if: contains(github.event.pull_request.title, '[build-api]')
uses: actions/setup-dotnet@v3
with:
dotnet-version: |
7.0.x
- name: Setup NuGet
if: contains(github.event.pull_request.title, '[build-api]')
uses: Nuget/[email protected]
- name: Install DocFX globally
if: contains(github.event.pull_request.title, '[build-api]')
run: |
dotnet tool install --global docfx
- name: Install DocFxMarkdownGen
if: contains(github.event.pull_request.title, '[build-api]')
run: |
dotnet tool install --global DocFxMarkdownGen
- name: Run DocFX
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src/docfx
run: |
docfx docfx.json
- name: Run DocFxMarkdownGen (dfmg) to generate API .md files for Meadow
if: contains(github.event.pull_request.title, '[build-api]')
# dfmg uses config.yaml for input/output paths
# Currently config has to be limited to `docfx/api/Meadow`, which means we need to figure out a way to run it for all the other /api directories.
# We might be able to set `env:DFMG_YAML_PATH` and `env:DFMG_OUTPUT_PATH` to the correct values for each repo, to generate them all before merging them together.
# One option is setting `env: {whatever}` via Actions syntax (https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_iddefaultsrun).
working-directory: ./src/docfx/dfmg/Meadow
run: |
dfmg
- name: Run DocFxMarkdownGen (dfmg) to generate API .md files for Meadow.Foundation
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src/docfx/dfmg/Meadow.Foundation
run: |
dfmg
- name: Run DocFxMarkdownGen (dfmg) to generate API .md files for Meadow.Foundation.CompositeDevices
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src/docfx/dfmg/Meadow.Foundation.CompositeDevices
run: |
dfmg
- name: Run DocFxMarkdownGen (dfmg) to generate API .md files for Meadow.Foundation.FeatherWings
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src/docfx/dfmg/Meadow.Foundation.FeatherWings
run: |
dfmg
- name: Run DocFxMarkdownGen (dfmg) to generate API .md files for Meadow.Foundation.Grove
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src/docfx/dfmg/Meadow.Foundation.Grove
run: |
dfmg
- name: Run DocFxMarkdownGen (dfmg) to generate API .md files for Meadow.Foundation.mikroBUS
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src/docfx/dfmg/Meadow.Foundation.mikroBUS
run: |
dfmg
# let's add correct slugs. They are important, because things won't build if they dont have "slug: /docs/api/..."
- name: Update slugs in frontmatter.
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src
run: |
node ./scripts/update-frontmatter.js
# Now we need to take all of the generated class/api reference documentation, and merge
# it into the api-overrides content
- name: Merge api docs together
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src
run: |
node ./scripts/merge-api-overrides.js Meadow.Foundation &&
node ./scripts/merge-api-overrides.js Meadow.Foundation.FeatherWings &&
node ./scripts/merge-api-overrides.js Meadow.Foundation.Grove &&
node ./scripts/merge-api-overrides.js Meadow.Foundation.mikroBUS
# Let's put the api files where they belong
- name: Copy api files to content locations
if: contains(github.event.pull_request.title, '[build-api]')
working-directory: ./src
run: |
node ./scripts/update-frontmatter.js &&
node ./scripts/copy-api.js
# Fun. Docusaurus isn't resolving the links correctly from many
# of the files output from dfmg. This script should help with that.
- name: Fix api broken links
working-directory: ./src
run: |
node ./scripts/api-broken-link-fixer.js ./docs/api/
# - name: Fix Meadow.Foundation periphs broken links
# working-directory: ./src
# run: |
# node ./scripts/meadow-foundation-broken-link-fixer.js
#docusaurus build
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
# Tell Node.js to look for the package-lock.json file in the cloned repo location rather than root.
cache-dependency-path: src/package-lock.json
- name: Docusaurus Build and Deploy
working-directory: ./src
run: |
npm run build
- uses: bacongobbler/azure-blob-storage-upload@main
with:
source_dir: './src/build'
container_name: '$web'
connection_string: ${{ secrets.BLOB_CONNECTIONSTRING }}
overwrite: 'true'
#sync: 'true'
# Post a comment on the pull request
- name: Post comment on pull request
if: github.event_name == 'pull_request'
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'Thank you for having the patience of Asclepius. Your test site, https://developer-docusaurus-a8fqgrg9ecg3cxer.z03.azurefd.net/ is ready to view.'
})