Giter VIP home page Giter VIP logo

traffic-to-badge's Introduction

โšก๏ธ Traffic to Badge GitHub Action

sync2gitee(list) traffic2badge Github last commit Github latest release Github license

GitHub views GitHub views per week GitHub clones GitHub clones per week

GitHub views GitHub views per week GitHub clones GitHub clones per week

English | ็ฎ€ไฝ“ไธญๆ–‡

The GitHub action that using repositories Insights/traffic data to generate badges that include views and clones.

Note: The badge counts the all traffic data which backed up in traffic_branch, and only the latest 2 weeks data is official traffic data among them. In which the other data generated with older schedule action or the personal given. The count/week badge generates by the official traffic data of a week before action done.

๐Ÿš€ Action configuration

inputs:
  my_token:
    description: >
      Set up a personal access token to obtain the secret repository traffic data.
    required: true
  static_list:
    description: >
      Set up a list of repositories to get.
      Only when github.repository with setting into first item,
      it can be correct to be current repository name.
    required: false
    default: ${{ github.repository }}
  traffic_branch:
    description: >
      If empty traffic data will be backed up to the branch named traffic.
    required: false
    default: traffic
  views_color:
    description: >
      Set a hex or named color value for the views badge background.
    required: false
    default: brightgreen
  clones_color:
    description: >
      Set a hex or named color value for the clones badge background.
    required: false
    default: brightgreen
  views_week_color:
    description: >
      Set a hex or named color value for the views per week badge background.
    required: false
    default: brightgreen
  clones_week_color:
    description: >
      Set a hex or named color value for the clones per week badge background.
    required: false
    default: brightgreen
  total_views_color:
    description: >
      Set a hex or named color value for the total views badge background.
    required: false
    default: brightgreen
  total_clones_color:
    description: >
      Set a hex or named color value for the total clones badge background.
    required: false
    default: brightgreen
  total_views_week_color:
    description: >
      Set a hex or named color value for the total views per week badge background.
    required: false
    default: brightgreen
  total_clones_week_color:
    description: >
      Set a hex or named color value for the total clones per week badge background.
    required: false
    default: brightgreen
  logo:
    description: >
      Insert a named logo or simple-icon to the left of the label.
    required: false
    default: github
  year:
    description: >
      Set a year number for license year beginning.
      If empty, it will no beginning year.
    required: false

outputs:
  traffic_branch:
    description: >
      Origin traffic data branch name
  traffic_path:
    description: >
      Path to generate traffic data

๐Ÿ“ Example usage

If you want to deploy for your repository, the deployment step used peaceiris/actions-gh-pages need to be added. Add the follow code for your workflow.

name: traffic2badge
on:
  push:
    branches:
      - main
  schedule:
    - cron: '1 0 * * *' #UTC

jobs:
  run:
    name: Make GitHub Traffic to Badge
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/[email protected]

      - name: Get Commit Message
        id: message
        uses: actions/[email protected]
        env:
          FULL_COMMIT_MESSAGE: '${{ github.event.head_commit.message }}'
        with:
          result-encoding: string
          script: |
            var message = `${process.env.FULL_COMMIT_MESSAGE}`;
            core.info(message);
            if (message != '') return message;
            var time = new Date(Date.now()).toISOString();
            core.info(time);
            return `Get traffic data at ${time}`;

      - name: Set Traffic
        id: traffic
        uses: yi-Xu-0100/[email protected]
        with:
          my_token: ${{ secrets.TRAFFIC_TOKEN }}
          #(default) static_list: ${{ github.repository }}
          #(default) traffic_branch: traffic
          #(default) views_color: brightgreen
          #(default) clones_color: brightgreen
          #(default) views_week_color: brightgreen
          #(default) clones_week_color: brightgreen
          #(default) total_views_color: brightgreen
          #(default) total_clones_color: brightgreen
          #(default) total_views_week_color: brightgreen
          #(default) total_clones_week_color: brightgreen
          #(default) logo: github
          year: 2021

      - name: Deploy
        uses: peaceiris/[email protected]
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_branch: ${{ steps.traffic.outputs.traffic_branch }}
          publish_dir: ${{ steps.traffic.outputs.traffic_path }}
          user_name: 'github-actions[bot]'
          user_email: 'github-actions[bot]@users.noreply.github.com'
          full_commit_message: ${{ steps.message.outputs.result }}

      - name: Show Traffic Data
        run: |
          echo ${{ steps.traffic.outputs.traffic_branch }}
          echo ${{ steps.traffic.outputs.traffic_path }}
          cd ${{ steps.traffic.outputs.traffic_path }}
          ls -a

Explanation:

  1. The actions/github-script generates message for commit.
  2. The peaceiris/actions-gh-pages publish traffic data to traffic_branch. The options follow this guide.
  3. The TRAFFIC_TOKEN needs to be generated, the guild in Generate my_token.
  4. The GITHUB_TOKEN does not need to be generated๏ผŒonly reference it in your workflow file๏ผŒand the document in Using the GITHUB_TOKEN in a workflow.

More usage example:

๐Ÿ“ Use dependabot to keep action up-to-date

This file is build in ./github/dependabot.yml to keep action up-to-date.

version: 2
updates:
  # Maintain dependencies for GitHub Actions
  - package-ecosystem: 'github-actions'
    directory: '/'
    schedule:
      interval: 'daily'

๐Ÿ™ˆ Generate my_token

This part is obtained from sangonzal/repository-traffic-action.

You'll first need to create a personal access token (PAT) which make the action having the access to the GitHub API.

You can generate a PAT by going to Settings(GitHub) -> Developer Settings -> Personal Access Tokens -> Generate new token, and will need to grant repo permission. For more information, see the GitHub documentation.

After you generated the PAT, go to Settings(repository) -> Secrets -> New secret, name the secret TRAFFIC_TOKEN and copy the PAT into the box.

๐Ÿ”Š CHANGELOG

๐Ÿ“„ LICENSE

๐ŸŽ‰ Thanks

traffic-to-badge's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar yi-xu-0100 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

traffic-to-badge's Issues

Add note for traffic data

The GitHub only provides two weeks traffic data, but the action combine traffic with traffic_branch that backed up before.

It also means the traffic data can be modified by yourself, and only two weeks traffic data which got from API every time can be guaranteed to be official data.

The two weeks traffic data also can be seen from insight/traffic with repository.


I will point it out with next release.

Originally posted by @yi-Xu-0100 in #29 (comment)

Feature request: Include total number of downloads for all releases of a repository

Hi @yi-Xu-0100,

it would be great if traffic-to-badge would not only store data about views and clones, but also data about the total number of release downloads for a specific repository.

There are badges for it already, for example https://img.shields.io/github/downloads/grubermarkus/set-outlooksignatures/total, but the numbers only cover the last 30 releases due to a GitHub restriction.

Your traffic-to-badge code could help overcome this restriction.

Thanks in advance!

GruberMarkus

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.