{"id":16701109,"url":"https://github.com/arnobl/spoon-web","last_synced_at":"2025-03-14T06:12:28.215Z","repository":{"id":145959039,"uuid":"295675107","full_name":"arnobl/spoon-web","owner":"arnobl","description":null,"archived":false,"fork":false,"pushed_at":"2021-07-02T12:38:05.000Z","size":3044,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-21T00:50:02.394Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arnobl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-09-15T09:14:15.000Z","updated_at":"2021-07-02T12:38:08.000Z","dependencies_parsed_at":"2023-07-05T04:20:55.686Z","dependency_job_id":null,"html_url":"https://github.com/arnobl/spoon-web","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobl%2Fspoon-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobl%2Fspoon-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobl%2Fspoon-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arnobl%2Fspoon-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arnobl","download_url":"https://codeload.github.com/arnobl/spoon-web/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243532549,"owners_count":20306155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T18:28:45.826Z","updated_at":"2025-03-14T06:12:28.195Z","avatar_url":"https://github.com/arnobl.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## DevOps class at INSA Rennes, CS dep\n\nA team is composed of three students.\nEach team has to:\n - select a research paper to read and present;\n - build a DevOps toolchain for the app Spoon-web\n\n# Project\n\nThe given app Spoon-web is currently not built in a DevOps toolchain.\n\nYou have to select quality tools, improve the app, test its back and front, package, release, deploy, and monitor the app as automatically as possible.\n\nSeveral points are mandatory.\n\nFollowing the DevOps steps:\n\n**code**\n\nMandatory: \n - put the project on the INSA gitlab instance\n - Add new features:\n    - front-end: TODO\n\n\n**test**\n\n*backend*\n\nMandatory:\n- unit test\n- code convention (eg checkstyle)\n- linters (eg spotbugs, errorprone)\n- code coverage (fail if \u003c x %)\n- mutation analysis (eg [Descartes](https://github.com/STAMP-project/pitest-descartes/) tool for extreme mutation)\n\nTo do so, complete the Maven configuration file.\n\nOptional:\n- security analysis\n- performance testing\n- write new linters (eg using [Spoon](https://github.com/INRIA/spoon)\n- or any relevant idea\n\n\n*frontend*\n\nMandatory:\n- front-end unit test (need to mock the back-end and its REST API, HTTP interceptor)\n- system test (E2E testing) using [Protractor](https://www.protractortest.org).\n- code convention and linters (`tslint`, already installed but can be customised)\n- code coverage (fail if \u003c x %)\n\n\nOptional:\n- security analysis\n- or any relevant idea\n\n\n**build**\n\n\nMandatory:\n- A gitlab-ci file to specify how the back and the front are built\n- Launch a build on each commit thanks to gitlab-ci\n\n\n**package**\n\n\nMandatory:\n- Write two dockerfiles to launch the back and the front as micro-services\n\n\n\n**deploy**\n\nMandatory:\n- Continuous delivery: on each build success, the docker images are put on the gitlab INSA Docker instance registry\n- Continuous delivery: on each build success, the docker images are deployed on servers\n\nWe will try to have a Kubernetes instance at INSA on which you can plug your gitlab-ci.\nIn case of problems, you can deploy locally using https://microk8s.io/ or Minikube\n\n\nChallenges:\n- continuous service: how not to lose context? This may require to modify the back.\n- shadow deployment: https://stackoverflow.com/questions/14599016/shadow-deployment-for-test-in-production\n\nSome tools: watchtower, https://github.com/pyouroboros/ouroboros, https://docs.docker.com/engine/swarm/, https://www.portainer.io/, https://docs.docker.com/compose/\n\n**operate**\n\nMandatory:\n- A/B testing: have several backend instances that use different Spoon versions\n\nOptional: \n- Chaos engineering: how to be resilient to failures?\n\n\n\n**monitor**\n\nOptional: \n- log useful data\n- use data mining techniques to extract information from logs\n- monitor crashes and provide feedback to developers\n\nSome tools: logstash, eliasticsearch, kibana\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnobl%2Fspoon-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farnobl%2Fspoon-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farnobl%2Fspoon-web/lists"}