# DevOps & CI/CD Automation

> Selected work demonstrating this service.

- [Automated GIS SaaS application deployment, data processing, and reporting system using GitHub Actions CI/CD, Python, Bash, and SQL.](https://data.engineer.company/portfolio/automated-gis-saas-application-deployment-data-processing-and-16/)
- [Automated delivery of 20 GIS data pipelines and app data ETL processes, streamlining infrastructure automation and reporting.](https://data.engineer.company/portfolio/automated-delivery-of-20-gis-data-pipelines-and-17/)
- [Automated 100 critical data backups using Barman, Google Cloud, Bash, and Python, ensuring data integrity across databases.](https://data.engineer.company/portfolio/automated-100-critical-data-backups-using-barman-google-18/)
- [Streamlined data analysis and software development processes, saving 4,000 hours by introducing GitHub, GitLab, Bash, and Python CI/CD practices.](https://data.engineer.company/portfolio/streamlined-data-analysis-and-software-development-processes-saving-43/)
- [Automated data processing tasks using Shell scripting, PL/pgSQL, Python, and Transact‑SQL, increasing productivity and efficiency.](https://data.engineer.company/portfolio/automated-data-processing-tasks-using-shell-scripting-pl-45/)
- [Kept the schema honest across 1,022 migrations with a CI gate that builds the database both ways — a fresh install, and an install plus every migration — and fails when the two disagree.](https://data.engineer.company/portfolio/kept-the-schema-honest-across-1022-migrations-99/)
- [Wrote tests for the checkers themselves after establishing that a checker fed only clean input will one day report clean because it read nothing — planting a misspelling to confirm the spell‑check finds it, and taking an id range from the database rather than from a number in the test.](https://data.engineer.company/portfolio/wrote-tests-for-the-checkers-themselves-149/)
- [Audited 644 Rust crates for licence compatibility on every build, and proved the check fires by rewriting one crate's licence and by moving the pinned core revision without regenerating.](https://data.engineer.company/portfolio/audited-644-rust-crates-for-licence-compatibility-163/)

<https://data.engineer.company/services/devops-cicd/>
