Scripts used to maintain various pieces of CC's open source presence.

creativecommons, updated πŸ•₯ 2023-03-15 02:26:02

Creative Commons (CC) Open Source Scripts

These are scripts used to maintain various pieces of CC's open source community infrastructure.

Status

  • Add Community PRs to Project
  • Sync Community Teams with GitHub
  • Manage Issues in Projects
  • Normalize Repos
  • Push data to CC Open Source

Code of Conduct

CODE_OF_CONDUCT.md:

The Creative Commons team is committed to fostering a welcoming community. This project and all other Creative Commons open source projects are governed by our Code of Conduct. Please report unacceptable behavior to [email protected] per our reporting guidelines.

Contributing

See CONTRIBUTING.md.

Workflows

The following workflows are ordered by schedule frequency and start time.

Add Community PRs to Project

| Workflow | | | | -- | --: | --- | | | Schedule: | Hourly at 5 minutes past the hour (**:05) | | | YAML: | add_community_pr.yml | | Action | | | | | | subhamX/github-project-bot | | Env | | | | | Required: | ADMIN_GITHUB_TOKEN |

This workflow adds community PRs in the creativecommons/vocabulary repository to Vocabulary Planning project.

Sync Community Teams with GitHub

| Workflow | | | | -- | --: | --- | | | Schedule: | Hourly at 30 minutes past the hour (**:30) | | | YAML: | sync_community_teams.yml | | Script | | | | | File: | sync_community_teams.py | | | Common Modules: | ccos/ | | | Specific Modules: | ccos/norm/ | | Env | | | | | Required: | ADMIN_GITHUB_TOKEN |

This creates GitHub teams for the Community teams and updates their membership based on the community_team_members.json Lektor databag. - The databag is used to: - create the Community Team Members β€” Creative Commons Open Source page - configure GitHub team memberships and repository permissions - The databag is kept up-to-date by Push data to CC Open Source, below

Manage Issues in Projects

| Workflow | | | | -- | --: | --- | | | Schedule: | Hourly at 45 minutes past the hour (**:45) | | | YAML: | manage_issues.yml | | Action | | | | | | dhruvkb/issue-projector | | Script | | | | | File: | move_closed_issues.py | | | Common Modules: | ccos/ | | Env | | | | | Required: | ADMIN_GITHUB_TOKEN |

This manages issues within the Active Sprint and Backlog projects: - Action: Track new issues in Backlog: Pending Review - Action: Track PRs in Active Sprint: Code Review - Script: Move closed issues from Backlog to Active Sprint: Done

Normalize Repos

| Workflow | | | | -- | --: | --- | | | Schedule: | Hourly at 45 minutes past the hour (**:45) | | | YAML: | normalize_repos.yml | | Script | | | | | File: | normalize_repos.py | | | Common Modules: | ccos/ | | | Specific Modules: | ccos/norm/ | | Action | | | | | | gautamkrishnar/keepalive-workflow | | Env | | | | | Required: | ADMIN_GITHUB_TOKEN |

This ensures that all active repositories in the creativecommons GitHub organization are consistent in the following ways: - They have all the labels defined in labels.yml present. - They have standard branch protections set up (with some exceptions).

This will only update color and description of existing labels or create new labels. It will never delete labels.

Push data to CC Open Source

| Workflow | | | | -- | --: | --- | | | Schedule: | Daily at midnight:15 (00:15) | | | YAML: | push_data_to_ccos.yml | | Script | | | | | File: | push_data_to_ccos.py | | | Common Modules: | ccos/ | | | Specific Modules: | ccos/data/ | | Env | | | | | Required: | ADMIN_ASANA_TOKEN | | | Required: | ADMIN_GITHUB_TOKEN |

This retreives data from Asana, formats it as a lektor databag, and pushes it to CC Open Source website source repository: - Data Source: Community Team Tracking - Asana (limited access) - Data Destination: - creativecommons/creativecommons.github.io-source - databags/community_team_members.json - databags/repos.json

The destination data is used by the following pages: - Community Team Members β€” Creative Commons Open Source - Open Source Projects β€” Creative Commons Open Source

Environment Variables

  • ADMIN_ASANA_TOKEN: Asana token with access to the Creative Commons Asana organization
  • ADMIN_GITHUB_TOKEN: GitHub token with admin permissions to the creativecommons GitHub organization

:robot: Automation Authorship

Scripts that commit code or automatically reply to pull requests and issues need to be associated with a GitHub user account. Creative Commons maintains a cc-open-source-bot user for this purpose. This is useful for a few reasons:

  • It's ethically important that our community members know when they are talking to a bot instead of a human.
  • It makes it easy to audit our automations in the future, because all commits and messages will be associated with the single @cc-open-source-bot user account via the GitHub search, api, etc.
  • We won't need to update automations when there are changes to staff or volunteers.

Using this bot clearly communicates when a commit, comment, or action was performed by an automation. For example, here is some configuration for a workflow using the Add & Commit GitHub Action:

```yml

...other settings here

Python Dependencies

License

Issues

Automate skill label generation

opened on 2020-09-25 05:36:04 by dhruvkb

Problem

Skill labels need to be manually set up in skills.json. This - increases manual work on the part of repo maintainers to ensure that the skills listed in a different repo (this one) are up to date - causes redundancy of information that is already present in cc-metadata.yml under the technologies key in each repo

Description

The technologies key could be expanded to a more verbose structure to describe languages, libraries and frameworks and then used to eliminate the need for skills.json entirely. This presents benefits such as - richer information about the technological make-up of our projects - automated sync of labels with technologies

Alternatives

The improvements to .cc-metadata.yml can be a good-to-have part of the feature if there isn't a consensus to proceed with that. But the automation of skill labels is still beneficial. Also it does not have to be binary, a combination of .cc-metadata.yml and skills.json would also be a fine solution.

Implementation

  • [ ] I would be interested in implementing this feature.
Creative Commons
GitHub Repository