{"id":22741509,"url":"https://github.com/danitrod/jenkins-lab","last_synced_at":"2026-04-13T21:04:50.789Z","repository":{"id":105752062,"uuid":"320692244","full_name":"danitrod/jenkins-lab","owner":"danitrod","description":"[PORTUGUÊS] Projeto para a disciplina Laboratório de Engenharia de Software","archived":false,"fork":false,"pushed_at":"2020-12-13T21:46:38.000Z","size":441,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-05T06:32:03.252Z","etag":null,"topics":["docker","jenkins","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danitrod.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-12-11T21:54:35.000Z","updated_at":"2020-12-13T21:46:40.000Z","dependencies_parsed_at":"2023-06-13T14:31:07.481Z","dependency_job_id":null,"html_url":"https://github.com/danitrod/jenkins-lab","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/danitrod%2Fjenkins-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danitrod%2Fjenkins-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danitrod%2Fjenkins-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danitrod%2Fjenkins-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danitrod","download_url":"https://codeload.github.com/danitrod/jenkins-lab/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246273553,"owners_count":20750906,"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":["docker","jenkins","rust"],"created_at":"2024-12-11T00:12:38.145Z","updated_at":"2026-04-13T21:04:50.736Z","avatar_url":"https://github.com/danitrod.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Projeto final - Pipeline com Jenkins\n\n_Feito por Daniel Rodrigues 31839010 e Matheus Masumoto 31850741_\n\n## Aplicação\n\nA aplicação é uma calculadora com interface de comando de linha simples feita com a linguagem `Rust`, que suporta as quatro operações básicas: adição, subtração, multiplicação e divisão. Um teste foi implementado para cada operação. Todo o código da aplicação está localizado dentro da pasta [src](./src).\n\n## Pipeline\n\n[A Jenkinsfile pode ser encontrada aqui](./Jenkinsfile). A _pipeline_ em Jenkins utiliza um agente Docker, que utiliza uma imagem do Linux Alpine que contém o compilador da linguagem `Rust` e uma versão de Docker instalada. Esta imagem foi previamente criada e está disponível no Docker Hub como `danitrod/rust-docker`. [A Dockerfile dela pode ser encontrada aqui](./docker/agent-image/Dockerfile). A _pipeline_ em Jenkins executa 5 estágios:\n\n1. `Test app`: roda o comando `cargo test`, que executa todos os testes disponíveis num módulo de testes de uma aplicação `Rust`. [Os testes da aplicação podem ser encontrados nesse arquivo](./src/lib.rs).\n\n2. `Build app`: roda o comando `cargo build --release`, que compila o programa `Rust` em um arquivo binário executável de maneira otimizada.\n\n3. `Build Docker image`: constrói uma imagem Docker com o executável, a partir de uma imagem Alpine. [A Dockerfile pode ser encontrada aqui](./Dockerfile).\n\n4. `Deploy Docker image`: realiza o push da imagem construida no estágio anterior para o Docker Hub. A imagem sobe com o nome `danitrod/rust-calculator`, e a tag `1.(número da build do Jenkins)`, juntamente com a tag `latest`. As credenciais para o Docker Hub para essa conta foram previamente configuradas no Jenkins com o id `Dockerhub-creds`.\n\n5. `Cleanup Docker image`: limpa o contexto do agente, removendo as imagens buildadas do contêiner.\n\nAbaixo está uma captura de tela com a _pipeline_ executada com sucesso.\n\n![Execução da pipeline](./doc/source/images/pipeline.jpg)\n\n## Execução\n\nApós a execução da _pipeline_, a imagem da calculadora fica disponível publicamente no Docker Hub sob o nome `danitrod/rust-calculator`. Você pode executar a aplicação com o comando `docker run -it danitrod/rust-calculator:latest`, como na imagem abaixo:\n\n![Execução do programa](./doc/source/images/execution.jpg)\n\n## Licença\n\n[Licença MIT](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanitrod%2Fjenkins-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanitrod%2Fjenkins-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanitrod%2Fjenkins-lab/lists"}