-
Notifications
You must be signed in to change notification settings - Fork 174
chore: CI統合 & PR時 build #1401
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: CI統合 & PR時 build #1401
Changes from all commits
5b1731b
dca7653
cb5159b
6fcc5a2
da059d7
82dd7b3
534d2e5
81806fc
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,154 @@ | ||
| name: check | ||
|
|
||
| on: [push, pull_request_target, workflow_dispatch] | ||
|
|
||
| jobs: | ||
| check: | ||
| runs-on: ubuntu-latest | ||
| strategy: | ||
| matrix: | ||
| item: | ||
| - {name: code_qualify} | ||
| - {name: defined_word} | ||
| - {name: display_error} | ||
| - {name: meta_header} | ||
| - {name: ngword} | ||
| - {name: inner_link, script: link_check.py --check-inner-link} | ||
| name: check (${{ matrix.item.name }}) | ||
| steps: | ||
| - name: Set up Python | ||
| uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: '3.x' | ||
| - name: Install dependencies | ||
| run: | | ||
| python -m pip install --upgrade pip | ||
| pip install requests | ||
| - uses: actions/checkout@v4 | ||
| with: | ||
| repository: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name || github.event.repository.full_name }} | ||
| ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.ref || github.ref }} | ||
| - uses: actions/checkout@v4 | ||
| with: | ||
| repository: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.base.repo.full_name || github.event.repository.full_name }} | ||
| ref: ${{ github.event_name == 'pull_request_target' && 'master' || github.ref }} | ||
| sparse-checkout: .github | ||
| path: .trusted | ||
| - name: check | ||
| run: python3 .trusted/.github/workflows/script/${{ matrix.item.script || format('{0}_check.py', matrix.item.name) }} | ||
|
|
||
| detect_forbidden_characters: | ||
| # 本リポジトリでは、以下に挙げる文字の使用を禁止している: | ||
| # U+00AD SOFT HYPHEN (ソフトハイフン) | ||
| # U+200B ZERO WIDTH SPACE (ゼロ幅スペース) | ||
| # | ||
| # 経緯は以下を参照: | ||
| # #735 SOFT HYPHENを削除する? | ||
| # https://github.com/cpprefjp/site/issues/735 | ||
|
Comment on lines
+40
to
+47
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 現在
|
||
| runs-on: ubuntu-latest | ||
| env: | ||
| RIPGREP_VERSION: 14.1.0 | ||
| BIN_DIR: ${{ github.workspace }}/bin | ||
| REPO_DIR: repo | ||
| cache-version: v1 | ||
| steps: | ||
| - id: cache-ripgrep | ||
| uses: actions/cache@v3 | ||
| with: | ||
| path: ${{ env.BIN_DIR }} | ||
| key: ${{ env.cache-version }}-ripgrep-${{ env.RIPGREP_VERSION }} | ||
| - name: install ripgrep | ||
| if: steps.cache-ripgrep.outputs.cache-hit != 'true' | ||
| run: | | ||
| curl -fsSLO https://github.com/BurntSushi/ripgrep/releases/download/$RIPGREP_VERSION/ripgrep-$RIPGREP_VERSION-x86_64-unknown-linux-musl.tar.gz | ||
| mkdir -p $BIN_DIR | ||
| tar xvf ripgrep-$RIPGREP_VERSION-x86_64-unknown-linux-musl.tar.gz --strip=1 --no-anchor -C $BIN_DIR rg | ||
| working-directory: ${{ runner.temp }} | ||
| - uses: actions/checkout@v4 | ||
| with: | ||
| path: ${{ env.REPO_DIR }} | ||
| - name: check | ||
| run: "! $BIN_DIR/rg -t md --vimgrep '[\u00ad\u200b]' $REPO_DIR" | ||
|
|
||
| preview_build: | ||
| if: github.event_name == 'pull_request_target' | ||
| needs: [check, detect_forbidden_characters] | ||
| uses: ./.github/workflows/build.yml | ||
| with: | ||
| arguments: --pull ${{ github.event.number }} | ||
| concurrency: | ||
| group: cpprefjp.gh-pages.lock | ||
|
|
||
| preview_link: | ||
| needs: preview_build | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| with: | ||
| fetch-depth: 0 | ||
| - id: vars | ||
| uses: actions/github-script@v7 | ||
| with: | ||
| script: | | ||
| const sha0 = context.payload.pull_request.base.sha; | ||
| const sha = context.payload.pull_request.head.sha; | ||
| const base_url = (() => { | ||
| const owner = context.payload.pull_request.head.repo.owner.login; | ||
| const repo = context.payload.pull_request.head.repo.name; | ||
| const pull = context.payload.number; | ||
| return `https://${owner}.github.io/${repo}/gen/pull/${pull}`; | ||
| })(); | ||
| const repo_full = context.payload.pull_request.head.repo.full_name; | ||
| const branch = context.payload.pull_request.head.ref; | ||
| // https://qiita.com/akko_merry/items/dda3c6b7ae01ac143a8b#comment-e0ecb4abe4d3d6d76054 | ||
| const now = new Date(); | ||
| now.setMinutes(now.getMinutes() + 9 * 60); // JST is +0900 | ||
| const time = now.toJSON()?.replace('T', ' ').slice(0, 19) + ' JST'; | ||
| core.setOutput('sha0', sha0); | ||
| core.setOutput('sha', sha); | ||
| core.setOutput('base_url', base_url); | ||
| core.setOutput('repo_full', repo_full); | ||
| core.setOutput('ubranch', encodeURIComponent(branch)); | ||
| core.setOutput('time', time); | ||
| - id: file_list | ||
| shell: bash | ||
| run: | | ||
| content=$( | ||
| git diff --name-status --diff-filter=dr ${{ steps.vars.outputs.sha0 }} ${{ steps.vars.outputs.sha }} | | ||
| sed -n ' | ||
| # normalize the line format | ||
| s/^[[:space:]]*\([^[:space:]]\{1,\}\)[[:space:]]\{1,\}/\1 / | ||
| # exclude filenames containing special characters that may break Markdown | ||
| /[][`()]/d | ||
| # exclude README.md | ||
| /^[^[:space:]]* README\.md$/d | ||
| # generate list items | ||
| s|^A \(.*\)\.md$|- :memo: [`\1`](${{ steps.vars.outputs.base_url }}/\1.html) :sparkles:|p | ||
| s|^[^[:space:]]* \(.*\)\.md$|- :memo: [`\1`](${{ steps.vars.outputs.base_url }}/\1.html)|p | ||
| ' | ||
| ) | ||
| [[ $content ]] || content='- (内容変更された `.md` ファイルはありません)' | ||
| echo 'content<<EOF' >> "$GITHUB_OUTPUT" | ||
| echo "$content" >> "$GITHUB_OUTPUT" | ||
| echo 'EOF' >> "$GITHUB_OUTPUT" | ||
| - uses: thollander/actions-comment-pull-request@v3 | ||
| with: | ||
| message: | | ||
| :zap: [**プレビュー (HTML)**](${{ steps.vars.outputs.base_url }}) (更新時刻: ${{ steps.vars.outputs.time }}) | ||
| - **⫯** Commit: ${{ steps.vars.outputs.sha }} | ||
| - プレビューの生成には時間がかかります (3~5分)。進捗状況は[こちら](https://github.com/${{ steps.vars.outputs.repo_full }}/actions?query=event%3Apull_request_target+branch%3A${{ steps.vars.outputs.ubranch }})をご確認ください。 | ||
| #### 変更記事一覧 | ||
| ${{ steps.file_list.outputs.content }} | ||
| ※ソース (.md) に直接変更のあった記事を列挙しています。グローバル修飾や変換規則の変更による変化は考慮していません。 | ||
| comment-tag: cpprefjp-preview_link | ||
| github-token: ${{ secrets.GITHUB_TOKEN }} | ||
This file was deleted.
This file was deleted.
This file was deleted.
Uh oh!
There was an error while loading. Please reload this page.