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 - name: Checkout branch uses: actions/checkout@v2 - name: Checkout submodules run: git submodule update --init --recursive - name: Locate MSBuild uses: microsoft/setup-msbuild@v1.0.2 - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: # As usual, obtained from: https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/5.0/releases.json dotnet-version: "3.1.404" # since we now use this - name: Nuget Restore run: msbuild -t:Restore -m - name: Install DocFX uses: crazy-max/ghaction-chocolatey@v1 with: args: install docfx -y - name: Checkout current pages uses: actions/checkout@v2 with: ref: gh-pages token: ${{ secrets.pagesCommitToken }} path: docs/${{ env.ORIGIN_SITE }} - 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." } - 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 $ErrorActionPreference = "SilentlyContinue" 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: github.ref == 'refs/heads/master' - name: Publish branch site to GitHub pages shell: powershell working-directory: ./docs run: | $ErrorActionPreference = "Continue" $branchName = (git rev-parse --abbrev-ref=loose $env:GITHUB_REF) -join "" $srcMessage = (git show -s --format=%B $env:GITHUB_SHA) -join "`n" cd $env:ORIGIN_SITE if (-Not (Test-Path $env:BRANCH_DIR)) { New-Item -ItemType directory -Path $env:BRANCH_DIR } $branchPath = "$env:BRANCH_DIR/$branchName" 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 git commit -q -a -m "Generated Docs ($branchName) -- $srcMessage" git push -q origin gh-pages if: github.ref != 'refs/heads/master'