From 56564d8eeb7c075d66d94d119fc8a06a218dc882 Mon Sep 17 00:00:00 2001 From: Jack Baldry Date: Tue, 14 Jun 2022 17:04:23 +0100 Subject: [PATCH] Add publish docs workflows Signed-off-by: Jack Baldry --- .../publish-technical-documentation-next.yml | 43 +++++++++++ ...ublish-technical-documentation-release.yml | 74 +++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 .github/workflows/publish-technical-documentation-next.yml create mode 100644 .github/workflows/publish-technical-documentation-release.yml diff --git a/.github/workflows/publish-technical-documentation-next.yml b/.github/workflows/publish-technical-documentation-next.yml new file mode 100644 index 00000000..67a6cf25 --- /dev/null +++ b/.github/workflows/publish-technical-documentation-next.yml @@ -0,0 +1,43 @@ +name: "publish-technical-documentation-next" + +on: + push: + branches: + - "main" + - "dev" + paths: + - "docs/sources/**" + workflow_dispatch: +jobs: + test: + runs-on: "ubuntu-latest" + steps: + - name: "Check out code" + uses: "actions/checkout@v3" + - name: "Build website" + # -e HUGO_REFLINKSERRORLEVEL=ERROR prevents merging broken refs with the downside + # that no refs to external content can be used as these refs will not resolve in the + # docs-base image. + run: | + docker run -v ${PWD}/docs/sources:/hugo/content/docs/oncall/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'make hugo' + + sync: + runs-on: "ubuntu-latest" + needs: "test" + steps: + - name: "Check out code" + uses: "actions/checkout@v3" + + - name: "Clone website-sync Action" + run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.GH_BOT_ACCESS_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync" + + - name: "Publish to website repository (next)" + uses: "./.github/actions/website-sync" + id: "publish-next" + with: + repository: "grafana/website" + branch: "master" + host: "github.com" + github_pat: "${{ secrets.GH_BOT_ACCESS_TOKEN }}" + source_folder: "docs/sources" + target_folder: "content/docs/oncall/next" diff --git a/.github/workflows/publish-technical-documentation-release.yml b/.github/workflows/publish-technical-documentation-release.yml new file mode 100644 index 00000000..ace2f629 --- /dev/null +++ b/.github/workflows/publish-technical-documentation-release.yml @@ -0,0 +1,74 @@ +name: "publish-technical-documentation-release" + +on: + push: + branches: + - "release-*" + tags: + - "v[0-9]+.[0-9]+.[0-9]+" + paths: + - "docs/sources/**" + workflow_dispatch: +jobs: + test: + runs-on: "ubuntu-latest" + steps: + - name: "Check out code" + uses: "actions/checkout@v3" + - name: + "Build website" + # -e HUGO_REFLINKSERRORLEVEL=ERROR prevents merging broken refs with the downside + # that no refs to external content can be used as these refs will not resolve in the + # docs-base image. + run: | + docker run -v ${PWD}/docs/sources:/hugo/content/docs/oncall/latest -e HUGO_REFLINKSERRORLEVEL=ERROR --rm grafana/docs-base:latest /bin/bash -c 'make hugo' + + sync: + runs-on: "ubuntu-latest" + needs: "test" + steps: + - name: "Checkout code and tags" + uses: "actions/checkout@v3" + with: + fetch-depth: 0 + + - name: "Checkout Actions library" + uses: "actions/checkout@v3" + with: + repository: "grafana/grafana-github-actions" + path: "./actions" + + - name: "Install Actions from library" + run: "npm install --production --prefix ./actions" + + - name: "Determine if there is a matching release tag" + id: "has-matching-release-tag" + uses: "./actions/has-matching-release-tag" + with: + ref_name: "${{ github.ref_name }}" + release_tag_regexp: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$" + release_branch_regexp: "^release-(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$" + + - name: "Determine technical documentation version" + if: "steps.has-matching-release-tag.outputs.bool == 'true'" + uses: "./actions/docs-target" + id: "target" + with: + ref_name: "${{ github.ref_name }}" + + - name: "Clone website-sync Action" + if: "steps.has-matching-release-tag.outputs.bool == 'true'" + run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.GH_BOT_ACCESS_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync" + + - name: "Publish to website repository (release)" + if: "steps.has-matching-release-tag.outputs.bool == 'true'" + uses: "./.github/actions/website-sync" + id: "publish-release" + with: + repository: "grafana/website" + branch: "master" + host: "github.com" + github_pat: "${{ secrets.GH_BOT_ACCESS_TOKEN }}" + source_folder: "docs/sources" + # Append ".x" to target to produce a v..x directory. + target_folder: "content/docs/oncall/${{ steps.target.outputs.target }}.x"