{"id":23788728,"url":"https://github.com/the-nefarious-developer/devcontainer-images","last_synced_at":"2026-04-16T23:30:19.325Z","repository":{"id":258308798,"uuid":"870420550","full_name":"The-Nefarious-Developer/devcontainer-images","owner":"The-Nefarious-Developer","description":"A set of development container images that can be used for SAP BTP development with Cloud Application Programming Model projects in Visual Studio Code","archived":false,"fork":false,"pushed_at":"2024-10-25T02:49:39.000Z","size":116,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-01T16:48:00.141Z","etag":null,"topics":["capire","cloudfoundry","devcontainer","ghcr-hosted","ghcr-image","sap","sap-btp","sap-cap"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/The-Nefarious-Developer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2024-10-10T02:27:15.000Z","updated_at":"2024-10-25T02:42:43.000Z","dependencies_parsed_at":"2024-10-18T11:48:17.523Z","dependency_job_id":"c8f162f6-5d1b-4b79-a950-d8d38e1d4d45","html_url":"https://github.com/The-Nefarious-Developer/devcontainer-images","commit_stats":null,"previous_names":["the-nefarious-developer/devcontainer-images"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nefarious-Developer%2Fdevcontainer-images","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nefarious-Developer%2Fdevcontainer-images/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nefarious-Developer%2Fdevcontainer-images/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/The-Nefarious-Developer%2Fdevcontainer-images/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/The-Nefarious-Developer","download_url":"https://codeload.github.com/The-Nefarious-Developer/devcontainer-images/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240012446,"owners_count":19733904,"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":["capire","cloudfoundry","devcontainer","ghcr-hosted","ghcr-image","sap","sap-btp","sap-cap"],"created_at":"2025-01-01T16:48:04.035Z","updated_at":"2026-04-16T23:30:19.232Z","avatar_url":"https://github.com/The-Nefarious-Developer.png","language":"Shell","readme":"# Nefarious Development Container Images\n\n[![Build, Test and Deploy](https://github.com/The-Nefarious-Developer/devcontainer-images/actions/workflows/pipeline.yaml/badge.svg)](https://github.com/The-Nefarious-Developer/devcontainer-images/actions/workflows/pipeline.yaml)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\nA set of development container images that can be used for SAP BTP development with Cloud Application Programming Model projects in Visual Studio Code.\n\n\u003e These images were created to provide a consistent set of dependencies to the development container templates provided through [this repository](https://github.com/The-Nefarious-Developer/devcontainer-templates).\n\nIf you have any question, suggestion or request regarding what this repository can offer, you can use this [discussion area](https://github.com/orgs/The-Nefarious-Developer/discussions).\n\n## Content\n\n- [`scripts`](scripts) - Contains a set of scripts to build the project.\n- [`src`](src) - Contains reusable dev container images.\n- [`test`](test) - Contains the test suite for each provided image.\n\n## Available Images\n\nThs repository generates the following docker/devcontainer images using GHCR:\n\n| Image                     | Base Image                                                                                                            | Variants                                                          |\n|---------------------------|-----------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|\n| sap-cap-javascript-node   | [mcr.microsoft.com/devcontainers/javascript-node](https://hub.docker.com/r/microsoft/devcontainers-javascript-node)   | [Versions Available](./src/sap-cap-javascript-node/variants.json) |\n| sap-cap-typescript-node   | [mcr.microsoft.com/devcontainers/typescript-node](https://hub.docker.com/r/microsoft/devcontainers-typescript-node)   | [Versions Available](./src/sap-cap-typescript-node/variants.json) |\n\n## How it works\n\nThe directories inside the [`src`](src) folder will contain the files that will compose the images to be created. \n\nEach image folder will have the following structure:\n- **.devcontainer** which is going to contain the `Dockerfile` and the `devcontainer.json` with properties and dependencies for the container image creation. \n- **variants.json** with versions that will be set to the upstream image of that devcontainer.\n\nHere is an example of `variants.json` file:\n\n```json\n{\n    \"variants\": [\n        \"version1\",\n        \"version2\"\n    ]\n}\n```\n\nThe usage of this file is is directly tied to the *variant* argument provided to the `devcontainer.json` and its values will be related to the image directories to generate a `variants-matrix.json` file during the **build** process.\n\nThis procedure will enable a GitHub Actions pipeline automation to read all images that needs to be deployed through a matrix strategy configured in the `setup` job.\n\n## Testing\n\nEach image needs to have a test implementation. The GitHub Actions pipeline will search for those images based on the `variant-matrix.json` created through the build script.\n\n\u003e **Note:** The lack of test implementation might cause the CI/CD pipeline to fail.\n\nThe test implementation is using functions available through the usage of the [`harness.sh`](test/test-utils/harness.sh) file. \u003cbr /\u003e\nEach image should call the `setup` function to properly configure the test environment. This process will generate a temporary docker image to be executed at the evaluation process.\n\nTemplate for test implementation:\n\n```bash\n#!/usr/bin/env bash\nset -euo pipefail\nsource \"$(dirname \"$0\")/../test-utils/harness.sh\"\n\nsetup \"\u003cimage\u003e\" \"$VARIANT\"\n\nrun_test \"\u003ctest description\u003e\" \"\u003cevaluation command\u003e\" \"\u003cexpected value\u003e\"\n...\n```\n\n### Testing locally\n\nTo test the images locally, the environment variable `VARIANT` need to be set prior to the bash file execution.\n\nTemplate for command to run the test locally:\n\n```\nVARIANT=\u003cupstream version\u003e test/\u003cimage\u003e/test.sh\n```\n\nThe [`package.json`](package.json) file contains an example of local testing through the script `test:local`.\n\n## How can I contribute?\n\nContributions are welcome! Here's how you can get involved:\n\n1. **Report Issues:** Found a bug or have a feature request? [Open an issue](https://github.com/The-Nefarious-Developer/devcontainer-images/issues). \u003cbr /\u003e\n2. **Submit Pull Requests:** Fork the repository, create a new branch, make your changes, and submit a PR. \u003cbr /\u003e\n3. **Improve Documentation:** Help us improve the README or add examples to make setup easier. \u003cbr /\u003e\n4. **Test \u0026 Feedback:** Try the devcontainer images and give us feedback to improve them.\n\nPlease follow the [contribution guidelines](CONTRIBUTING.md) for more details.\n\n## References\n\nThese images were created following the guidelines provided through the [devcontainers/template-starter](https://github.com/devcontainers/template-starter) and [devcontainers/images](https://github.com/devcontainers/images).\n\n## Acknowledgments\n\nSpecial thanks to [Christian Sutter](https://github.com/csutter) who came up with the [harness](https://en.wikipedia.org/wiki/Test_harness) test strategy used in this project.\n\n## License\nCopyright (c) 2024 The Nefarious Developer \u003cbr /\u003e\nLicensed under the MIT License. See [LICENSE](LICENSE).","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-nefarious-developer%2Fdevcontainer-images","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthe-nefarious-developer%2Fdevcontainer-images","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthe-nefarious-developer%2Fdevcontainer-images/lists"}