Skip to content

Commit

Permalink
feat: add auto archiving action
Browse files Browse the repository at this point in the history
  • Loading branch information
p.delpy@dkfz-heidelberg.de committed Oct 15, 2024
1 parent 3312ca8 commit 6774504
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
31 changes: 31 additions & 0 deletions .github/scripts/rename_inactive_branches.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import requests
from datetime import datetime, timedelta

# Configuration
GITHUB_TOKEN = os.getenv('GITHUB_TOKEN')
REPO = 'owner/repo' # Replace with your repository
HEADERS = {'Authorization': f'token {GITHUB_TOKEN}', 'Accept': 'application/vnd.github.v3+json'}
API_URL = f'https://api.github.com/repos/{REPO}/branches'
INACTIVE_DAYS = 365
CUTOFF_DATE = datetime.now() - timedelta(days=INACTIVE_DAYS)

# Fetch all branches
def get_branches():
response = requests.get(API_URL, headers=HEADERS)
return response.json() if response.status_code == 200 else []

# Rename inactive branches
def rename_branch(old_name, new_name):
rename_url = f'https://api.github.com/repos/{REPO}/branches/{old_name}/rename'
response = requests.post(rename_url, json={'new_name': new_name}, headers=HEADERS)
print(f"Renamed branch {old_name} to {new_name}" if response.status_code == 201 else f"Failed to rename {old_name}: {response.status_code}")

# Check if the branch is inactive
def is_inactive(commit_url):
last_commit_date = requests.get(commit_url, headers=HEADERS).json()['commit']['committer']['date']
return datetime.strptime(last_commit_date, '%Y-%m-%dT%H:%M:%SZ') < CUTOFF_DATE

# Rename inactive branches
# for branch in get_branches():
# if is_inactive(branch['commit']['url']):
# rename_branch(branch['name'], f"archived/{branch['name']}")
27 changes: 27 additions & 0 deletions .github/workflows/rename-inactive-branches.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Cleanup - Rename Inactive Branches

on:
schedule:
- cron: '0 0 * * 0' # Runs every Sunday at midnight

jobs:
cleanup-rename-branches:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v2

- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.x'

# - name: Install Libraries
# run: pip install requests

- name: Run Script to Rename Inactive Branches
run: |
python .github/scripts/rename_inactive_branches.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 comments on commit 6774504

Please sign in to comment.