====== Propozycje tematów ====== 1. (zespołowe) **Narzędzia automatyzujące procesy i wspierające pracę zespołow programistycznych: DevOps, CI/CD** (continuous integration, continuous delivery, continuous deployment). * [[https://azure.microsoft.com/pl-pl/services/devops/|Azure DevOPs]] (Repos, Boards, Pipelines, itd. ), ewentualnie integracja z innymi usługami (np. GitHub) * [[https://bitbucket.org/product/features/pipelines|BitBucket pipelines]] * [[https://about.gitlab.com/|GitLab]] Prezentacja dla zespołu 3-4 osobowego demonstrująca pełen pipeline wytwórczy na przykładowym projekcie deweloperskim (może być na przykładzie projektu realizowanego aktualnie w ramach Pracowni Programowania Zespołowego). Najważniejsze zagadnienia: * wsparcie dla pracy zespołowej, zarządzanie zespołem i zadaniami, issue tracker, wybrana metodologia wytwórcza (agile, scrum, ...) * repozytorium kodu (system kontroli wersji) i workflow w zespole, np.: * Github workflow: branch -> commit -> Pull Request -> Review -> Deploy -> Merge * [[https://dev.to/heratpatel/git-flow-a-successful-git-branching-model-1j6f|A Successful Git branching model]] Git Flow * automatyzacja procesów wytwórczych: budowanie, testy, deployment 2 . Automatyzacja procesów budowania i testowania * [[https://cmake.org/|CMake]] * [[https://github.com/features/actions|GitHub actions]] * [[https://docs.github.com/en/actions/hosting-your-own-runners|GitHub Actions with self-hosted runners]] * [[https://trunk.io/]] automatyzacja przeglądu kodu * [[https://pre-commit.com/|pre-commit]] - zarządzanie skryptami uruchamianymi przed zatwierdzeniem zmian git do automatycznego formatowania kodu, sprawdzania jakości kodu, zależności i testowania * serwer automatyzacji [[https://www.jenkins.io/|Jenkins]] lub [[https://docs.buildbot.net/latest/index.html|Buildbot]] 3. Narzędzia do statycznej analizy kodu (lintery), refaktoryzacji, generowania kodu * [[https://www.jetbrains.com/resharper/|Resharper]] * [[https://clang.llvm.org/|clang]] + [[https://clang.llvm.org/extra/clang-tidy/|clang-tidy]] + [[https://clang.llvm.org/docs/ClangFormat.html|clang-format]] i użycie w automatyzacji formatowania i testowania kodu 4. Techniki izolacji, atrapy (mocki), wzorce w testowaniu jednostkowym: * [[https://github.com/devlooped/moq|Moq]], * [[https://fakeiteasy.github.io/|FakeItEasy]], * [[https://hibernatingrhinos.com/oss/rhino-mocks|RhinoMocks]], * [[https://nsubstitute.github.io/|NSubstitute]], * [[https://site.mockito.org/}Mockito]] mocking framework for unit tests in Java 5. generowanie testów i danych do testów * biblioteka AutoData, * [[https://autofixture.github.io/|AutoFixture]], * narzędzia AI do generowania testów 6. Profilowanie aplikacji * narzędzia diagnostyczne w Visual Studio, instrumentacja, profilowanie statystyczne (sampling), debugowanie pamięci * narzędzia od JetBrains [[https://www.jetbrains.com/dotmemory/|dotMemory]], [[https://www.jetbrains.com/profiler/|dotTrace]] * [[https://github.com/google/orbit|Orbit]] instrumentacja programów w C, C%%++%%, Rust, Go * [[https://sourceware.org/binutils/docs/gprof/|gprof]] GNU profiler * [[https://valgrind.org/info/tools.html|valgrind]] system for debugging and profiling Linux programs 7. [[https://www.docker.com/|Docker]] - uruchamianie aplikacji w izolowanych środowiskach 8. [[https://kubernetes.io/|Kubernetes]] - zarządzanie dużą liczbą kontenerów 9. wykorzystanie narzędzi AI w procesie wytwórczym 10 . Inne narzędzia spotykane w firmach informatycznych a nieobecne w programie nauczania IS. \\ ... jakich narzędzi używacie? ---- Inne propozycje automatyzacji DevOps, CI, CD - mozliwych kompiacji jest wiele; * [[https://www.atlassian.com/software/jira/features|Jira Software]] + BitBucket + [[https://www.atlassian.com/software/bamboo|Bamboo]] (CI, free for 30 days) * git + [[https://www.buildbot.net/|Buildbot]] * GitHub + [[https://www.jenkins.io/|Jenkins]] automation server * [[https://www.gocd.org/|GoCD]] free & open source ci/cd server * [[https://northflank.com/|Northflank]] a comprehensive suite of features to support you from inception to production. Put your DevOps lifecycle on autopilot. * GitHub/BitBucket + * build * [[https://circleci.com/|CircleCI]] (up to 6,000 build minutes and 5 active users per month) * [[https://www.appveyor.com/|AppVeyor]] * web deployment * [[https://render.com/|Render]] a unified cloud to build and run all your apps and websites * [[https://www.cyclic.sh/|Cyclic]] build and run modern cloud-native serverless applications without piling on to the full stack. * [[https://qoddi.com/|Qoddi]] * [[https://www.koyeb.com/|Koyeb]] push code to production, everywhere, in minutes * GitHub + [[https://www.jetbrains.com/teamcity/|TeamCity]] powerful continuous integration for DevOps-centric teams * inne kombinacje wspomnianych (lub nie wspomnianych) platform, np. [[https://www.simplilearn.com/tutorials/devops-tutorial/devops-tools|32 Cutting-Edge DevOps Tools to Watch in 2024]]