Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
name: Feature Request
about: Suggest an idea for this project
title: 'Implement Automated Release Process'
labels: 'enhancement, ci-cd'
assignees: ''
---

## Description
Implement an automated release process using GitHub Actions to streamline the package release workflow. This will ensure consistent and reliable releases while reducing manual intervention.

## Current Behavior
- Manual version bumping
- Manual changelog updates
- Manual PyPI publishing
- No automated release validation

## Proposed Solution
Implement a GitHub Actions workflow that will:

1. **Version Management**
- Automatically detect version changes in pyproject.toml
- Support semantic versioning (major, minor, patch)
- Create version tags automatically

2. **Changelog Generation**
- Automatically generate CHANGELOG.md entries from commit messages
- Categorize changes (features, fixes, breaking changes)
- Link to relevant PRs and issues

3. **Release Process**
- Create GitHub releases automatically
- Build and publish to PyPI
- Generate release notes
- Validate package installation

4. **Quality Checks**
- Run tests before release
- Check code quality
- Verify documentation
- Validate package metadata

## Implementation Steps
1. Create GitHub Actions workflow file
2. Set up version detection and bumping
3. Implement changelog generation
4. Configure PyPI publishing
5. Add release validation steps
6. Document the release process

## Required Changes
- Create `.github/workflows/release.yml`
- Update `pyproject.toml` for version management
- Add release documentation
- Configure PyPI secrets in repository

## Acceptance Criteria
- [ ] Automated version bumping works correctly
- [ ] Changelog is generated automatically
- [ ] Releases are created on GitHub
- [ ] Package is published to PyPI
- [ ] All quality checks pass
- [ ] Documentation is updated
- [ ] Process is documented for contributors

## Additional Context
This automation will help maintain consistent releases and reduce the chance of human error in the release process.

## Dependencies
- GitHub Actions
- PyPI account and token
- Poetry for package management
66 changes: 66 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Release

on:
push:
tags:
- 'v*'

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'

- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: latest
virtualenvs-create: true
virtualenvs-in-project: true

- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v3
with:
path: .venv
key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}

- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction --no-root

- name: Run tests
run: |
poetry run pytest tests/

- name: Build package
run: poetry build

- name: Create Release
id: create_release
uses: softprops/action-gh-release@v1
with:
generate_release_notes: true
files: |
dist/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Publish to PyPI
run: |
poetry publish --no-interaction
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_API_TOKEN }}

- name: Verify Installation
run: |
VERSION=${GITHUB_REF#refs/tags/v}
pip install --no-cache-dir igel==$VERSION
python -c "import igel; print(igel.__version__)"
Loading