Files
metrics/action.yml
2022-01-16 04:00:11 +00:00

1457 lines
37 KiB
YAML
Generated
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ====================================================================================
# Inputs and configuration
inputs:
# ====================================================================================
# 🗃️ Base content
# Base content
base:
description: Base content
default: header, activity, community, repositories, metadata
repositories:
description: Repositories to fetch
default: 100
repositories_batch:
description: Repositories to fetch at a time
default: 100
repositories_forks:
description: Include forks
default: no
repositories_affiliations:
description: Repositories affiliations
default: owner
repositories_skipped:
description: Default skipped repositories
default: ""
users_ignored:
description: Default ignored users
default: github-actions[bot], dependabot[bot], dependabot-preview[bot]
commits_authoring:
description: Name, username, email addresses that has been used for authoring commits
default: .user.login
# ====================================================================================
# 🧱 Core
# User account personal token
# No additional scopes are needed unless you want to include private repositories metrics
# Some plugins may also require additional scopes
# ────────────────────────────────────────────────────────────────
# If you're only using plugins which don't really require a GitHub token, you may pass "NOT_NEEDED" as value
token:
description: GitHub Personal Token
required: true
# GitHub username
# Defaults to "token" owner
user:
description: GitHub username
default: ""
# GitHub repository
# Compute metrics for a repository instead ("user" being the repository owner)
# Check https://github.com/lowlighter/metrics/blob/master/source/templates/repository/README.md for more informations
repo:
description: GitHub repository
default: ""
# Set to "${{ github.token }}" or "${{ secrets.GITHUB_TOKEN }}"
# GITHUB_TOKEN is a special auto-generated token restricted to current repository, which is used to push files in it
committer_token:
description: GitHub Token used to commit metrics
default: ${{ github.token }}
# Branch used to commit rendered metrics
committer_branch:
description: Branch used to commit rendered metrics
default: ""
# Commit message
# Use "${filename}" to display filename
committer_message:
description: Commit message
default: Update ${filename} - [Skip GitHub Action]
# Instead of saving metrics to a repository, it's possible to save them to a gist to avoid "commits pollution"
# Gist must be created prior and you must pass its identifier in the following option
# Set "gist" in "output_action" to use this option
committer_gist:
description: Gist used to store metrics
default: ""
# Rendered metrics output path, relative to repository's root
# When using "*", the correct extension will automatically on "config_output" value
filename:
description: Rendered metrics output path
default: github-metrics.*
# Rendered markdown output path (when using a markdown template)
# It can be either a local path or a link (e.g. raw.githubusercontent.com)
markdown:
description: Rendered markdown output path
default: TEMPLATE.md
# Rendered markdown file cache (when using a markdown template)
markdown_cache:
description: Rendered markdown file cache
default: .cache
# Output action
output_action:
description: Output action
default: commit
# Output condition
output_condition:
description: Output condition
default: always
# Optimize SVG image to reduce its filesize
# Some templates may not support this option
optimize:
description: SVG optimization
default: css, xml
# Setup additional templates from remote repositories
setup_community_templates:
description: Additional community templates to setup
default: ""
# Template to use
# To use community template, prefix its name with "@"
template:
description: Template to use
default: classic
# Additional query parameters (JSON string)
# Some templates may require additional parameters which you can specify here
# Do not use this option to pass plugins parameters as they'll be overwritten by the other options
query:
description: Additional query parameters
default: "{}"
# Define additional CSS that will be injected in used template
# Example:
# config_extras_css |
# h2 {
# color: red;
# }
extras_css:
description: Extra CSS
default: ""
# Timezone used by metrics
# See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
config_timezone:
description: Timezone used
default: ""
# Specify in which order metrics content will be displayed
# If you omit some partials, they'll be appended at the end in default order
# See "partials/_.json" of each template for a list of supported partials
config_order:
description: Configure content order
default: ""
# Use twemojis instead of emojis
# May increase filesize but emojis will be rendered the same across all platforms
config_twemoji:
description: Use twemojis instead of emojis
default: no
# Render GitHub custom emojis (like ":octocat:", see full list at https://api.github.com/emojis)
# May increase filesize
config_gemoji:
description: Use GitHub custom emojis
default: yes
# Render display width
config_display:
description: Render display width
default: regular
# Enable SVG CSS animations
config_animations:
description: SVG CSS animations
default: yes
# Encode images links into base64 data
# Advised to be true when generating images and false when generating texts or JSON
config_base64:
description: Encode images links into base64 data
default: yes
# Configure padding for output image (percentage value)
# It can be used to add padding to generated metrics if rendering is cropped or has too much empty space
# Specify one value (for both width and height) or two values (one for width and one for height)
config_padding:
description: Image padding
default: 0, 8 + 11%
# Metrics output format
config_output:
description: Output image format
default: auto
# Number of retries in case rendering fail
retries:
description: Number of retries
default: 3
# Time to wait (in seconds) before each retry
retries_delay:
description: Time to wait (in seconds) before each retry
default: 300
# Number of retries in case output action fail
retries_output_action:
description: Number of retries (output action)
default: 5
# Time to wait (in seconds) before each retry (output action)
retries_delay_output_action:
description: Time to wait (in seconds) before each retry (output action)
default: 120
# Time to wait (in seconds) at the end of job
# Use this to avoid triggering abuse mechanics on large workflows
delay:
description: Use this to avoid triggering abuse mechanics on large workflows
default: 0
# Use a pre-built image from GitHub registry when using unreleased versions of "lowlighter/metrics"
# This option has no effect on forks (images will always be rebuilt from Dockerfile)
# See https://github.com/users/lowlighter/packages/container/package/metrics for more information
use_prebuilt_image:
description: Use pre-built image from GitHub registry
default: yes
# Throw on plugins errors
# If disabled, metrics will handle errors gracefully with a message in rendered metrics
plugins_errors_fatal:
description: Die on plugins errors
default: no
# Debug mode
# Note that this will automatically be enabled if job fails
debug:
description: Debug logs
default: no
# Ensure SVG can be correctly parsed after generation
verify:
description: Verify SVG
default: no
# Debug flags
debug_flags:
description: Debug flags
default: ""
# Dry-run mode (perform generation without output)
# Unlike "output_action" set to "none", output file won't be available in "/metrics_renders"
dryrun:
description: Enable dry-run
default: no
# Experimental features
# Note that no backward compatibility are guaranteed for these features
experimental_features:
description: Experimental features
default: ""
# Use mocked data to bypass external APIs
use_mocked_data:
description: Use mocked data instead of live APIs
default: no
# ====================================================================================
# 📅 Isometric commit calendar
plugin_isocalendar:
description: Enable isocalendar plugin
default: no
plugin_isocalendar_duration:
description: Time range
default: half-year
# ====================================================================================
# 🈷️ Most used languages
plugin_languages:
description: Enable languages plugin
default: no
plugin_languages_ignored:
description: Ignored languages
default: ""
plugin_languages_skipped:
description: Skipped repositories
default: ""
plugin_languages_limit:
description: Display limit
default: 8
plugin_languages_threshold:
description: Display threshold (percentage)
default: 0%
plugin_languages_colors:
description: Custom languages colors
default: github
plugin_languages_aliases:
description: Custom languages names
default: ""
plugin_languages_sections:
description: Displayed sections
default: most-used
plugin_languages_details:
description: Additional details
default: ""
plugin_languages_indepth:
description: Indepth mode (⚠️ read documentation first)
default: false
plugin_languages_analysis_timeout:
description: Indepth mode - Analysis timeout
default: 15
plugin_languages_categories:
description: Indepth mode - Displayed categories (most-used section)
default: markup, programming
plugin_languages_recent_categories:
description: Indepth mode - Displayed categories (recently-used section)
default: markup, programming
plugin_languages_recent_load:
description: Events to load (recently-used section)
default: 300
plugin_languages_recent_days:
description: Events maximum age (day, recently-used section)
default: 14
# ====================================================================================
# 📌 Starred topics
plugin_topics:
description: Enable topics plugin
default: no
plugin_topics_mode:
description: "Display mode:"
default: starred
plugin_topics_sort:
description: "Sorting method:"
default: stars
plugin_topics_limit:
description: Display limit
default: 15
# ====================================================================================
# 🌟 Recently starred repositories
plugin_stars:
description: Enable stars plugin
default: no
plugin_stars_limit:
description: Display limit
default: 4
# ====================================================================================
# 📜 Repository licenses
plugin_licenses:
description: Enable licenses plugin
default: no
plugin_licenses_setup:
description: Setup command
default: ""
plugin_licenses_ratio:
description: Display used licenses ratio
default: no
plugin_licenses_legal:
description: Display permissions, limitations and conditions about used licenses
default: yes
# ====================================================================================
# 💡 Coding habits
# Enable or disable plugin
plugin_habits:
description: Display coding habits metrics
default: no
# Number of events to use to computes habits
# Using more will result in more accurate metrics, but you may hit GitHub rate-limit more easily
plugin_habits_from:
description: Number of events to use
default: 200
# Filter used events to compute habits by age
plugin_habits_days:
description: Maximum event age
default: 14
# Display tidbits about your most active hours/days, indents used (spaces/tabs), etc.
# This is deduced from your recent activity
plugin_habits_facts:
description: Display coding habits collected facts based on recent activity
default: yes
# Display charts of most active time of the day and most active day of the week
# Also display languages recently used (this is not the same as plugin_languages, as the latter is an all-time stats)
plugin_habits_charts:
description: Display coding habits charts based on recent activity
default: no
# Trim unused hours on daily chart
plugin_habits_trim:
description: Trim unused hours on daily chart
default: no
# ====================================================================================
# 🏅 Repository contributors
plugin_contributors:
description: Enable contributors plugin
default: no
plugin_contributors_base:
description: Base reference (commit, tag, branch, etc.)
default: ""
plugin_contributors_head:
description: Head reference (commit, tag, branch, etc.)
default: master
plugin_contributors_ignored:
description: Ignored users
default: ""
plugin_contributors_contributions:
description: Toggle number of contributions display
default: no
plugin_contributors_sections:
description: Displayed sections
default: contributors
plugin_contributors_categories:
description: Configure contribution categories
default: |
{
"📚 Documentation": ["README.md", "docs/**"],
"💻 Code": ["source/**", "src/**"],
"#️⃣ Others": ["*"]
}
# ====================================================================================
# 🎟️ Follow-up of issues and pull requests
plugin_followup:
description: Enable followup plugin
default: no
plugin_followup_sections:
description: Displayed sections
default: repositories
plugin_followup_indepth:
description: Indepth analysis
default: no
# ====================================================================================
# 🎭 Comment reactions
plugin_reactions:
description: Enable reactions plugin
default: no
plugin_reactions_limit:
description: Display limit (issues and pull requests comments)
default: 200
plugin_reactions_limit_issues:
description: Display limit (issues and pull requests, first comment)
default: 100
plugin_reactions_limit_discussions:
description: Display limit (discussions, first comment)
default: 100
plugin_reactions_limit_discussions_comments:
description: Display limit (discussions comments)
default: 100
plugin_reactions_days:
description: Comments maximum age
default: 0
plugin_reactions_display:
description: Display mode
default: absolute
plugin_reactions_details:
description: Additional details
default: ""
plugin_reactions_ignored:
description: Ignored users
default: ""
# ====================================================================================
# 🧑‍🤝‍🧑 People plugin
# Enable or disable plugin
plugin_people:
description: Display GitHub users from various affiliations
default: no
# Number of users to display per section
plugin_people_limit:
description: Maximum number of user to display
default: 24
# Size of displayed user's avatar
plugin_people_size:
description: Size of displayed GitHub users' avatars
default: 28
# List of section to display
# Ordering will be kept
plugin_people_types:
description: Affiliations to display
default: followers, following
# When displaying "thanks" section, specified users list will be displayed
# This is useful to craft "Special thanks" badges
plugin_people_thanks:
description: GitHub users to personally thanks
default: ""
# Add specified users to GitHub sponsors ("sponsors" must be specified in "plugin_people_types")
# This is useful to list sponsors from unsupported GitHub sponsors sources
plugin_people_sponsors_custom:
description: Custom GitHub sponsors
default: ""
# Use GitHub identicons instead of users' avatar (for privacy purposes)
plugin_people_identicons:
description: Use identicons instead of avatars
default: no
# Shuffle users for varied outputs
# If "plugin_people_limit" is set, plugin will fetch up to 10 ten times limit to ensure output is different each time
plugin_people_shuffle:
description: Shuffle users
default: no
# ====================================================================================
# ✨ Stargazers over last weeks
plugin_stargazers:
description: Enable stargazers plugin
default: no
# ====================================================================================
# 🗂️ Active projects
plugin_projects:
description: Enable projects plugin
default: no
plugin_projects_limit:
description: Display limit
default: 4
plugin_projects_repositories:
description: List of repositories projects
default: ""
plugin_projects_descriptions:
description: Toggle projects descriptions display
default: no
# ====================================================================================
# ♐ Code snippet of the day
plugin_code:
description: Enable code plugin
default: no
plugin_code_lines:
description: Display limit for code snippets
default: 12
plugin_code_load:
description: Events to load
default: 100
plugin_code_visibility:
description: Events visibility
default: public
plugin_code_skipped:
description: Skipped repositories
default: ""
plugin_code_languages:
description: Restrict display to specific languages
default: ""
# ====================================================================================
# 📰 Recent activity
plugin_activity:
description: Enable activity plugin
default: no
plugin_activity_limit:
description: Display limit
default: 5
plugin_activity_load:
description: Events to load
default: 300
plugin_activity_days:
description: Events maximum age
default: 14
plugin_activity_visibility:
description: Events visibility
default: all
plugin_activity_timestamps:
description: Display events timestamps
default: no
plugin_activity_skipped:
description: Skipped repositories
default: ""
plugin_activity_ignored:
description: Ignored users
default: ""
plugin_activity_filter:
description: Events types
default: all
# ====================================================================================
# 🏆 Achievements
plugin_achievements:
description: Enable achievements plugin
default: no
plugin_achievements_threshold:
description: Display rank threshold
default: C
plugin_achievements_secrets:
description: Display secrets achievements
default: yes
plugin_achievements_display:
description: Display style
default: detailed
plugin_achievements_limit:
description: Display limit
default: 0
plugin_achievements_ignored:
description: Hide specified achievements
default: ""
plugin_achievements_only:
description: Restrict display to specified achievements
default: ""
# ====================================================================================
# 🎩 Notable contributions
plugin_notable:
description: Enable notable plugin
default: no
plugin_notable_filter:
description: Query filter
default: ""
plugin_notable_from:
description: Filter by repository owner account type
default: organization
plugin_notable_repositories:
description: Toggle repository name display
default: no
plugin_notable_indepth:
description: Indepth mode
default: no
# ====================================================================================
# 💬 Discussions
plugin_discussions:
description: Enable discussions plugin
default: no
plugin_discussions_categories:
description: Toggle discussion categories display
default: yes
plugin_discussions_categories_limit:
description: Display limit (categories)
default: 0
# ====================================================================================
# 💭 GitHub Community Support
plugin_support:
description: Enable support plugin
default: no
# ====================================================================================
# 👨‍💻 Lines of code changed
plugin_lines:
description: Enable lines plugin
default: no
plugin_lines_skipped:
description: Skipped repositories
default: ""
# ====================================================================================
# 🧮 Repositories traffic
plugin_traffic:
description: Enable traffic plugin
default: no
plugin_traffic_skipped:
description: Skipped repositories
default: ""
# ====================================================================================
# 📓 Repositories
plugin_repositories:
description: Enable repositories plugin
default: no
plugin_repositories_featured:
description: List of featured repositories
default: ""
# ====================================================================================
# 🎫 Gists
plugin_gists:
description: Enable gists plugin
default: no
# ====================================================================================
# 🙋 Introduction
# Enable or disable plugin
plugin_introduction:
description: Display account or repository introduction
default: no
# Display introduction section title
plugin_introduction_title:
description: Display introduction section title
default: yes
# ====================================================================================
# 💕 GitHub Sponsors
plugin_sponsors:
description: Enable sponsors plugin
default: no
plugin_sponsors_sections:
description: Displayed sections
default: goal, about
# ====================================================================================
# 💫 Starlists
plugin_starlists:
description: Enable starlists plugin
default: no
plugin_starlists_limit:
description: Display limit (star lists)
default: 2
plugin_starlists_limit_repositories:
description: Display limit (repositories per star list)
default: 2
plugin_starlists_shuffle_repositories:
description: Shuffle data for varied outputs
default: yes
plugin_starlists_ignored:
description: Skipped star lists (case insensitive)
default: ""
plugin_starlists_only:
description: Restrict display to specified star lists (case insensitive)
default: ""
# ====================================================================================
# 🌇 GitHub Skyline 3D calendar
plugin_skyline:
description: Enable skyline plugin
default: no
plugin_skyline_year:
description: Displayed year
default: current-year
plugin_skyline_frames:
description: Frames count
default: 60
plugin_skyline_quality:
description: Image quality
default: 0.5
plugin_skyline_compatibility:
description: Compatibility mode
default: no
# ====================================================================================
# ⏱️ Website performances
# Enable or disable plugin
plugin_pagespeed:
description: Display a website Google PageSpeed metrics
default: no
# Website to audit with PageSpeed
plugin_pagespeed_url:
description: Audited website
default: .user.website
# Display the following additional metrics from audited website:
# First Contentful Paint, Speed Index, Largest Contentful Paint, Time to Interactive, Total Blocking Time, Cumulative Layout Shift
# See https://web.dev/performance-scoring/ and https://googlechrome.github.io/lighthouse/scorecalc/ for more informations
plugin_pagespeed_detailed:
description: Detailed audit result
default: no
# Display a screenshot of audited website
# May increases significantly filesize
plugin_pagespeed_screenshot:
description: Display a screenshot of your website
default: no
# PageSpeed API token
# This is optional, but providing it will avoid hitting rate-limiter
# See https://developers.google.com/speed/docs/insights/v5/get-started for more informations
plugin_pagespeed_token:
description: PageSpeed token
default: ""
# ====================================================================================
# 🎼 Music plugin
# Enable or disable plugin
plugin_music:
description: Display your music tracks
default: no
# Name of music provider
# This is optional for "playlist" mode (it can be deduced automatically from "plugin_music_playlist" url)
# This is required in other modes
plugin_music_provider:
description: Music provider
default: ""
# Music provider token
# This may be required depending on music provider used and plugin mode
# - "apple" : not required
# - "spotify" : required for "recent" or "top" mode, format is "client_id, client_secret, refresh_token"
# - "lastfm" : required, format is "api_key"
# - "youtube" : required for "recent" mode, format is "cookie"
plugin_music_token:
description: Music provider personal token
default: ""
# Plugin mode
plugin_music_mode:
description: Plugin mode
default: ""
# Embed playlist url (i.e. url used by music player iframes)
plugin_music_playlist:
description: Embed playlist url
default: ""
# Number of music tracks to display
plugin_music_limit:
description: Maximum number of tracks to display
default: 4
# Display when track was last played
plugin_music_played_at:
description: Display when the track was played
default: no
# Time range for "top" mode
plugin_music_time_range:
description: Time period for top mode
default: short
# Option for "top" mode to select tracks or artists
plugin_music_top_type:
description: Whether to show tracks or artists in top mode
default: tracks
# Username on music provider service
plugin_music_user:
description: Music provider username
default: .user.login
# ====================================================================================
# 🗨️ StackOverflow plugin
plugin_stackoverflow:
description: Enable stackoverflow plugin
default: no
plugin_stackoverflow_user:
description: Stackoverflow user id
default: 0
plugin_stackoverflow_sections:
description: Displayed sections
default: answers-top, questions-recent
plugin_stackoverflow_limit:
description: Display limit (per section)
default: 2
plugin_stackoverflow_lines:
description: Display limit for questions and answers
default: 4
plugin_stackoverflow_lines_snippet:
description: Display limit for code snippets
default: 2
# ====================================================================================
# 🌸 Anilist watch list and reading list
plugin_anilist:
description: Enable aniList plugin
default: no
plugin_anilist_medias:
description: Display medias types
default: anime, manga
plugin_anilist_sections:
description: Displayed sections
default: favorites
plugin_anilist_limit:
description: Display limit (medias)
default: 2
plugin_anilist_limit_characters:
description: Display limit (characters)
default: 22
plugin_anilist_shuffle:
description: Shuffle data for varied outputs
default: yes
plugin_anilist_user:
description: AniList login
default: .user.login
# ====================================================================================
# 🐤 Latest tweets
plugin_tweets:
description: Enable tweets plugin
default: no
plugin_tweets_token:
description: Twitter API token
default: ""
plugin_tweets_attachments:
description: Display tweets attachments (images, video previews, etc.)
default: no
plugin_tweets_limit:
description: Display limit
default: 2
plugin_tweets_user:
description: Twitter username
default: .user.twitter
# ====================================================================================
# ✒️ Recent posts
plugin_posts:
description: Enable posts plugin
default: no
plugin_posts_source:
description: External source
default: ""
plugin_posts_descriptions:
description: Toggle posts descriptions display
default: no
plugin_posts_covers:
description: Toggle posts cover images display
default: no
plugin_posts_limit:
description: Display limit
default: 4
plugin_posts_user:
description: External source username
default: .user.login
# ====================================================================================
# 🗼 Rss feed
plugin_rss:
description: Enable rss plugin
default: no
plugin_rss_source:
description: RSS feed source
default: ""
plugin_rss_limit:
description: Display limit
default: 4
# ====================================================================================
# ⏰ WakaTime plugin
plugin_wakatime:
description: Enable wakatime plugin
default: no
plugin_wakatime_token:
description: WakaTime API token
default: ""
plugin_wakatime_days:
description: Time range
default: 7
plugin_wakatime_sections:
description: Displayed sections
default: time, projects, projects-graphs, languages, languages-graphs, editors, os
plugin_wakatime_limit:
description: Display limit (per graph)
default: 5
plugin_wakatime_url:
description: WakaTime url
default: https://wakatime.com
plugin_wakatime_user:
description: WakaTime username
default: current
# ====================================================================================
# 💹 Stock prices
plugin_stock:
description: Enable stock plugin
default: no
plugin_stock_token:
description: Yahoo Finance token
default: ""
plugin_stock_symbol:
description: Company stock symbol
default: ""
plugin_stock_duration:
description: Time range (relative to current date)
default: 1d
plugin_stock_interval:
description: Time interval between points
default: 5m
# ====================================================================================
# 💉 Nightscout
plugin_nightscout:
description: Enable nightscout plugin
default: no
plugin_nightscout_url:
description: Nightscout URL
default: https://example.herokuapp.com
plugin_nightscout_datapoints:
description: Number of datapoints shown the graph
default: 12
plugin_nightscout_lowalert:
description: Threshold for low blood sugar
default: 80
plugin_nightscout_highalert:
description: Threshold for high blood sugar
default: 180
plugin_nightscout_urgentlowalert:
description: Threshold for urgently low blood sugar
default: 50
plugin_nightscout_urgenthighalert:
description: Threshold for urgently high blood sugar
default: 250
# ====================================================================================
# 💩 PoopMap plugin
plugin_poopmap:
description: Enable poopmap plugin
default: no
plugin_poopmap_token:
description: PoopMap API token
default: ""
plugin_poopmap_days:
description: Time range
default: 7
# ====================================================================================
# 📸 Website screenshot
plugin_screenshot:
description: Enable screenshot plugin
default: no
plugin_screenshot_title:
description: Title caption
default: Screenshot
plugin_screenshot_url:
description: Website url
default: ""
plugin_screenshot_selector:
description: CSS Selector
default: body
plugin_screenshot_background:
description: Display background
default: yes
# ====================================================================================
# Action metadata
name: Metrics embed
author: lowlighter
description: An infographics generator with 30+ plugins and 200+ options to display stats about your GitHub account!
branding:
icon: user-check
color: gray-dark
# The action will parse its name to check if it's the official action or if it's a forked one
# On the official action, it'll use the docker image published on GitHub registry when using a released version, allowing faster runs
# On a forked action, it'll rebuild the docker image from Dockerfile to take into account changes you made
runs:
using: composite
steps:
- run: |
# Create environment file from inputs and GitHub variables
echo "::group::Metrics docker image setup"
echo "GitHub action: $METRICS_ACTION ($METRICS_ACTION_PATH)"
cd $METRICS_ACTION_PATH
touch .env
for INPUT in $(echo $INPUTS | jq -r 'to_entries|map("INPUT_\(.key|ascii_upcase)=\(.value|@uri)")|.[]'); do
echo $INPUT >> .env
done
env | grep -E '^(GITHUB|ACTIONS|CI|TZ)' >> .env
echo "Environment variables: loaded"
# Renders output folder
METRICS_RENDERS="/metrics_renders"
sudo mkdir -p $METRICS_RENDERS
echo "Renders output folder: $METRICS_RENDERS"
# Source repository (picked from action name)
METRICS_SOURCE=$(echo $METRICS_ACTION | sed -E 's/metrics.*?$//g' | sed -E 's/_//g')
echo "Source: $METRICS_SOURCE"
# Version (picked from package.json)
METRICS_VERSION=$(grep -Po '(?<="version": ").*(?=")' package.json)
echo "Version: $METRICS_VERSION"
# Image tag (extracted from version or from env)
METRICS_TAG=v$(echo $METRICS_VERSION | sed -r 's/^([0-9]+[.][0-9]+).*/\1/')
echo "Image tag: $METRICS_TAG"
# Image name
# Official action
if [[ $METRICS_SOURCE == "lowlighter" ]]; then
# Use registry with pre-built images
if [[ ! $METRICS_USE_PREBUILT_IMAGE =~ ^([Ff]alse|[Oo]ff|[Nn]o|0)$ ]]; then
# Is released version
set +e
METRICS_IS_RELEASED=$(expr $(expr match $METRICS_VERSION .*-beta) == 0)
set -e
echo "Is released version: $METRICS_IS_RELEASED"
if [[ "$METRICS_IS_RELEASED" -eq "0" ]]; then
METRICS_TAG="$METRICS_TAG-beta"
echo "Image tag (updated): $METRICS_TAG"
fi
METRICS_IMAGE=ghcr.io/lowlighter/metrics:$METRICS_TAG
echo "Using pre-built version $METRICS_TAG, will pull docker image from GitHub registry"
if ! docker image pull $METRICS_IMAGE; then
echo "Failed to fetch docker image from GitHub registry, will rebuild it locally"
METRICS_IMAGE=metrics:$METRICS_VERSION
fi
# Rebuild image
else
echo "Using an unreleased version ($METRICS_VERSION)"
METRICS_IMAGE=metrics:$METRICS_VERSION
fi
# Forked action
else
echo "Using a forked version"
METRICS_IMAGE=metrics:forked-$METRICS_VERSION
fi
echo "Image name: $METRICS_IMAGE"
# Build image if necessary
set +e
docker image inspect $METRICS_IMAGE
METRICS_IMAGE_NEEDS_BUILD="$?"
set -e
if [[ "$METRICS_IMAGE_NEEDS_BUILD" -gt "0" ]]; then
echo "Image $METRICS_IMAGE is not present locally, rebuilding it from Dockerfile"
docker build -t $METRICS_IMAGE .
else
echo "Image $METRICS_IMAGE is present locally"
fi
echo "::endgroup::"
# Run docker image with current environment
docker run --init --volume $GITHUB_EVENT_PATH:$GITHUB_EVENT_PATH --volume $METRICS_RENDERS:/renders --env-file .env $METRICS_IMAGE
rm .env
shell: bash
env:
METRICS_ACTION: ${{ github.action }}
METRICS_ACTION_PATH: ${{ github.action_path }}
METRICS_USE_PREBUILT_IMAGE: ${{ inputs.use_prebuilt_image }}
INPUTS: ${{ toJson(inputs) }}
TZ: ${{ inputs.config_timezone }}