GitHub Action
accum-board-stats
Userlog • Changelog • Dependencies • Known issues • Copyright and License
GitHub composite action to request and accumulate a forum board post replies and views statistic.
Tutorial to use with: https://github.com/andry81-devops/accum-content
All tutorials: https://github.com/andry81/index#tutorials
-
Repository to track and repository to store traffic statistic can be different, and you may directly point the statistic as commits list:
https://github.com/{{REPO_OWNER}}/{{REPO}}--gh-stats/commits/master/traffic/board/phpbb
-
Workflow is used accum-stats.sh bash script to accumulate traffic statistic
-
The script accumulates statistic both into a single file and into a set of files grouped by year and allocated per day:
traffic/board/phpbb/by_year/YYYY/YYYY-MM-DD.json
-
CONTINUE_ON_INVALID_INPUT=1
,CONTINUE_ON_EMPTY_CHANGES=1
: Treats invalid input or empty changes as not an error as by default. -
ENABLE_GENERATE_CHANGELOG_FILE=1
,CHANGELOG_FILE=".../changelog.txt"
: Generates a textual changelog file with notes about changes per commit including the changes absence in case of skipped errors. -
ENABLE_COMMIT_MESSAGE_DATE_WITH_TIME=1
: Inserts the time string in formatHH:MMZ
additionally after the date in each commit message (by default inserts only a date for shorter commit messages). -
ENABLE_COMMIT_MESSAGE_WITH_WORKFLOW_RUN_NUMBER=1
: Inserts the workflow run number after date/time prefix in each commit message (by default does not insert for shorter commit messages). -
ENABLE_GITHUB_ACTIONS_RUN_URL_PRINT_TO_CHANGELOG=1
: Prints GitHub Actions Run URL (with or without workflow run number) into the changelog file to reference the log on the GitHub from the changelog file. -
ENABLE_REPO_STATS_COMMITS_URL_PRINT_TO_CHANGELOG=1
: Prints Statistic Output Repository commit URL into the changelog file to reference the commit from being committed changelog file.Note The actual hash of the commit can not be know on the moment of the commit. So instead of the commit hash, an approximate date of the commit is used (~ +5 min ahead) in format of:
https://github.com/{{REPO_OWNER}}/{{REPO}}--gh-stats/commits?branch={{BRANCH}}&time_zone=utc&until=YYYY-MM-DD
-
ENABLE_PRINT_CURL_RESPONSE_ON_ERROR=1
: Prints curl response in case of an error (by default only the progress prints)
Warning You must replace all placeholder into respective values:
{{REPO_OWNER}}
-> repository owner{{REPO}}
-> your repository{{BRANCH}}
-> your repository branch or reference{{TOPIC_KEYWORDS}}
-> topic keywords{{TOPIC_AUTHOR}}
-> topic author
.github/workflows/accum-phpbb-board-stats.yml
:
name: phpbb board stats updating every 4 hours
on:
schedule:
- cron: "0 */4 * * *"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
accum-phpbb-board-stats:
runs-on: ubuntu-latest
steps:
- uses: {{REPO_OWNER}}/gh-action--accum-board-stats@master
with:
# CAUTION: Beware of double quotes strip in case of usage yaml `>-` operator or even a single-quotted string!
topic_query_url: https://phpbb.com/board/search.php?keywords=\"{{TOPIC_KEYWORDS}}\"&terms=all&author={{TOPIC_AUTHOR}}&fid%5B%5D=6&sc=0&sf=titleonly&sr=topics&sk=i&sd=d&st=0&ch=1&t=0&submit=Search
replies_sed_regexp: s/.*class=\"posts\"[^0-9]*([0-9.]+).*/\1/p
views_sed_regexp: s/.*class=\"views\"[^0-9]*([0-9.]+).*/\1/p
curl_flags: >-
-v
-H 'Cache-Control: no-cache'
deps_repo_owner: {{REPO_OWNER}}
deps_repo_branch: master
deps_repo_read_token: ${{ github.token }}
commit_msg_entity: my-board-1
output_repo_owner: {{REPO_OWNER}}
output_repo: {{REPO}}--phpbb-stats
output_repo_branch: master
output_repo_dir: traffic/board/phpbb
output_repo_write_token: ${{ secrets.READ_STATS_TOKEN }}
flags: >-
ENABLE_PRINT_INITIAL_ENV_INTO_STDOUT=1
env: >-
ENABLE_GENERATE_CHANGELOG_FILE=1
CHANGELOG_FILE=changelog.txt
ENABLE_PRINT_CURL_RESPONSE_ON_ERROR=1
ENABLE_COMMIT_MESSAGE_DATE_WITH_TIME=1 # insert the time string in format HH:MMZ additionally after the date in each commit message
ENABLE_COMMIT_MESSAGE_WITH_WORKFLOW_RUN_NUMBER=1 # insert the workflow run number after date/time prefix in each commit message
ENABLE_GITHUB_ACTIONS_RUN_URL_PRINT_TO_CHANGELOG=1
ENABLE_REPO_STATS_COMMITS_URL_PRINT_TO_CHANGELOG=1
# ENABLE_YAML_DIFF_PRINT_AFTER_EDIT=1
# ENABLE_YAML_DIFF_PRINT_BEFORE_PATCH=1
# ERROR_ON_EMPTY_CHANGES_WITHOUT_ERRORS=1
# CONTINUE_ON_INVALID_INPUT=1
# CONTINUE_ON_EMPTY_CHANGES=1
Note You can use
secrets.READ_STATS_TOKEN
instead ofsecrets.WRITE_STATS_TOKEN
as long as both repositories under the same repository owner.
Warning You must use different values for
deps_repo_owner
andoutput_repo_owner
if respective repositories actually under different repository owners.
Note See REUSE section for details if you have multiple repositories and want to store all GitHub workflow scripts (
.github/workflows/*.yml
) in a single repository.
https://github.com/andry81-devops/gh-known-issues#known-issues
https://github.com/andry81-devops/gh-known-issues#last-known-issues-updates
Code and documentation copyright 2021 Andrey Dibrov. Code released under MIT License