diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2d412292c9..5dd575bd05 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,6 +2,13 @@ name: build on: workflow_dispatch: + workflow_call: + inputs: + arguments: + description: "build.sh に渡すコマンドライン引数" + default: '' + required: false + type: string push: branches: - master @@ -12,18 +19,18 @@ on: jobs: build: + if: github.repository_owner == 'cpprefjp' || startsWith(inputs.arguments, '--pull ') runs-on: ubuntu-latest steps: - - name: Register SSH key - env: - CPPREFJP_GITHUB_IO_SECRETS: ${{ secrets.CPPREFJP_GITHUB_IO_SECRETS }} + - id: vars run: | - mkdir -p $HOME/.ssh - echo "$CPPREFJP_GITHUB_IO_SECRETS" > $HOME/.ssh/id_ed25519 - chmod 600 $HOME/.ssh/id_ed25519 + echo "base_repo=${{ startsWith(inputs.arguments, '--pull ') && github.event.pull_request.base.repo.full_name || github.event.repository.full_name }}" >> "$GITHUB_OUTPUT" + echo "head_repo=${{ startsWith(inputs.arguments, '--pull ') && github.event.pull_request.head.repo.full_name || github.event.repository.full_name }}" >> "$GITHUB_OUTPUT" + echo "head_ref=${{ startsWith(inputs.arguments, '--pull ') && github.event.pull_request.head.ref || github.ref }}" >> "$GITHUB_OUTPUT" # site_generator - - uses: actions/checkout@v4 + - name: Check out cpprefjp/site_generator + uses: actions/checkout@v4 with: repository: cpprefjp/site_generator path: site_generator @@ -31,31 +38,29 @@ jobs: working-directory: site_generator # kunai - - uses: actions/checkout@v4 + - name: Check out cpprefjp/kunai + uses: actions/checkout@v4 with: repository: cpprefjp/kunai path: site_generator/kunai - run: git submodule update -i working-directory: site_generator/kunai - # cpprefjp.github.io - - uses: actions/checkout@v4 + # site (typically cpprefjp/site) + - name: Check out ${{ steps.vars.outputs.head_repo }} + uses: actions/checkout@v4 with: - repository: cpprefjp/cpprefjp.github.io - path: site_generator/cpprefjp/cpprefjp.github.io - - # site - - uses: actions/checkout@v4 - with: - repository: cpprefjp/site - path: site_generator/cpprefjp/site + repository: ${{ steps.vars.outputs.head_repo }} # atom 生成のために全履歴が必要 fetch-depth: 0 + ref: ${{ steps.vars.outputs.head_ref }} + path: site_generator/cpprefjp/site - run: git submodule update -i working-directory: site_generator/cpprefjp/site - # site - - uses: actions/checkout@v2 + # image + - name: Check out cpprefjp/image + uses: actions/checkout@v4 with: repository: cpprefjp/image path: site_generator/cpprefjp/image @@ -66,10 +71,65 @@ jobs: python-version: 3.11 # 3.12でUndefined symbolエラーがでた + # build.sh - base の build.sh を使う必要がある。もし PR head の + # build.sh を使うと、pull_request_target で呼び出された時に PR + # head の build.sh に悪意のあるコードが埋め込まれていると秘密鍵な + # ど盗まれてしまう。 + - name: Check out build.sh + uses: actions/checkout@v4 + with: + repository: ${{ steps.vars.outputs.base_repo }} + ref: master + sparse-checkout: .github + path: .trusted + + # Deploy 用 + - name: "(Deploy) Register SSH key" + if: inputs.arguments == '' + env: + CPPREFJP_GITHUB_IO_SECRETS: ${{ secrets.CPPREFJP_GITHUB_IO_SECRETS }} + run: | + mkdir -p $HOME/.ssh + echo "$CPPREFJP_GITHUB_IO_SECRETS" > $HOME/.ssh/id_ed25519 + chmod 600 $HOME/.ssh/id_ed25519 + + # Deploy 用 + - name: "(Deploy) Check out cpprefjp.github.io" + if: inputs.arguments == '' + uses: actions/checkout@v4 + with: + repository: cpprefjp/cpprefjp.github.io + path: site_generator/cpprefjp/cpprefjp.github.io + + # Preview 用 + - name: "(Preview build) Check out gh-pages" + if: startsWith(inputs.arguments, '--pull ') + continue-on-error: true + uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.base.repo.full_name }} + ref: gh-pages + path: site_generator/cpprefjp/gh-pages + # あとはスクリプトで頑張る - - run: ./cpprefjp/site/.github/workflows/script/build.sh + - name: Run script build.sh + run: ../.trusted/.github/workflows/script/build.sh ${{ inputs.arguments }} working-directory: site_generator + # Preview 用 + - name: "(Preview build) Publish result in gh-pages" + if: startsWith(inputs.arguments, '--pull ') + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./site_generator/cpprefjp/gh-pages + + # Note: 以下のコミットメッセージは .github/workflows/preview_clear.yml + # で削除対象のコミットの特定に用いるので、変更する場合は preview_clear + # も一緒に更新すること。 + commit_message: | + Preview PR ${{ github.event.number }}: ${{ github.event.pull_request.head.sha }} ← + concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000000..ff7f96ea6f --- /dev/null +++ b/.github/workflows/check.yml @@ -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 + 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<> "$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 }} diff --git a/.github/workflows/code_qualify_check.yml b/.github/workflows/code_qualify_check.yml deleted file mode 100644 index 4260abe065..0000000000 --- a/.github/workflows/code_qualify_check.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: code qualify check - -on: [push, pull_request, workflow_dispatch] - -jobs: - build: - runs-on: ubuntu-latest - 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 - - name: check - run: python3 .github/workflows/script/code_qualify_check.py diff --git a/.github/workflows/defined_word_check.yml b/.github/workflows/defined_word_check.yml deleted file mode 100644 index 0ca06f2ddf..0000000000 --- a/.github/workflows/defined_word_check.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: defined word check - -on: [push, pull_request, workflow_dispatch] - -jobs: - build: - runs-on: ubuntu-latest - 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 - - name: check - run: python3 .github/workflows/script/defined_word_check.py diff --git a/.github/workflows/detect_forbidden_characters.yml b/.github/workflows/detect_forbidden_characters.yml deleted file mode 100644 index 3db4dd2eeb..0000000000 --- a/.github/workflows/detect_forbidden_characters.yml +++ /dev/null @@ -1,38 +0,0 @@ -name: detect forbidden characters - -# 本リポジトリでは、以下に挙げる文字の使用を禁止している: -# U+00AD SOFT HYPHEN (ソフトハイフン) -# U+200B ZERO WIDTH SPACE (ゼロ幅スペース) -# -# 経緯は以下を参照: -# #735 SOFT HYPHENを削除する? -# https://github.com/cpprefjp/site/issues/735 - -on: [push, pull_request, workflow_dispatch] - -jobs: - build: - 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" diff --git a/.github/workflows/display_error_check.yml b/.github/workflows/display_error_check.yml deleted file mode 100644 index 54768c9d50..0000000000 --- a/.github/workflows/display_error_check.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: display error check - -on: [push, pull_request, workflow_dispatch] - -jobs: - build: - runs-on: ubuntu-latest - 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 - - name: check - run: python3 .github/workflows/script/display_error_check.py diff --git a/.github/workflows/inner_link_check.yml b/.github/workflows/inner_link_check.yml deleted file mode 100644 index 84ae4e0aa0..0000000000 --- a/.github/workflows/inner_link_check.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: inner link check - -on: [push, pull_request, workflow_dispatch] - -jobs: - build: - runs-on: ubuntu-latest - 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 - - name: check - run: python3 .github/workflows/script/link_check.py --check-inner-link diff --git a/.github/workflows/meta_header_check.yml b/.github/workflows/meta_header_check.yml deleted file mode 100644 index 9da3e3f520..0000000000 --- a/.github/workflows/meta_header_check.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: meta header check - -on: [push, pull_request, workflow_dispatch] - -jobs: - build: - runs-on: ubuntu-latest - 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 - - name: check - run: python3 .github/workflows/script/meta_header_check.py diff --git a/.github/workflows/ngword_check.yml b/.github/workflows/ngword_check.yml deleted file mode 100644 index 03a71c6cb3..0000000000 --- a/.github/workflows/ngword_check.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: ngword check - -on: [push, pull_request, workflow_dispatch] - -jobs: - build: - runs-on: ubuntu-latest - 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 - - name: check - run: python3 .github/workflows/script/ngword_check.py diff --git a/.github/workflows/outer_link_check.yml b/.github/workflows/outer_link_check.yml index 309b0152bd..2ae2262183 100644 --- a/.github/workflows/outer_link_check.yml +++ b/.github/workflows/outer_link_check.yml @@ -9,6 +9,7 @@ on: jobs: build: + if: github.repository_owner == 'cpprefjp' runs-on: ubuntu-latest steps: - name: Set up Python diff --git a/.github/workflows/preview_clear.yml b/.github/workflows/preview_clear.yml new file mode 100644 index 0000000000..2272532ade --- /dev/null +++ b/.github/workflows/preview_clear.yml @@ -0,0 +1,39 @@ +name: preview_clear + +on: workflow_dispatch + +jobs: + preview_clear: + concurrency: + group: cpprefjp.gh-pages.lock + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + ref: gh-pages + fetch-depth: 0 + - name: filter-branch gh-pages + env: + GH_TOKEN: ${{ github.token }} + run: | + set -ex + + # Note: 以下の 999 という数は適当な大きな数。もし open PR の数が 999 + # を超えるようならば、この数はもっと大きくする必要がある。 + PREVIEW_CLEAR_PR_LIST=$(gh pr list --limit=999 --json number -q '.[].number' | tr '\n' ' ') + PREVIEW_CLEAR_PR_LIST=${PREVIEW_CLEAR_PR_LIST% } + export PREVIEW_CLEAR_PR_LIST + + git config --global user.name 'github-actions[bot]' + git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' + git filter-branch --commit-filter ' + pr=$(git log -n 1 --pretty=format:%s "$GIT_COMMIT" | sed -n '\''s/^Preview PR \([0-9]\{1,\}\).*/\1/p'\'') + case " $PREVIEW_CLEAR_PR_LIST | " in + (*" $pr "*) + git commit-tree "$@" ;; + (*) + skip_commit "$@" ;; + esac + ' HEAD + + git push -f origin gh-pages diff --git a/.github/workflows/script/build.sh b/.github/workflows/script/build.sh index 519efd5723..a092f7da98 100755 --- a/.github/workflows/script/build.sh +++ b/.github/workflows/script/build.sh @@ -33,14 +33,32 @@ popd pip3 install -r docker/requirements.txt python3 run.py settings.cpprefjp --concurrency=`nproc` -# 生成されたサイトの中身を push -pushd cpprefjp/cpprefjp.github.io - # push するために ssh のリモートを追加する - git remote add origin2 git@github.com:cpprefjp/cpprefjp.github.io.git - - git add ./ --all - git config --global user.email "shigemasa7watanabe+cpprefjp@gmail.com" - git config --global user.name "cpprefjp-autoupdate" - git commit -a -m "update automatically" - git push origin2 master -popd +if (($# == 0)); then + # 生成されたサイトの中身を push + pushd cpprefjp/cpprefjp.github.io + # push するために ssh のリモートを追加する + git remote add origin2 git@github.com:cpprefjp/cpprefjp.github.io.git + + git add ./ --all + git config --global user.email "shigemasa7watanabe+cpprefjp@gmail.com" + git config --global user.name "cpprefjp-autoupdate" + git commit -a -m "update automatically" + git push origin2 master + popd + +elif [[ $1 == --pull ]]; then + if [[ ! $2 ]]; then + printf '%s\n' "build.sh: プルリクエスト番号が指定されていません" >&2 + exit 2 + fi + + target_directory=cpprefjp/gh-pages/gen/pull/$2 + rm -rf "$target_directory" + mkdir -p "$target_directory" + cp -r cpprefjp/cpprefjp.github.io/* "$target_directory"/ + +else + printf '%s\n' "build.sh: コマンドライン引数が認識できません: $1" >&2 + exit 2 + +fi diff --git a/README.md b/README.md index b9534c0fcf..e9ac5309dd 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,7 @@ site ==== -[![detect forbidden characters](https://github.com/cpprefjp/site/workflows/detect%20forbidden%20characters/badge.svg)](https://github.com/cpprefjp/site/actions/workflows/detect_forbidden_characters.yml) -[![inner link check](https://github.com/cpprefjp/site/workflows/inner%20link%20check/badge.svg)](https://github.com/cpprefjp/site/actions/workflows/inner_link_check.yml) -[![code qualify check](https://github.com/cpprefjp/site/workflows/code%20qualify%20check/badge.svg)](https://github.com/cpprefjp/site/actions/workflows/code_qualify_check.yml) -[![ngword check](https://github.com/cpprefjp/site/workflows/ngword%20check/badge.svg)](https://github.com/cpprefjp/site/actions/workflows/ngword_check.yml) -[![meta header check](https://github.com/cpprefjp/site/workflows/meta%20header%20check/badge.svg)](https://github.com/cpprefjp/site/actions/workflows/meta_header_check.yml) +[![check](https://github.com/cpprefjp/site/workflows/check/badge.svg)](https://github.com/cpprefjp/site/actions/workflows/check.yml) [![outer link check](https://github.com/cpprefjp/site/workflows/outer%20link%20check/badge.svg)](https://github.com/cpprefjp/site/actions/workflows/outer_link_check.yml) [![build](https://github.com/cpprefjp/site/workflows/build/badge.svg)](https://github.com/cpprefjp/site/actions/workflows/build.yml) diff --git a/start_editing.md b/start_editing.md index f531cda398..4d74e62b02 100644 --- a/start_editing.md +++ b/start_editing.md @@ -27,6 +27,8 @@ cpprefjp/site へ push すると、すぐに反映されます。 ### 自動デプロイ、自動テスト 本リポジトリでは、GitHub Actionsを使用して、自動デプロイと自動テストを行っています。 +Pull Request 時にも自動テストと自動プレビュー生成を行います。 + #### 自動デプロイ buildアクションで、MarkdownからHTMLへの変換と、GitHub Pagesへのデプロイを行っています。 @@ -40,7 +42,7 @@ buildアクションで、MarkdownからHTMLへの変換と、GitHub Pagesへの - 説明は[detect_forbidden_characters.yml](https://github.com/cpprefjp/site/blob/master/.github/workflows/detect_forbidden_characters.yml)のコメントを参照 - 内部リンクの誤り検出 (inner link checkアクション) - サイト内のリンクが存在しない、または存在しているのに.nolinkを指定している場合にエラーが発生する - - [GitHub Actionsの実行ログ](https://github.com/cpprefjp/site/actions/workflows/inner_link_check.yml)で、どのページのどのリンクが不正かがわかるので、それを修正すること + - [GitHub Actionsの実行ログ](https://github.com/cpprefjp/site/actions/workflows/check.yml)で、どのページのどのリンクが不正かがわかるので、それを修正すること - 外部リンク切れを検出 (outer link checkアクション) - 日本時間で日曜日の23:30に実行される - 外部リンクのページにアクセスできない (ページが消滅したか、一時的にアクセスできない、などの理由) 場合にエラーとなる @@ -50,7 +52,7 @@ buildアクションで、MarkdownからHTMLへの変換と、GitHub Pagesへの - 海外からのアクセス (GitHub Actions) を拒否しているページもあるため、そのようなページは個別にチェックから外す ([link_check.py](https://github.com/cpprefjp/site/blob/master/.github/workflows/script/link_check.py)の`IGNORE_LIST`に追加する) - コード修飾の誤り検出 (code qualify checkアクション) - コードブロック中のコードを修飾しているのに、その修飾対象がない場合に、エラーが発生する - - [GitHub Actionsの実行ログ](https://github.com/cpprefjp/site/actions/workflows/code_qualify_check.yml)で、どのページのどのコード修飾が不正かがわかるので、それを修正すること + - [GitHub Actionsの実行ログ](https://github.com/cpprefjp/site/actions/workflows/check.yml)で、どのページのどのコード修飾が不正かがわかるので、それを修正すること - 所属ヘッダメタ情報の誤り検出 (meta header checkアクション) - `[meta header]`または`[meta module]`指定が誤っている(ディレクトリ階層と一致しない)場合に、エラーが発生する - 導入経緯は [PR#1204](https://github.com/cpprefjp/site/issues/1204) を参照