{"id":31927065,"url":"https://github.com/throwtheswitch/drsurlycourse2docker","last_synced_at":"2025-10-14T01:56:44.917Z","repository":{"id":81599645,"uuid":"92181261","full_name":"ThrowTheSwitch/DrSurlyCourse2Docker","owner":"ThrowTheSwitch","description":"Dr. Surly’s Course #2 build environment","archived":false,"fork":false,"pushed_at":"2025-02-17T14:19:56.000Z","size":22529,"stargazers_count":7,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-03T06:37:22.608Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ThrowTheSwitch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"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},"funding":{"github":"ThrowTheSwitch"}},"created_at":"2017-05-23T14:16:34.000Z","updated_at":"2025-02-17T14:20:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"b27a4819-6e65-4263-9924-50c86453dc04","html_url":"https://github.com/ThrowTheSwitch/DrSurlyCourse2Docker","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/ThrowTheSwitch/DrSurlyCourse2Docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThrowTheSwitch%2FDrSurlyCourse2Docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThrowTheSwitch%2FDrSurlyCourse2Docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThrowTheSwitch%2FDrSurlyCourse2Docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThrowTheSwitch%2FDrSurlyCourse2Docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ThrowTheSwitch","download_url":"https://codeload.github.com/ThrowTheSwitch/DrSurlyCourse2Docker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThrowTheSwitch%2FDrSurlyCourse2Docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017465,"owners_count":26086090,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":"2025-10-14T01:56:14.609Z","updated_at":"2025-10-14T01:56:44.912Z","avatar_url":"https://github.com/ThrowTheSwitch.png","language":"C","funding_links":["https://github.com/sponsors/ThrowTheSwitch"],"categories":[],"sub_categories":[],"readme":"# Dr. Surly’s School for Mad Scientists: Interaction Tests, Mocks \u0026 Refactoring in Embedded Software Docker Image\nUnit testing environment with ARM cross compiler, Unity, CMock, Ceedling, and Qemu emulator\n\n## Contents\n* Testing tools\n  * Ceedling 0.30.0\n  * CMock 2.5.2\n  * Unity 2.5.1\n* Environment\n  * Ruby 2.4.9\n  * make 4.1\n  * gcc 7.4.0\n  * arm-none-eabi-gcc 6.3.1\n  * QEMU 1.1.2 (modified)\n* Course project\n\n## Build\n\nThe project image is layered atop a base image. The project image contains the potentially changeable content of the testing tools and the project materials. If future content updates are necessary this produces a slim `docker pull` operation for students.\n\nThe base docker image contains the heavyweight, unchanging tools — gcc toolchain, Ruby, and our customized Qemu. All these are built from scratch or installed by package manager during image build. To limit the download size for students, this image should be squashed.\n\nIf the base image changes, it must be rebuilt first and then the project image must be rebuilt. If only the project image changes, only it must be rebuilt.\n\n### Base Docker Image\n\nBecause of the Docker `--squash` option, this image must be built locally, manually tagged, and pushed to Docker Hub. Automated Docker Hub builds do not support the `--squash` option.\n\n1. Update Dockerfile and/or assets.\n1. Build locally… `./build/base/run.sh`\n1. Tag locally `docker image tag throwtheswitch/drsurly-course2-base throwtheswitch/drsurly-course2-base:[tag]`\n1. `docker push throwtheswitch/drsurly-course2-base:[tag]`\n\n### Project Docker Image\n\n1. Update Dockerfile and/or assets. If base image has changed, be sure to update the tagged version of the base image at the top of build/release/Dockerfile before building the project image.\n1. For a local build… `./build/release/run.sh`. Local builds are optional or for development work. Ultimately, this build is automated at Docker Hub for tagging and release, triggered by Github commits.\n\n## Usage\n\n`docker run -it --rm -v \u003clocal project path\u003e:/lab throwtheswitch/drsurly-course2[:tag]`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthrowtheswitch%2Fdrsurlycourse2docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthrowtheswitch%2Fdrsurlycourse2docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthrowtheswitch%2Fdrsurlycourse2docker/lists"}