mirror of
https://github.com/grafana/grafana.git
synced 2024-12-01 13:09:22 -06:00
ad1989cf4d
* Publish documentation from the HEAD of the matching version branch on tag events Tags aren't necessarily made to the HEAD of the version branch. The documentation that should be published is always on the HEAD of the version branch. This is another mismatch between the code and documentation but is desirable as the "What's new" documentation is typically added much later than commit the tag targets. Technically it would be more correct for the "What's new" documentation to be in place before the commit that is tagged. However, the significant lag between the start of a release and the actual publishing of the tag would be challenging to codify in this action's logic. It would also require a side channel for non-code related documentation updates to be made to the docs released by the tag. This would likely require a long lived branch to be created at the tag commit and I'm not sure that the additional work is justified. In practice, I think we can get away with publishing more recent documentation than the code given the assumption that no significant feature is going to be absent from the initial major/minor release. Signed-off-by: Jack Baldry <jack.baldry@grafana.com> * Switch to detached remote branch reference --------- Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
75 lines
3.1 KiB
YAML
75 lines
3.1 KiB
YAML
name: "publish-technical-documentation-release"
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- v[0-9]+.[0-9]+.x
|
|
tags:
|
|
- v[0-9]+.[0-9]+.[0-9]+
|
|
paths:
|
|
- "docs/sources/**"
|
|
workflow_dispatch:
|
|
jobs:
|
|
sync:
|
|
if: github.repository == 'grafana/grafana'
|
|
runs-on: "ubuntu-latest"
|
|
steps:
|
|
- name: "Checkout Grafana repo"
|
|
uses: "actions/checkout@v4"
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: "Checkout Actions library"
|
|
uses: "actions/checkout@v4"
|
|
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: "^v(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.x$"
|
|
|
|
- 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'"
|
|
# WEBSITE_SYNC_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
|
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
|
# GitHub administrator to update the organization secret.
|
|
# The IT helpdesk can update the organization secret.
|
|
run: "git clone --single-branch --no-tags --depth 1 -b master https://grafanabot:${{ secrets.WEBSITE_SYNC_TOKEN }}@github.com/grafana/website-sync ./.github/actions/website-sync"
|
|
|
|
- name: "Switch to HEAD of version branch for tags"
|
|
# Tags aren't necessarily made to the HEAD of the version branch.
|
|
# The documentation to be published is always on the HEAD of the version branch.
|
|
if: "steps.has-matching-release-tag.outputs.bool == 'true' && github.ref_type == 'tag'"
|
|
run: "git switch --detach origin/${{ steps.target.output.target }}.x"
|
|
|
|
- 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"
|
|
# PUBLISH_TO_WEBSITE_TOKEN is a fine-grained GitHub Personal Access Token that expires.
|
|
# It must be regenerated in the grafanabot GitHub account and requires a Grafana organization
|
|
# GitHub administrator to update the organization secret.
|
|
# The IT helpdesk can update the organization secret.
|
|
github_pat: "grafanabot:${{ secrets.PUBLISH_TO_WEBSITE_TOKEN }}"
|
|
source_folder: "docs/sources"
|
|
target_folder: "content/docs/grafana/${{ steps.target.outputs.target }}"
|