# Automatisering og CI/CD

> Utvalgt arbeid fra Engineer ApS som viser Automatisering og CI/CD — resultatene som beviser det.

- [Forbedret kommunikasjonen og samarbeidet i teamet ved å innføre Slack, Mattermost, 1Password og Jira, og sparte 8 000 arbeidstimer.](https://advisory.engineer.company/nb/portfolio/improved-team-communication-and-collaboration-by-implementing-slack-34/)
- [Fornyet interne prosesser og sparte 8 000 timer ved å forbedre programvarearkitekturen, systemene og effektiviteten i planleggingen.](https://advisory.engineer.company/nb/portfolio/overhauled-internal-processes-saving-8-000-hours-by-38/)
- [Effektiviserte CI/CD‑prosessene og sparte 4 000 timer ved å innføre automatisering i pipelines for programvareutvikling.](https://advisory.engineer.company/nb/portfolio/streamlined-ci-cd-processes-saving-4-000-hours-42/)
- [Utviklet et rapporteringssystem for dataanalyse og økte kvartalsinntektene fra programvaren med 400 % gjennom Python‑baserte PDF‑rapporter.](https://advisory.engineer.company/nb/portfolio/developed-a-data-analytics-reporting-system-increasing-quarterly-44/)
- [Økte effektiviteten i prosjektene og sparte 150 timer i måneden fordelt på 30 prosjekter ved å optimalisere arbeidsflyter og ressursstyring.](https://advisory.engineer.company/nb/portfolio/enhanced-project-efficiency-saving-150-hours-per-month-46/)
- [Skrev 578 go‑task‑automatiseringsmål som dekker native-, Docker- og HTTPS‑utviklingsmoduser, linting, testing, database og produksjonssetting.](https://advisory.engineer.company/nb/portfolio/authored-578-go-task-automation-targets-70/)
- [Satte en kvalitetsstandard med null advarsler for seks språk — Go, TypeScript, SQL, Python, Shell og Markdown — håndhevet av pre‑commit‑hooks.](https://advisory.engineer.company/nb/portfolio/set-a-zero-warnings-quality-bar-across-six-79/)
- [Designet et system for tidsstyring og rapportering som var i produksjon i årevis uten vesentlige endringer.](https://advisory.engineer.company/nb/portfolio/designed-a-time-management-and-reporting-system-that-88/)
- [Automatiserte samarbeid i teamet, passordhåndtering, oppgave- og tidsstyring, og bygde et halvautomatisk system for å vise frem prosjekter, noe som økte teamets produktivitet.](https://advisory.engineer.company/nb/portfolio/automated-team-collaboration-password-management-task-and-time-89/)
- [Bygde en lagdelt automatisert testsuite — 981 Go‑tester, 543 spesifikasjoner for frontend og nettleser, 494 atferdstester i SQL — med mutasjonstesting, egenskapsbaserte tester og en kvalitetsport for universell utforming.](https://advisory.engineer.company/nb/portfolio/built-a-layered-automated-test-suite-across-four-layers-94/)
- [Bygde repoets kontrollmotor — 268 registrerte commit‑kontroller, 277 lint‑regler og 15 egne ESLint‑regler — pluss 146 tester av selve kontrollene, slik at det er bygget, ikke gjennomgangen, som holder standarden.](https://advisory.engineer.company/nb/portfolio/built-the-repository-s-guard-engine-of-268-checks-95/)
- [Etablerte et kontinuerlig sikkerhetsprogram — kodeskanning, DAST, kontroll av avhengigheter og sårbarheter, SBOM‑generering, skanning etter hemmeligheter og SHA‑låste actions — sammen med 21 skriftlige sikkerhetsrevisjoner.](https://advisory.engineer.company/nb/portfolio/established-a-continuous-security-programme-104/)
- [Bygde sju skrivebeskyttede rapporteringsroller som gjengir en vert i drift som Markdown — fakta, tilgang, git, metrikker, trafikk, sikkerhet og leverandørens inventar — etter en regel om at ingen tall skrives ut som kjøringen ikke har målt.](https://advisory.engineer.company/nb/portfolio/built-seven-read-only-host-reporting-roles-120/)
- [Skrev en avgrensningsregel inn i repoet etter at en omstrukturering hadde ført et annet selskaps inventar, brannmuråpninger og tekst inn i det — og holdt de karantenesatte restene under skanneren for hemmeligheter i stedet for å unnta dem.](https://advisory.engineer.company/nb/portfolio/wrote-a-scope-rule-after-a-credential-leak-124/)
- [Bygde en commit‑port med 22 enlinjes lintere pluss fem som fortjener et avsnitt, uten advarselsnivå og uten tillatte undertrykkinger i koden, som dekker HTML, CSS, JavaScript, Python, YAML, Markdown, shell, lenker, staving, hemmeligheter og typografi.](https://advisory.engineer.company/nb/portfolio/built-a-22-linter-commit-gate-127/)
- [Kuttet nettstedets nettleserdrevne kvalitetsport fra 1 636 sekunder til 615 ved å kjøre kontrollene med de lengste først gjennom en worker‑pool begrenset til fire baner, etter å ha målt at alfabetisk rekkefølge kostet 320 sekunder mot 224.](https://advisory.engineer.company/nb/portfolio/cut-the-visual-quality-gate-to-ten-minutes-128/)
- [Satte dokumentasjonen under sin egen linter — et linjebudsjett per fil som bare kan strammes inn, et krav om indeks og en kontroll av reelle stier — som fant seks av ni planer merket som ferdige med uavkryssede bokser, og fjorten commit‑sperrende oppgaver som ikke var nevnt i noe dokument.](https://advisory.engineer.company/nb/portfolio/put-the-documentation-under-its-own-linter-142/)
- [Satte 10 242 linjer JavaScript i kvalitetsporten under en formaterer og en linter etter å ha slått fast at det var den største kodemengden i repoet og den eneste ingenting leste, og rettet 13 funn uten å undertrykke noen.](https://advisory.engineer.company/nb/portfolio/brought-the-quality-gate-code-under-a-linter-143/)
- [Holdt generatoren til 981 testtilfeller med et minstekrav på 92 % grendekning og advarsler behandlet som feil, og verifiserte idempotens ved å kjøre hele byggepipelinen to ganger fra en tom fil og kreve at den andre kjøringen ikke endret noe.](https://advisory.engineer.company/nb/portfolio/held-the-generator-to-964-tests-and-a-coverage-floor-145/)
- [Etablerte PDF/UA‑1‑samsvar for ni dokumenter med 106 av 106 regler, og fant at arkivvarianten feilet på én regel av 146 — et nesten‑treff som ser ut som bestått for alle som ikke kjører validatoren.](https://advisory.engineer.company/nb/portfolio/established-pdf-ua-1-conformance-across-nine-documents-146/)
- [Slo på alle reglene i Python‑linteren på feilnivå og arbeidet seg gjennom 1 815 funn ned til null, med en skriftlig begrunnelse for hvert av de få unntakene og to av dem sikret av en kontroll i stedet for en kommentar.](https://advisory.engineer.company/nb/portfolio/enabled-every-python-linter-rule-as-an-error-147/)
- [Skrev tester for selve kontrollene etter å ha slått fast at en kontroll som bare får ren inndata, en dag vil melde rent fordi den ikke leste noe — plantet en stavefeil for å bekrefte at stavekontrollen finner den, og hentet et id‑område fra databasen i stedet for fra et tall i testen.](https://advisory.engineer.company/nb/portfolio/wrote-tests-for-the-checkers-themselves-149/)
- [Fant ut at commit‑hookene og kvalitetsporten kjørte ulike kontroller mens et dokument lovet at de var de samme, ved å sammenligne de to listene i en test — de fem som bare noen gang ble kjørt manuelt, var de som leste CV‑teksten.](https://advisory.engineer.company/nb/portfolio/found-the-commit-hooks-and-the-gate-disagreeing-150/)
- [Bygde en innholdskontroll på tvers av språk som feiler når en oversettelse mister et tall den engelske teksten oppgir, og når et språk bruker en notasjon som ikke hører hjemme i det — og fant to danske beskrivelser som manglet en måleverdi, og seksten ukrainske tekstbiter med engelske anførselstegn.](https://advisory.engineer.company/nb/portfolio/built-a-cross-language-figure-and-notation-check-153/)
- [Skrev en parser som leser den faktiske C‑headeren på 7 308 linjer og verifiserer hvert kallsted, hver enum‑konstant og at hver klasse som eier en peker, er final, etter at en håndskrevet plassholder‑header lot kall til tre fjernede funksjoner kompilere, lenke og krasje.](https://advisory.engineer.company/nb/portfolio/wrote-a-parser-that-verifies-every-ffi-call-site-157/)
- [Tok testsuiten fra seks tester over en grense på seksti sekunder til 135 beståtte på 8,9 sekunder ved å profilere hovedtråden og fjerne de to kallene den satt fast i under 3 989 av 4 017 prøver.](https://advisory.engineer.company/nb/portfolio/took-the-test-suite-under-nine-seconds-158/)
- [Holdt fire repoer til én historikkstandard — konvensjonell, uten emojier og uten attribusjonslinjer, håndhevet av en hook for commit‑meldinger — sammen med 48 instruksjonsdokumenter som styrer hvordan arbeidet gjøres.](https://advisory.engineer.company/nb/portfolio/held-five-repositories-to-one-history-standard-165/)
- [Fikk seks rapporteringsinnsamlere til å oppgi den delen av inndataene de aldri leste — filer som forble lukket, sonder som ikke var installert, journallinjer som ikke ble gjenkjent — og tilpasset terskelverdier til 116 målinger, etter å ha slått fast at en blind innsamling og en vert der alt er i orden, gir den samme siden.](https://advisory.engineer.company/nb/portfolio/made-six-collectors-state-what-they-never-read-167/)

<https://advisory.engineer.company/nb/categories/automation/>
