Skip to content

Update en.md

Update en.md #7

name: osu-wiki continuous integration
on:
pull_request:
branches:
- master
types:
- opened
- reopened
- synchronize
- edited
jobs:
ci:
name: changed files
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 2
- name: detect changed files
run: |
INTERESTING_FILES=$(
sort -u < <(
# Changes that are not committed (staged + unstaged + untracked), but without deleted files
git status --short -v -v --no-renames --porcelain | awk '$1 != "D" { print $2 }'
# Changes committed so far (may overlap with the above)
git diff --no-renames --name-only --diff-filter=d ${{ github.sha }}^
)
)
# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
# XXX: env.INTERESTING_FILES will be a single string with newline delimiters.
DELIMITER="X${RANDOM}"
echo "INTERESTING_FILES<<${DELIMITER}" >> $GITHUB_ENV
echo "${INTERESTING_FILES}" >> $GITHUB_ENV
echo "${DELIMITER}" >> $GITHUB_ENV
- name: inspect file sizes
shell: bash
run: |
readarray -t TARGET_FILES <<< "${{ env.INTERESTING_FILES }}"
bash scripts/ci/inspect_file_sizes.sh --target "${TARGET_FILES[@]}"
- name: set up Node.js
id: setup-node
uses: actions/setup-node@v3
with:
cache: npm
node-version: 16
- name: load node_modules from cache
id: cache-node-modules
uses: actions/cache@v3
with:
path: node_modules
key: node-modules-${{ hashFiles('package.json', 'package-lock.json') }}-${{ steps.setup-node.outputs.node-version }}
- name: install remark
if: steps.cache-node-modules.outputs.cache-hit != 'true'
run: npm ci
- name: run remark on changed files
run: |
readarray -t REMARK_TARGET_FILES <<< $(
# ppy/osu-wiki#8867 -- disable style checks for non-article Markdown files, such as README.md
echo "${{ env.INTERESTING_FILES }}" | grep -e .md$ | grep -E -v '^[A-Z-]+\.md$' || true
)
bash scripts/ci/run_remark.sh --target "${REMARK_TARGET_FILES[@]}"
- name: set up Python
uses: actions/setup-python@v4
with:
cache: pip
cache-dependency-path: scripts/requirements.txt
python-version: 3.x
- name: set up Python CI dependencies
run: pip install -r scripts/requirements.txt
- name: run yamllint on .yaml and .md files
run: |
readarray -t YAMLLINT_TARGET_FILES <<< $( echo "${{ env.INTERESTING_FILES }}" | grep -e .yaml$ -e .yml$ -e .md$ || true )
osu-wiki-tools check-yaml --config .yamllint.yaml --target "${YAMLLINT_TARGET_FILES[@]}"
- name: find broken wikilinks
shell: bash
env:
PULL_REQUEST_TAG: 'SKIP_WIKILINK_CHECK'
run: |
if ${{ contains(github.event.pull_request.body, env.PULL_REQUEST_TAG) }}; then
echo "::notice::Broken wikilink check suppressed ($PULL_REQUEST_TAG tag found in the pull request)"
exit 0
fi
readarray -t WIKILINK_TARGET_FILES <<< $( echo "${{ env.INTERESTING_FILES }}" | grep -e ^wiki/ -e ^news/ | grep .md$ || true )
osu-wiki-tools check-links --target "${WIKILINK_TARGET_FILES[@]}"
- name: check if translations are marked as outdated
shell: bash
env:
PULL_REQUEST_TAG: 'SKIP_OUTDATED_CHECK'
run: |
if ${{ contains(github.event.pull_request.body, env.PULL_REQUEST_TAG) }}; then
echo "::notice::Outdated articles check suppressed ($PULL_REQUEST_TAG tag found in the pull request)"
exit 0
fi
MAX_ATTEMPTS=3
for (( i=1; i<=MAX_ATTEMPTS; i++ )); do
# get the first commit of the branch associated with the PR; GitHub's ubuntu-latest has curl/jq: https://github.com/actions/virtual-environments
API_RESPONSE=$(
curl -sS --header 'Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' \
${{ github.event.pull_request.commits_url }}?per_page=1
)
if [[ 'array' != $( echo "${API_RESPONSE}" | jq -r 'type' ) ]]; then
echo "::warning::Unexpected GitHub API response (attempt ${i}/${MAX_ATTEMPTS}): ${API_RESPONSE}"
else
FIRST_PR_COMMIT_HASH=$( echo "${API_RESPONSE}" | jq -r '.[0].sha' )
osu-wiki-tools check-outdated-articles --workflow --base-commit ${{ github.sha }} --outdated-since $FIRST_PR_COMMIT_HASH
exit $?
fi
done
echo "::warning::Failed to read the hash of the PR's first commit -- please check why that happened"
exit 1