xref: /llvm-project/.github/workflows/release-documentation.yml (revision b4576bba44bc4f2b2dec12a4792b64c1f826d199)
1name: Release Documentation
2
3permissions:
4  contents: read
5
6on:
7  workflow_dispatch:
8    inputs:
9      release-version:
10        description: 'Release Version'
11        required: true
12        type: string
13      upload:
14        description: 'Upload documentation'
15        required: false
16        type: boolean
17
18  workflow_call:
19    inputs:
20      release-version:
21        description: 'Release Version'
22        required: true
23        type: string
24      upload:
25        description: 'Upload documentation'
26        required: false
27        type: boolean
28
29jobs:
30  release-documentation:
31    name: Build and Upload Release Documentation
32    runs-on: ubuntu-latest
33    env:
34      upload: ${{ inputs.upload && !contains(inputs.release-version, 'rc') }}
35    steps:
36      - name: Checkout LLVM
37        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
38
39      - name: Setup Python env
40        uses: actions/setup-python@v5
41        with:
42          cache: 'pip'
43          cache-dependency-path: './llvm/docs/requirements.txt'
44
45      - name: Install Dependencies
46        run: |
47          sudo apt-get update
48          sudo apt-get install -y \
49              graphviz \
50              python3-github \
51              ninja-build \
52              texlive-font-utils
53          pip3 install --user -r ./llvm/docs/requirements.txt
54
55      - name: Build Documentation
56        env:
57          GITHUB_TOKEN: ${{ github.token }}
58        run: |
59          ./llvm/utils/release/build-docs.sh -release "${{ inputs.release-version }}" -no-doxygen
60
61      - name: Create Release Notes Artifact
62        uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # 4.6.0
63        with:
64          name: release-notes
65          path: docs-build/html-export/
66
67      - name: Clone www-releases
68        if: env.upload
69        uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
70        with:
71          repository: ${{ github.repository_owner }}/www-releases
72          ref: main
73          fetch-depth: 0
74          path: www-releases
75          persist-credentials: false
76
77      - name: Upload Release Notes
78        if: env.upload
79        env:
80          GH_TOKEN: ${{ secrets.WWW_RELEASES_TOKEN }}
81        run: |
82          mkdir -p www-releases/${{ inputs.release-version }}
83          mv ./docs-build/html-export/* www-releases/${{ inputs.release-version }}
84          cd www-releases
85          git checkout -b ${{ inputs.release-version }}
86          git add ${{ inputs.release-version }}
87          git config user.email "llvmbot@llvm.org"
88          git config user.name "llvmbot"
89          git commit -a -m "Add ${{ inputs.release-version }} documentation"
90          git push --force  "https://$GH_TOKEN@github.com/llvmbot/www-releases.git" HEAD:refs/heads/${{ inputs.release-version }}
91          gh pr create -f -B main -H ${{ inputs.release-version }} -R llvmbot/www-releases
92