name: Routine Docs on: push: branches-ignore: - gh-pages jobs: docs: env: ORIGIN_SITE: _origin_site TAGS_DIR: tags BRANCH_DIR: branch name: Generate docs runs-on: windows-latest steps: - name: Configure Git shell: powershell run: | git config --global core.autocrlf true git config --global user.email ([$env:GITHUB_ACTOR,"@users.noreply.github.com" -join "") git config --global user.name $env:GITHUB_ACTOR $env:BRANCH_NAME = (git rev-parse --abbrev-ref $env:GITHUB_REF) -join "" echo $env:BRANCH_NAME - name: Checkout branch uses: actions/checkout@v2 - name: Checkout submodules run: git submodule update --init --recursive - name: Locate MSBuild uses: warrenbuckley/Setup-MSBuild@v1 - name: Setup Nuget uses: warrenbuckley/Setup-Nuget@v1 - name: Nuget Restore run: nuget restore - name: Install DocFX uses: crazy-max/ghaction-chocolatey@v1 with: args: install docfx -y - name: Build docs shell: powershell working-directory: ./docs run: | Add-Content link_branch.json "{`"_gitContribute`":{`"sourceBranch`":`"$env:GITHUB_SHA`",`"apiSpecFolder`":`"docs/override`"}}" powershell .\build.ps1 if ($lastexitcode -ne 0){ throw [System.Exception] "docfx build failed with exit code $lastexitcode." } echo $env:BRANCH_NAME - name: Checkout current pages uses: actions/checkout@v2 with: ref: gh-pages token: ${{ secrets.pagesCommitToken }} path: docs/${{ env.ORIGIN_SITE }} - name: Publish master site to GitHub pages shell: powershell working-directory: ./docs run: | Move-Item "$env:ORIGIN_SITE/.git" _site Move-Item "$env:ORIGIN_SITE/$env:TAGS_DIR" _site Move-Item "$env:ORIGIN_SITE/$env:BRANCH_DIR" _site cd _site git add -A 2>&1 $srcMessage = (git show -s --format=%B $env:GITHUB_SHA) -join "`n" git commit -q -a -m "Generated Docs -- $srcMessage" git push -q origin gh-pages if: env.BRANCH_NAME == 'master' - name: Publish branch site to GitHub pages shell: powershell working-directory: ./docs/${{ env.ORIGIN_SITE }} run: | if (-Not (Test-Path $env:BRANCH_DIR)) { New-Item -ItemType directory -Path $env:BRANCH_DIR } $branchPath = "$env:BRANCH_DIR/$env:BRANCH_NAME" if (Test-Path $branchPath) { # force remove it Get-ChildItem -Path $branchPath -Recurse | Remove-Item -Force -Recurse Remove-Item $branchPath -Force } # move generated into place Move-Item ../_site $branchPath git add -A 2>&1 $srcMessage = (git show -s --format=%B $env:GITHUB_SHA) -join "`n" git commit -q -a -m "Generated Docs ($env:BRANCH_NAME) -- $srcMessage" git push -q origin gh-pages if: env.BRANCH_NAME != 'master'