File: rustdoc-preview.yml

package info (click to toggle)
rust-hyper-util 0.1.19-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 912 kB
  • sloc: makefile: 2
file content (99 lines) | stat: -rw-r--r-- 3,319 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
name: Rustdoc PR Preview

on:
  issue_comment:
    types: [created]
  pull_request:
    types: [closed]

jobs:
  rustdoc-preview:
    # Only run on issue_comment, not on PR close
    if: github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '/rustdoc-preview')
    runs-on: ubuntu-latest
    steps:
      - name: Check if commenter is a collaborator
        id: collaborator-check
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const commenter = context.payload.comment.user.login;
            const owner = context.repo.owner;
            const repo = context.repo.repo;
            try {
              await github.rest.repos.checkCollaborator({
                owner,
                repo,
                username: commenter
              });
              return true;
            } catch (e) {
              return false;
            }
        # Only continue if the check passes
      - name: Fail if not collaborator
        if: steps.collaborator-check.outputs.result != 'true'
        run: |
          echo "Commenter is not a collaborator. Skipping preview build."
          exit 1

      - name: Checkout PR branch
        uses: actions/checkout@v4
        with:
          # Check out the PR's branch
          ref: refs/pull/${{ github.event.issue.number }}/head

      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@nightly

      - name: Build rustdoc
        run: cargo rustdoc --features full -- --cfg docsrs

      - name: Deploy rustdoc to gh-pages/pr-<PR_NUMBER>
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./target/doc
          # Publish to pr-<PR_NUMBER> subdir
          destination_dir: pr-${{ github.event.issue.number }}
          keep_files: true

      - name: Comment preview link on PR
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const pr_number = context.issue.number;
            const repo = context.repo.repo;
            const owner = context.repo.owner;
            const url = `https://${owner}.github.io/${repo}/pr-${pr_number}/hyper_util/`;
            github.rest.issues.createComment({
              issue_number: pr_number,
              owner,
              repo,
              body: `📝 Rustdoc preview for this PR: [View docs](${url})`
            });

  rustdoc-preview-cleanup:
    # Only run on PR close/merge
    if: github.event_name == 'pull_request' && github.event.action == 'closed'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout gh-pages branch
        uses: actions/checkout@v4
        with:
          ref: gh-pages
          persist-credentials: true

      - name: Remove PR preview directory
        run: |
          rm -rf pr-${{ github.event.pull_request.number }}

      - name: Commit and push removal
        run: |
          git config user.name "github-actions"
          git config user.email "github-actions@github.com"
          git add .
          git commit -m "Remove rustdoc preview for PR #${{ github.event.pull_request.number }}" || echo "Nothing to commit"
          git push