GLOBAL_DEFINED_WORDS: 同期に関する操作の2項関係たちを追加 #61
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
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.base.repo.owner.login; | |
const repo = context.payload.pull_request.base.repo.name; | |
const pull = context.payload.number; | |
return `https://${owner}.github.io/${repo}/gen/pull/${pull}`; | |
})(); | |
const repo_full = context.payload.pull_request.base.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: | | |
set -ex | |
git remote add base '${{ github.event.pull_request.base.repo.clone_url }}' | |
git fetch base '${{ github.event.pull_request.base.ref }}' | |
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 }} |