* Rename `data` folder with schema * Start refactoring data models * Work on entry models * Keep working on entries * Keep working on data models * Push old data files * Keep working on data models * First draft of schema.cv * Keep working on schema * Keep working on schema * Improve schema.models * Keep working on rendercv.schema * Work on schema.design * Keep working on rendercv.schema * Complete variant_class_generator * Keep working rendercv.schema * Keep working on rendercv.schema * Final touches to rendercv.schema * Improve json schema descriptions in rendercv.schema * Start working on rendercv.schema tests * Keep implementing rendercv.schema tests * Add more tests for rendercv.schema * Improve rendercv.schema * Improve docstrings and comments in rendercv.schema * Implement better pydantic error handling in `rendercv.schema` * Improve variant class system * Fix rendercv.schema tests * Start working on rendercv.templater * Update template names * Switching to new rendercv typst template soon * Work on new templater * Rename renderer with renderer_old * Don't use utils in rendercv.schema * Complete connections * Update renderer folder structure * Work on new renderer * Work on new renderer * Date processing on new renderer * Improve date processing, support multiple emails, phones, and websites * Improve markdown to Typst * Complete entry template processing * Time span computation in new renderer * Better entry templates * Setup new templates * Improve rendercv.schema * Start adding tests for rendercv.renderer * New markdown parser! * Improve markdown to typst conversion * Finalize markdown parser * Add new test files for rendercv.renderer * Fix cv and connections * Add connections test * Improve connection tests * Improve entry templates * Add model processor tests * Improve templater * Rename old folders * Improve schema * Add file generation logic to renderer * Fix naming issues * Fix schema tests * Add path type tests * Add font family and typst dimension type tests * Rename old tests * Fix design tests * Start integration testing of renderer * Improve entry tempates * Handle nested highlights properly * Finalize Typst preamble template * Start working on new CLI * Remove old test files * Implement override dictionary in new schema * Start working on new CLI * Better prints on render command * New structure * New render printer * Add all the commands to new CLI * Work on new command in new cli * Improve new command * Add error handler to new cli * Work on create theme command * Complete create theme command * Remove old source files * Improve exceptions * Create new docs * Add writing tests guide * Fix cli printer and write tests * Test copy templates * Add app tests * Bring back accidentally removed files * Imporve cli and tests * Fix path issues * Improve * Improve * Add reference file comparison tests * Fix path resolver * Start working on test_pdf_png * Implement comparison of multiple files (png) * Start testing typst * Fix templating issues * Fix header and entry templates issues * Implement short second rows * Fix date issues * Fix nested bullets and add summary * Update testdata * Implement footer * Update testdata * Reimagined design and locale schema, first iteration * Reimagined design and locale second iteration * Update design and locale schemas * Adapt templater to the new design and locale * Fix tests * Update lib.typ and testdata for the new locale and design * Implement proper tests with all combinations of entries * Remove some docstrings * fix connections logic * Improve * Start working on examples * Update testdata * Fix long second row issue * fix templating issues * Fix lib.typ issues * Update testdata * Fix clean_trailing_parts * Update test cv * update test cv * Update theme defaults * update schema and fix moderncv * Fix moderncv issues * Update testdata * Update testdata and examples * Fix issues about photo * Fix typst photo path issues * improve entry templates from yaml * add new locale * Rename writing tests doc * Update writing tests * Improve tests * Add more cli tests * Increase test coverage * Rename variant pydantic model generator * Improve tests * Update testdata and improve tests * Format, fix pre-commit errors * Fix scripts and update entry figures * Improve tests * Write docstrings of schema * Write schema docstrings * Setup api reference * Start working on new docs * Work on docs * Improve progress panel of render command * Finalize new docs index * Complete CLI docs * Work on YAML input structure page * Finalize user guide * Start working on developer guide * Improve api reference * Improve developer guide * Improve developer guide * Improve developer gide * Improve developer guide * Improve developer guide * Update developer guide * Improve developer guide * Improve developer guide * Improve developer guide * Developer guide first draft * update developer guide * Update examples * Update testdata * Handle wrong installation (rendercv instead of rendercv[full]) * Remove unnecessary files * Write set up vs code page * Update README.md * Change docs description * Compress design options gif * minor updates * Polish all the json schema descriptions * Update testdata and examples * Remove some emdashed from docs * Add whatsapp support * Add TestEscapeTypstCharacters to tests * Implement custom connections * Add page break before sections feature * Revert page break before sections feature * Rebase to main * Fix social network tests, update schema
4.7 KiB
toc_depth
| toc_depth |
|---|
| 3 |
GitHub Actions
The Problem
Every software project has repetitive tasks that must run consistently:
- On every update: Run tests, redeploy documentation
- On every release: Run tests, update
schema.jsonand examples, build executables for 4 platforms, build package, upload to PyPI, push Docker image
You could do these manually. But manual means:
- Forgetting steps ("Did I update
schema.json? Did I build the Windows executable?") - Wasted time ("Why am I doing the same 15 steps every release?")
What if you could write down these tasks once, and have them run automatically every time?
That's what CI/CD (Continuous Integration/Continuous Deployment) is. And GitHub Actions is GitHub's system for it.
What are GitHub Actions?
GitHub actions are automation scripts that run on GitHub's servers when certain events happen.
You define them in .github/workflows/*.yaml files. Each file describes:
- When to run: push to main? Pull request? New release?
- What to do: Run tests? Build docs? Publish package?
- Where to run: Linux? Windows? macOS? Multiple versions?
GitHub reads these files and executes them automatically when the triggering events occur.
Why GitHub's servers? Because you don't want to worry about it. Push your code, turn off your computer, you're done. GitHub handles the rest (running tests, deploying docs, building packages) without you having to keep your machine on or manually run anything.
RenderCV's Workflows
RenderCV has 5 workflows. Each handles a specific automation task.
How workflows start: Every workflow begins the same way: clone the repository, install uv, install just, then run some just commands. This recreates the same environment you'd have locally (see Setup).
1. test.yaml: Run Tests
When it runs:
- Every push to
mainbranch - Every pull request
- Manually (via GitHub UI)
- When called by other workflows
What it does:
- Runs
just test-coverageacross 9 different environments (3 operating systems × 3 Python versions: 3.12, 3.13, 3.14) - Combines all coverage reports and uploads them to show the coverage report
2. deploy-docs.yaml: Deploy Documentation
When it runs:
- Every push to
mainbranch - Manually (via GitHub UI)
What it does:
- Builds the documentation website using
just build-docs - Uploads it to GitHub Pages
- Documentation is now live at https://docs.rendercv.com
3. update-files.yaml: Update Generated Files
When it runs:
- Manually (via GitHub UI)
- When called by the release workflow
What it does:
- Regenerates files derived from code:
schema.jsonusingjust update-schema- Example YAML files and PDFs in
examples/folder usingjust update-examples - Entry figures using
just update-entry-figures
- Commits and pushes these changes to the repository
4. create-executables.yaml: Create Executables
When it runs:
- Manually (via GitHub UI)
- When called by the release workflow
What it does:
- Builds standalone executables using
just create-executablefor 4 platforms:- Linux (x86_64 and ARM64)
- macOS (ARM64)
- Windows (x86_64)
- Uploads executables as artifacts
These are single-file executables that users can download and run without installing Python.
5. release.yaml: Publish a Release
When it runs:
- When a new GitHub release is published
What it does:
This is the complete release pipeline. It orchestrates everything:
- Run tests: Calls
test.yamlto ensure everything works - Update files: Calls
update-files.yamlto regenerate schema/examples - Build package: Installs
uv, builds Python wheel and source distribution usinguv build - Create executables: Calls
create-executables.yamlfor all platforms - Create GitHub release: Downloads and uploads executables and wheel to the release
- Publish to PyPI: Downloads and uploads package so users can
pip install rendercv - Publish Docker image: Builds and pushes Docker image to GitHub Container Registry
Learn More
- GitHub Actions Documentation: Official docs
.github/workflows/: RenderCV's workflow files