creativecommons / ccos-scripts

Scripts used to maintain various pieces of CC's open source presence.
MIT License
14 stars 19 forks source link

Creative Commons (CC) Open Source Scripts

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

Status

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 conduct@creativecommons.org per our reporting guidelines.

Contributing

See CONTRIBUTING.md.

Workflows

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

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.

Manage new issues and pull requests in projects

Workflow
Schedule: Hourly at 45 minutes past the hour (**:45)
YAML: manage_issues.yml
Script
File: manage_new_issues_and_pull_requests.py
Common Modules: ccos/
Env
Required: ADMIN_GITHUB_TOKEN

This manages new issues and pull requests to ensure they are properly tracked in a GitHub project:

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:

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:

The destination data is used by the following pages:

Environment Variables

: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:

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:

# ...other settings here
- name: Commit changes
  uses: EndBug/add-and-commit@v4
  with:
    author_name: cc-open-source-bot
    author_email: opensource@creativecommons.org
    message: "Deploy site"
    add: "./example-directory"

Development

Local development and testing is facilitated by helper scripts:

Python Dependencies

GitHub GraphQL API

License

GitHub GraphQL API schema

The GitHub GraphQL API public schema (ccos/schema.docs.graphql) was downloaded from Public schema - GitHub Docs and is not within scope of the Expat/MIT license of this project.