https://github.com/dlrsp/workflows
⚙️ Central repository for all workflows used in my projects
https://github.com/dlrsp/workflows
Last synced: 3 months ago
JSON representation
⚙️ Central repository for all workflows used in my projects
- Host: GitHub
- URL: https://github.com/dlrsp/workflows
- Owner: DLRSP
- License: mit
- Created: 2023-07-30T15:04:52.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T08:04:04.000Z (over 1 year ago)
- Last Synced: 2024-10-29T09:22:05.994Z (over 1 year ago)
- Size: 1020 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# Workflows
Inspired by the more complete repo [workflows](https://github.com/kdeldycke/workflows) owned by [Kevin Deldycke](https://github.com/kdeldycke)
Maintaining project takes time. This repository contains workflows to automate most of the boring tasks.
These workflows are mostly used for ~~Poetry-based~~ Python CLI and their documentation, but not only. They're all [reuseable GitHub actions workflows](https://docs.github.com/en/actions/learn-github-actions/reusing-workflows).
Reasons for a centralized workflow repository:
- reuseability of course: no need to update dozens of repository where 95% of workflows are the same
- centralize all dependencies pertaining to automation: think of the point-release of an action that triggers dependabot upgrade to all your repositories dependeing on it
## Release management
**TODO**: To-Be-Review-And-Updated
It turns out [Release Engineering is a full-time job, and full of edge-cases](https://blog.axo.dev/2023/02/cargo-dist).
Rust has [`cargo-dist`](https://github.com/axodotdev/cargo-dist). Go has... ? But there is no equivalent for Python.
So I made up a [`release.yaml` workflow](https://github.com/kdeldycke/workflows/blob/main/.github/workflows/release.yaml), which:
1. Extracts project metadata from `pyproject.toml`
1. Generates a build matrix of all commits / os / arch / CLI entry points
1. Build Python wheel with Twine
1. Compile binaries of all CLI with Nuitka
1. Tag the release commit in Git
1. Publish new version to PyPi
1. Publish a GitHub release
1. Attach and rename build artifacts to it
## Changelog
A [detailed changelog](changelog.md) is available.
## Used in
Check these projects to get real-life examples of usage and inspiration:
-  [django-errors](https://github.com/DLRSP/django-errors#readme) - Django application for handling server errors.
-  [django-sp](https://github.com/DLRSP/django-sp#readme) - Django application for social authentication and other security integrations.
-  [django-iubenda](https://github.com/DLRSP/django-iubenda#readme) - Django application for privacy and cookies policy managed by Iubenda.
-  [django-requests-api](https://github.com/DLRSP/django-requests-api#readme) - Django application to provide simple and shared requests client.
-  [django-custom-storage](https://github.com/DLRSP/django-custom-storage#readme) - Django application provide custom storage uses S3 and Compressor
-  [django-hashtag](https://github.com/DLRSP/django-hashtag#readme)
-  [django-model-mixin](https://github.com/DLRSP/django-model-mixin#readme) - Django application provide simple model's mixins to add common reusable attributes.
-  [django-lang](https://github.com/DLRSP/django-lang#readme) - Django application to provide useful utils and reusable parts of code for multi-languages sites.
-  [django-static-base](https://github.com/DLRSP/django-static-base#readme) - Django application to serve up-to-date common static files (JQuery, Bootstrap, Plugins, ...) as "base" static directory
-  [django-sites-extra](https://github.com/DLRSP/django-sites-extra#readme) - Django application to extend the standard "sites" framework with extra utils.
-  [django-filer-optimizer](https://github.com/DLRSP/django-filer-optimizer#readme) - Django application to extend the "django-filer" application with extra utils like.
-  [requirements](https://github.com/DLRSP/requirements#readme)
-  [django-service](https://github.com/DLRSP/django-service#readme)
Feel free to send a PR to add your project in this list if you are relying on these scripts.
## Release process
**TODO**: To-Be-Review-And-Updated
All steps of the release process and version management are automated in the
[`changelog.yaml`](https://github.com/kdeldycke/workflows/blob/main/.github/workflows/changelog.yaml)
and
[`release.yaml`](https://github.com/kdeldycke/workflows/blob/main/.github/workflows/release.yaml)
workflows.
All there's left to do is to:
- [check the open draft `prepare-release` PR](https://github.com/DLRSP/workflows/pulls?q=is%3Apr+is%3Aopen+head%3Aprepare-release)
and its changes,
- click the `Ready for review` button,
- click the `Rebase and merge` button,
- let the workflows tag the release and set back the `main` branch into a
development state.