├── stable └── .keep ├── experimental ├── .keep ├── nodejs-functions │ ├── templates │ │ └── simple │ │ │ ├── test │ │ │ └── test.js │ │ │ ├── function.js │ │ │ ├── .vscode │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ └── package.json │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ └── package.json │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ └── stack.yaml ├── go-modules │ ├── templates │ │ └── default │ │ │ ├── go.mod │ │ │ └── app.go │ ├── image │ │ ├── project │ │ │ ├── .dockerignore │ │ │ └── Dockerfile │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ └── stack.yaml ├── rust-tide │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── server │ │ │ │ └── bin │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Dockerfile │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ └── main.rs │ │ │ ├── .dockerignore │ │ │ ├── test-stack.sh │ │ │ └── Dockerfile │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ ├── templates │ │ └── default │ │ │ ├── .gitignore │ │ │ ├── src │ │ │ └── lib.rs │ │ │ ├── tests │ │ │ └── test-lib.rs │ │ │ ├── Cargo.toml │ │ │ └── .vscode │ │ │ └── launch.json │ └── stack.yaml ├── vertx │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ ├── Dockerfile │ │ │ └── pom.xml │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ └── stack.yaml ├── rust │ ├── templates │ │ └── simple │ │ │ ├── src │ │ │ └── main.rs │ │ │ ├── Cargo.toml │ │ │ ├── .gitignore │ │ │ └── .vscode │ │ │ ├── launch.json │ │ │ └── tasks.json │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ └── Dockerfile │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ └── stack.yaml ├── java-spring-boot2-liberty │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ ├── .appsody-init.sh │ │ │ ├── .appsody-init.bat │ │ │ └── util │ │ │ │ ├── RangeIncludesVersion.java │ │ │ │ └── check_version │ │ └── config │ │ │ └── app-deploy.yaml │ ├── templates │ │ └── default │ │ │ ├── src │ │ │ └── main │ │ │ │ ├── resources │ │ │ │ ├── application.properties │ │ │ │ └── public │ │ │ │ │ └── index.html │ │ │ │ ├── java │ │ │ │ └── application │ │ │ │ │ ├── Main.java │ │ │ │ │ └── LivenessEndpoint.java │ │ │ │ └── liberty │ │ │ │ └── config │ │ │ │ └── server.xml │ │ │ ├── .vscode │ │ │ └── launch.json │ │ │ └── .gitignore │ └── stack.yaml └── rocket │ ├── image │ ├── project │ │ ├── cargo-add │ │ ├── .dockerignore │ │ ├── deps │ │ │ ├── Cargo.toml │ │ │ └── src │ │ │ │ ├── lib.rs │ │ │ │ └── tests.rs │ │ ├── .appsody-init.sh │ │ └── Dockerfile │ ├── .dockerignore │ ├── config │ │ └── app-deploy.yaml │ └── Dockerfile-stack │ ├── stack.yaml │ └── templates │ └── simple │ ├── .gitignore │ ├── src │ ├── tests.rs │ └── main.rs │ ├── Cargo.toml │ └── .vscode │ └── tasks.json ├── incubator ├── python-flask │ ├── image │ │ ├── project │ │ │ ├── test │ │ │ │ ├── __init__.py │ │ │ │ └── apptests.py │ │ │ ├── server │ │ │ │ ├── routes │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── health.py │ │ │ │ └── __init__.py │ │ │ ├── .dockerignore │ │ │ ├── Pipfile │ │ │ ├── constraints.txt │ │ │ └── Dockerfile │ │ ├── .dockerignore │ │ └── config │ │ │ └── app-deploy.yaml │ ├── templates │ │ └── simple │ │ │ ├── Pipfile │ │ │ └── .vscode │ │ │ ├── launch.json │ │ │ └── tasks.json │ └── stack.yaml ├── node-red │ ├── templates │ │ └── simple │ │ │ ├── flow_cred.json │ │ │ ├── package-lock.json │ │ │ └── package.json │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ ├── package.json │ │ │ └── Dockerfile │ │ ├── Dockerfile-stack │ │ └── config │ │ │ └── app-deploy.yaml │ └── stack.yaml ├── nodejs-express │ ├── templates │ │ ├── scaffold │ │ │ ├── views │ │ │ │ └── index.pug │ │ │ ├── routes │ │ │ │ └── index.js │ │ │ ├── app.js │ │ │ ├── .vscode │ │ │ │ └── launch.json │ │ │ ├── package.json │ │ │ └── test │ │ │ │ └── test.js │ │ ├── kafka │ │ │ ├── test │ │ │ │ └── test.js │ │ │ ├── .vscode │ │ │ │ ├── launch.json │ │ │ │ └── tasks.json │ │ │ ├── package.json │ │ │ └── docker-compose.yaml │ │ └── simple │ │ │ ├── .vscode │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── app.js │ │ │ ├── package.json │ │ │ └── test │ │ │ └── test.js │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ └── package.json │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ └── stack.yaml ├── nodejs-loopback │ ├── templates │ │ └── scaffold │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── src │ │ │ ├── controllers │ │ │ │ ├── index.ts │ │ │ │ └── README.md │ │ │ ├── __tests__ │ │ │ │ ├── README.md │ │ │ │ └── acceptance │ │ │ │ │ ├── ping.controller.acceptance.ts │ │ │ │ │ ├── test-helper.ts │ │ │ │ │ └── home-page.acceptance.ts │ │ │ ├── models │ │ │ │ └── README.md │ │ │ ├── datasources │ │ │ │ └── README.md │ │ │ ├── repositories │ │ │ │ └── README.md │ │ │ ├── sequence.ts │ │ │ ├── index.ts │ │ │ ├── migrate.ts │ │ │ └── openapi-spec.ts │ │ │ ├── .eslintignore │ │ │ ├── .yo-rc.json │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.json │ │ │ ├── .prettierrc │ │ │ ├── tsconfig.json │ │ │ ├── .vscode │ │ │ ├── launch.json │ │ │ ├── tasks.json │ │ │ └── settings.json │ │ │ └── .gitignore │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ ├── .mocharc.json │ │ │ ├── tsconfig.json │ │ │ ├── src │ │ │ │ └── __tests__ │ │ │ │ │ └── acceptance │ │ │ │ │ ├── ping.controller.acceptance.ts │ │ │ │ │ ├── test-helper.ts │ │ │ │ │ └── home-page.acceptance.ts │ │ │ └── Dockerfile │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ └── stack.yaml ├── starter │ ├── templates │ │ └── simple │ │ │ ├── hello.sh │ │ │ ├── tests │ │ │ └── test.sh │ │ │ └── .vscode │ │ │ └── tasks.json │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ └── Dockerfile │ │ └── config │ │ │ └── app-deploy.yaml │ └── stack.yaml ├── nodejs │ ├── templates │ │ └── simple │ │ │ ├── app.js │ │ │ ├── package-lock.json │ │ │ ├── .vscode │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ └── package.json │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ └── package.json │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ └── stack.yaml ├── kitura │ ├── image │ │ ├── project │ │ │ ├── deps │ │ │ │ └── AppsodyKitura │ │ │ │ │ ├── Sources │ │ │ │ │ └── AppsodyKitura │ │ │ │ │ │ ├── Routes │ │ │ │ │ │ ├── .keep │ │ │ │ │ │ └── HealthRoutes.swift │ │ │ │ │ │ ├── Logging.swift │ │ │ │ │ │ └── Metrics.swift │ │ │ │ │ ├── Tests │ │ │ │ │ └── LinuxMain.swift │ │ │ │ │ └── Package.swift │ │ │ ├── .dockerignore │ │ │ ├── .appsody-init.sh │ │ │ └── Dockerfile │ │ ├── .dockerignore │ │ └── config │ │ │ └── app-deploy.yaml │ ├── templates │ │ └── default │ │ │ ├── .gitignore │ │ │ ├── Sources │ │ │ ├── server │ │ │ │ └── main.swift │ │ │ └── Application │ │ │ │ └── Application.swift │ │ │ ├── Tests │ │ │ └── LinuxMain.swift │ │ │ ├── Package.swift │ │ │ └── .vscode │ │ │ └── launch.json │ └── stack.yaml ├── swift │ ├── templates │ │ └── simple │ │ │ ├── Sources │ │ │ └── simple │ │ │ │ └── main.swift │ │ │ ├── .gitignore │ │ │ ├── Tests │ │ │ ├── LinuxMain.swift │ │ │ └── simpleTests │ │ │ │ └── XCTestManifests.swift │ │ │ ├── Package.swift │ │ │ └── .vscode │ │ │ └── launch.json │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ └── Dockerfile │ │ └── config │ │ │ └── app-deploy.yaml │ └── stack.yaml ├── quarkus │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ ├── .appsody-init.sh │ │ │ ├── .appsody-init.bat │ │ │ └── Dockerfile │ │ ├── config │ │ │ └── app-deploy.yaml │ │ └── Dockerfile-stack │ ├── templates │ │ ├── default │ │ │ ├── src │ │ │ │ ├── test │ │ │ │ │ └── java │ │ │ │ │ │ └── org │ │ │ │ │ │ └── acme │ │ │ │ │ │ └── quickstart │ │ │ │ │ │ ├── NativeGreetingResourceIT.java │ │ │ │ │ │ └── GreetingResourceTest.java │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── org │ │ │ │ │ └── acme │ │ │ │ │ └── quickstart │ │ │ │ │ ├── GreetingService.java │ │ │ │ │ └── GreetingResource.java │ │ │ └── .vscode │ │ │ │ ├── launch.json │ │ │ │ └── tasks.json │ │ └── kafka │ │ │ ├── .vscode │ │ │ ├── launch.json │ │ │ └── tasks.json │ │ │ ├── src │ │ │ └── main │ │ │ │ ├── resources │ │ │ │ ├── application.properties │ │ │ │ └── META-INF │ │ │ │ │ └── resources │ │ │ │ │ └── prices.html │ │ │ │ └── java │ │ │ │ └── org │ │ │ │ └── acme │ │ │ │ └── kafka │ │ │ │ ├── PriceGenerator.java │ │ │ │ ├── PriceResource.java │ │ │ │ └── PriceConverter.java │ │ │ └── docker-compose.yaml │ └── stack.yaml ├── java-microprofile │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ ├── .appsody-init.sh │ │ │ ├── server-dev.xml │ │ │ ├── .appsody-init.bat │ │ │ ├── install-dev-deps.sh │ │ │ └── util │ │ │ │ ├── RangeIncludesVersion.java │ │ │ │ └── check_version │ │ └── config │ │ │ └── app-deploy.yaml │ ├── templates │ │ └── default │ │ │ ├── src │ │ │ └── main │ │ │ │ ├── liberty │ │ │ │ └── config │ │ │ │ │ ├── configDropins │ │ │ │ │ └── defaults │ │ │ │ │ │ └── quick-start-security.xml │ │ │ │ │ └── server.xml │ │ │ │ ├── java │ │ │ │ └── dev │ │ │ │ │ └── appsody │ │ │ │ │ └── starter │ │ │ │ │ ├── StarterApplication.java │ │ │ │ │ └── health │ │ │ │ │ ├── StarterLivenessCheck.java │ │ │ │ │ └── StarterReadinessCheck.java │ │ │ │ └── webapp │ │ │ │ └── WEB-INF │ │ │ │ └── beans.xml │ │ │ ├── .vscode │ │ │ └── launch.json │ │ │ └── .gitignore │ └── stack.yaml ├── java-openliberty │ ├── image │ │ ├── .dockerignore │ │ ├── project │ │ │ ├── .dockerignore │ │ │ ├── .appsody-init.bat │ │ │ ├── util │ │ │ │ ├── RangeIncludesVersion.java │ │ │ │ └── check_version │ │ │ └── .appsody-init.sh │ │ ├── mvn-stack-settings.xml │ │ └── config │ │ │ └── app-deploy.yaml │ ├── templates │ │ └── default │ │ │ ├── src │ │ │ └── main │ │ │ │ ├── liberty │ │ │ │ └── config │ │ │ │ │ ├── configDropins │ │ │ │ │ └── defaults │ │ │ │ │ │ └── quick-start-security.xml │ │ │ │ │ └── server.xml │ │ │ │ ├── java │ │ │ │ └── dev │ │ │ │ │ └── appsody │ │ │ │ │ └── starter │ │ │ │ │ ├── StarterApplication.java │ │ │ │ │ ├── StarterResource.java │ │ │ │ │ └── health │ │ │ │ │ ├── StarterLivenessCheck.java │ │ │ │ │ └── StarterReadinessCheck.java │ │ │ │ └── webapp │ │ │ │ └── WEB-INF │ │ │ │ └── beans.xml │ │ │ ├── .vscode │ │ │ └── launch.json │ │ │ └── .gitignore │ └── stack.yaml └── java-spring-boot2 │ ├── image │ ├── .dockerignore │ ├── project │ │ ├── .dockerignore │ │ ├── .appsody-init.bat │ │ ├── util │ │ │ └── RangeIncludesVersion.java │ │ └── .appsody-init.sh │ ├── mvn-stack-settings.xml │ └── config │ │ └── app-deploy.yaml │ ├── templates │ ├── default │ │ ├── src │ │ │ └── main │ │ │ │ ├── resources │ │ │ │ ├── application.properties │ │ │ │ └── public │ │ │ │ │ └── index.html │ │ │ │ └── java │ │ │ │ └── application │ │ │ │ ├── Main.java │ │ │ │ └── LivenessEndpoint.java │ │ ├── .vscode │ │ │ └── launch.json │ │ ├── .gitignore │ │ └── pom.xml │ ├── kotlin │ │ ├── src │ │ │ └── main │ │ │ │ ├── resources │ │ │ │ ├── application.properties │ │ │ │ └── public │ │ │ │ │ └── index.html │ │ │ │ └── kotlin │ │ │ │ └── application │ │ │ │ ├── Main.kt │ │ │ │ ├── Hello.kt │ │ │ │ └── LivenessEndpoint.kt │ │ ├── .vscode │ │ │ └── launch.json │ │ └── .gitignore │ └── kafka │ │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── application │ │ │ │ ├── Main.java │ │ │ │ ├── KafkaConsumer.java │ │ │ │ ├── config │ │ │ │ └── KafkaProducer.java │ │ │ │ └── LivenessEndpoint.java │ │ │ └── resources │ │ │ ├── application.properties │ │ │ ├── application-test.properties │ │ │ └── public │ │ │ └── index.html │ │ └── .gitignore │ └── stack.yaml ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── question.md │ ├── feature_request.md │ └── bug_report.md └── PULL_REQUEST_TEMPLATE.md ├── samples └── sample-stack │ ├── image │ ├── project │ │ └── Dockerfile │ ├── config │ │ └── app-deploy.yaml │ └── Dockerfile-stack │ ├── README.md │ ├── stack.yaml │ └── templates │ └── hello │ └── .vscode │ └── tasks.json ├── .gitignore ├── ci ├── nginx │ ├── Dockerfile │ ├── startup.sh │ ├── docker-compose.yml │ └── nginx.conf ├── ext │ └── pre_env.d │ │ └── 10_travis ├── build.sh ├── git_setup.sh ├── release.sh └── list.sh ├── .travis.yml └── pom.xml /stable/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /experimental/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /incubator/python-flask/image/project/test/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /incubator/node-red/templates/simple/flow_cred.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /experimental/nodejs-functions/templates/simple/test/test.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/scaffold/views/index.pug: -------------------------------------------------------------------------------- 1 | h1 #{msg} 2 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=true 2 | -------------------------------------------------------------------------------- /incubator/starter/templates/simple/hello.sh: -------------------------------------------------------------------------------- 1 | echo "Hello from Appsody!" -------------------------------------------------------------------------------- /experimental/go-modules/templates/default/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/example 2 | -------------------------------------------------------------------------------- /incubator/nodejs/templates/simple/app.js: -------------------------------------------------------------------------------- 1 | console.log("Hello from Node.js 12!") -------------------------------------------------------------------------------- /incubator/python-flask/image/project/server/routes/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /incubator/starter/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | **/.gitignore 3 | **/.vscode -------------------------------------------------------------------------------- /experimental/rust-tide/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | **/.gitignore 3 | **/.vscode -------------------------------------------------------------------------------- /experimental/rust-tide/image/project/server/bin/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | Cargo.lock -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.prettierignore: -------------------------------------------------------------------------------- 1 | dist 2 | *.json 3 | -------------------------------------------------------------------------------- /incubator/kitura/image/project/deps/AppsodyKitura/Sources/AppsodyKitura/Routes/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /incubator/starter/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | **/.gitignore 3 | **/.vscode -------------------------------------------------------------------------------- /incubator/swift/templates/simple/Sources/simple/main.swift: -------------------------------------------------------------------------------- 1 | print("Hello, world!") 2 | -------------------------------------------------------------------------------- /experimental/go-modules/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | **/.gitignore 3 | **/.vscode -------------------------------------------------------------------------------- /experimental/rust-tide/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.git 2 | **/.gitignore 3 | **/.vscode -------------------------------------------------------------------------------- /experimental/vertx/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/quarkus/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/starter/templates/simple/tests/test.sh: -------------------------------------------------------------------------------- 1 | echo "Running tests for Hello from Appsody!" -------------------------------------------------------------------------------- /incubator/kitura/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.build 2 | **/.git 3 | **/.gitignore 4 | **/.vscode 5 | -------------------------------------------------------------------------------- /incubator/node-red/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/nodejs/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/swift/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.build 2 | **/.git 3 | **/.gitignore 4 | **/.vscode 5 | -------------------------------------------------------------------------------- /experimental/vertx/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/java-microprofile/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/java-openliberty/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/java-spring-boot2/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/kitura/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.build 2 | **/.git 3 | **/.gitignore 4 | **/.vscode 5 | -------------------------------------------------------------------------------- /incubator/python-flask/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/quarkus/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/swift/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/.build 2 | **/.git 3 | **/.gitignore 4 | **/.vscode 5 | -------------------------------------------------------------------------------- /incubator/swift/templates/simple/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.build 3 | /Packages 4 | /*.xcodeproj 5 | -------------------------------------------------------------------------------- /experimental/rust/templates/simple/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println!("Hello from Appsody!"); 3 | } -------------------------------------------------------------------------------- /incubator/java-openliberty/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/node-red/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/nodejs-express/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/controllers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ping.controller'; 2 | -------------------------------------------------------------------------------- /incubator/nodejs/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/java-microprofile/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/nodejs-express/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/python-flask/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /incubator/kitura/templates/default/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.build 3 | /Packages 4 | *.xcodeproj 5 | .swiftpm 6 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | coverage/ 4 | .eslintrc.js 5 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | *.bat text eol=crlf 3 | *.cmd text eol=crlf 4 | cargo-add -text 5 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.yo-rc.json: -------------------------------------------------------------------------------- 1 | { 2 | "@loopback/cli": { 3 | "version": "2.2.1" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Ask a question or start a discussion. 4 | --- 5 | 6 | ## Summary -------------------------------------------------------------------------------- /experimental/nodejs-functions/image/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.git 3 | **/.gitignore 4 | **/.vscode 5 | **/Dockerfile-stack -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: '@loopback/eslint-config', 3 | }; 4 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/__tests__/README.md: -------------------------------------------------------------------------------- 1 | # Tests 2 | 3 | Please place your tests in this folder. 4 | -------------------------------------------------------------------------------- /experimental/rocket/image/project/cargo-add: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/appsody/stacks/HEAD/experimental/rocket/image/project/cargo-add -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/project/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "require": "source-map-support/register" 4 | } 5 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target 2 | **/.git 3 | **/.gitignore 4 | **/.vscode 5 | **/.appsody-spring-trigger -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "require": "source-map-support/register" 4 | } 5 | -------------------------------------------------------------------------------- /experimental/rocket/image/.dockerignore: -------------------------------------------------------------------------------- 1 | # ignore rust build artifacts 2 | **/target 3 | **/*.rs.bk 4 | 5 | **/.git 6 | **/.gitignore 7 | **/.vscode -------------------------------------------------------------------------------- /experimental/rust/image/.dockerignore: -------------------------------------------------------------------------------- 1 | # ignore rust build artifacts 2 | **/target 3 | **/*.rs.bk 4 | 5 | **/.git 6 | **/.gitignore 7 | **/.vscode -------------------------------------------------------------------------------- /incubator/kitura/templates/default/Sources/server/main.swift: -------------------------------------------------------------------------------- 1 | import Application 2 | 3 | let app = App() 4 | app.setUpRoutes() 5 | app.run() 6 | -------------------------------------------------------------------------------- /incubator/nodejs/templates/simple/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-simple", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1 5 | } 6 | -------------------------------------------------------------------------------- /experimental/rust/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | # ignore rust build artifacts 2 | **/target 3 | **/*.rs.bk 4 | 5 | **/.git 6 | **/.gitignore 7 | **/.vscode -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/models/README.md: -------------------------------------------------------------------------------- 1 | # Models 2 | 3 | This directory contains code for models provided by this app. 4 | -------------------------------------------------------------------------------- /experimental/rocket/image/project/.dockerignore: -------------------------------------------------------------------------------- 1 | # ignore rust build artifacts 2 | **/target 3 | **/*.rs.bk 4 | 5 | **/.git 6 | **/.gitignore 7 | **/.vscode -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/datasources/README.md: -------------------------------------------------------------------------------- 1 | # Datasources 2 | 3 | This directory contains config for datasources used by this app. 4 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/repositories/README.md: -------------------------------------------------------------------------------- 1 | # Repositories 2 | 3 | This directory contains code for repositories provided by this app. 4 | -------------------------------------------------------------------------------- /experimental/go-modules/templates/default/app.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | func main() { 8 | fmt.Println("Hello, world!") 9 | } 10 | -------------------------------------------------------------------------------- /incubator/node-red/templates/simple/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SampleAppsody-Node-RED-Project", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1 5 | } 6 | -------------------------------------------------------------------------------- /samples/sample-stack/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | # Dockerfile for building your application. Defines the final image that contains content from both the image and template. 2 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/sequence.ts: -------------------------------------------------------------------------------- 1 | import {MiddlewareSequence} from '@loopback/rest'; 2 | 3 | export class MySequence extends MiddlewareSequence {} 4 | -------------------------------------------------------------------------------- /experimental/nodejs-functions/templates/simple/function.js: -------------------------------------------------------------------------------- 1 | module.exports.url = '/' 2 | module.exports.get = function(req, res, next) { 3 | res.send('Hello from Appsody!') 4 | } 5 | -------------------------------------------------------------------------------- /experimental/rust-tide/templates/default/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | 3 | 4 | #Added by cargo 5 | # 6 | #already existing elements were commented out 7 | 8 | #/target 9 | Cargo.lock 10 | -------------------------------------------------------------------------------- /incubator/kitura/templates/default/Tests/LinuxMain.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | 3 | @testable import ApplicationTests 4 | 5 | XCTMain([ 6 | testCase(KituraStackTests.allTests), 7 | ]) 8 | -------------------------------------------------------------------------------- /incubator/swift/templates/simple/Tests/LinuxMain.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | 3 | import simpleTests 4 | 5 | var tests = [XCTestCaseEntry]() 6 | tests += simpleTests.allTests() 7 | XCTMain(tests) 8 | -------------------------------------------------------------------------------- /experimental/rust-tide/templates/default/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub fn app() -> tide::Server<()> { 2 | let mut api = tide::new(); 3 | api.at("/").get(|_| async { Ok("Hello, world!") }); 4 | api 5 | } -------------------------------------------------------------------------------- /incubator/kitura/image/project/deps/AppsodyKitura/Tests/LinuxMain.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | 3 | @testable import KituraAppsodyTests 4 | 5 | XCTMain([ 6 | testCase(RouteTests.allTests), 7 | ]) 8 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "bracketSpacing": false, 3 | "singleQuote": true, 4 | "printWidth": 80, 5 | "trailingComma": "all", 6 | "arrowParens": "avoid" 7 | } 8 | -------------------------------------------------------------------------------- /incubator/quarkus/image/project/.appsody-init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | which java 2>&1 >/dev/null ; JAVA_KNOWN=$? 3 | if [ ! -z "$JAVA_HOME" ] || [ $JAVA_KNOWN = "0" ]; then 4 | ./mvnw install -Denforcer.skip=true 5 | fi -------------------------------------------------------------------------------- /incubator/java-microprofile/templates/default/src/main/liberty/config/configDropins/defaults/quick-start-security.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /incubator/java-microprofile/image/project/.appsody-init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | which java 2>&1 >/dev/null ; JAVA_KNOWN=$? 3 | if [ ! -z "$JAVA_HOME" ] || [ $JAVA_KNOWN = "0" ]; then 4 | ./mvnw install -Denforcer.skip=true 5 | fi -------------------------------------------------------------------------------- /incubator/java-microprofile/image/project/server-dev.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | managedBeans-1.0 4 | websocket-1.1 5 | 6 | 7 | -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/src/main/liberty/config/configDropins/defaults/quick-start-security.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/image/project/.appsody-init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | which java 2>&1 >/dev/null ; JAVA_KNOWN=$? 3 | if [ ! -z "$JAVA_HOME" ] || [ $JAVA_KNOWN = "0" ]; then 4 | ./mvnw install -Denforcer.skip=true 5 | fi -------------------------------------------------------------------------------- /incubator/python-flask/templates/simple/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | name = "pypi" 3 | url = "https://pypi.org/simple" 4 | verify_ssl = true 5 | 6 | [dev-packages] 7 | 8 | [packages] 9 | 10 | [requires] 11 | python_version = "3.7" 12 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/templates/default/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #enable the actuator endpoints for health, metrics, and prometheus. 2 | management.endpoints.web.exposure.include=health,metrics,prometheus,liveness 3 | -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/kafka/test/test.js: -------------------------------------------------------------------------------- 1 | describe('Node.js Kafka Simple template', () => { 2 | describe('app', () => { 3 | it('can be required', () => { 4 | const App = require('../'); 5 | }); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /incubator/quarkus/image/project/.appsody-init.bat: -------------------------------------------------------------------------------- 1 | setlocal 2 | set JAVA_FOUND=0 3 | where java >nul 2>nul 4 | if %ERRORLEVEL% EQU 0 set JAVA_FOUND=1 5 | if defined JAVA_HOME set JAVA_FOUND=1 6 | if "%JAVA_FOUND%"=="1" mvnw install -Denforcer.skip=true 7 | -------------------------------------------------------------------------------- /incubator/java-microprofile/image/project/.appsody-init.bat: -------------------------------------------------------------------------------- 1 | setlocal 2 | set JAVA_FOUND=0 3 | where java >nul 2>nul 4 | if %ERRORLEVEL% EQU 0 set JAVA_FOUND=1 5 | if defined JAVA_HOME set JAVA_FOUND=1 6 | if "%JAVA_FOUND%"=="1" mvnw install -Denforcer.skip=true 7 | -------------------------------------------------------------------------------- /incubator/java-openliberty/image/project/.appsody-init.bat: -------------------------------------------------------------------------------- 1 | setlocal 2 | set JAVA_FOUND=0 3 | where java >nul 2>nul 4 | if %ERRORLEVEL% EQU 0 set JAVA_FOUND=1 5 | if defined JAVA_HOME set JAVA_FOUND=1 6 | if "%JAVA_FOUND%"=="1" mvnw install -Denforcer.skip=true 7 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/image/project/.appsody-init.bat: -------------------------------------------------------------------------------- 1 | setlocal 2 | set JAVA_FOUND=0 3 | where java >nul 2>nul 4 | if %ERRORLEVEL% EQU 0 set JAVA_FOUND=1 5 | if defined JAVA_HOME set JAVA_FOUND=1 6 | if "%JAVA_FOUND%"==1 mvnw install -Denforcer.skip=true -------------------------------------------------------------------------------- /incubator/swift/templates/simple/Tests/simpleTests/XCTestManifests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | 3 | #if !canImport(ObjectiveC) 4 | public func allTests() -> [XCTestCaseEntry] { 5 | return [ 6 | testCase(simpleTests.allTests), 7 | ] 8 | } 9 | #endif 10 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/default/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #enable the actuator endpoints for health, metrics, and prometheus. 2 | management.endpoints.web.exposure.include=health,metrics,prometheus,liveness 3 | opentracing.jaeger.log-spans = false 4 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kotlin/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #enable the actuator endpoints for health, metrics, and prometheus. 2 | management.endpoints.web.exposure.include=health,metrics,prometheus,liveness 3 | opentracing.jaeger.log-spans = false 4 | -------------------------------------------------------------------------------- /samples/sample-stack/README.md: -------------------------------------------------------------------------------- 1 | # Sample Stack 2 | 3 | Readme explaining in detail about this stack 4 | 5 | Explain the stack and each template that is part of the stack 6 | 7 | - How can a user start using this pack for application development 8 | 9 | - links to getting started guides etc. -------------------------------------------------------------------------------- /experimental/rust-tide/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Rust Tide 2 | version: 0.3.0 3 | description: Tide web framework for Rust 4 | license: Apache-2.0 5 | language: rust 6 | maintainers: 7 | - name: Anton Whalley 8 | email: anton@venshare.com 9 | github-id: No9 10 | default-template: default -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/project/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/tsconfig", 3 | "extends": "@loopback/build/config/tsconfig.common.json", 4 | "compilerOptions": { 5 | "outDir": "dist", 6 | "rootDir": "src" 7 | }, 8 | "include": ["src"] 9 | } 10 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/tsconfig", 3 | "extends": "@loopback/build/config/tsconfig.common.json", 4 | "compilerOptions": { 5 | "outDir": "dist", 6 | "rootDir": "src" 7 | }, 8 | "include": ["src"] 9 | } 10 | -------------------------------------------------------------------------------- /incubator/python-flask/image/project/Pipfile: -------------------------------------------------------------------------------- 1 | [[source]] 2 | name = "pypi" 3 | url = "https://pypi.org/simple" 4 | verify_ssl = true 5 | 6 | [dev-packages] 7 | 8 | [packages] 9 | Flask = "==1.1.1" 10 | flasgger = "==0.9.3" 11 | prometheus_client = "*" 12 | 13 | [requires] 14 | python_version = "3.7" -------------------------------------------------------------------------------- /incubator/node-red/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Node-RED 2 | version: 0.1.3 3 | description: Node-RED runtime for running flows 4 | license: Apache-2.0 5 | language: nodejs 6 | maintainers: 7 | - name: Nick O'Leary 8 | email: nick.oleary@gmail.com 9 | github-id: knolleary 10 | default-template: simple 11 | -------------------------------------------------------------------------------- /experimental/vertx/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Eclipse Vert.x 2 | version: 0.1.4 3 | description: Eclipse Vert.x runtime for running Java applications 4 | license: EPL-2.0 5 | language: java 6 | maintainers: 7 | - name: Erik Jan de Wit 8 | email: edewit@redhat.com 9 | github-id: edewit 10 | default-template: default -------------------------------------------------------------------------------- /incubator/starter/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Starter Sample 2 | version: 0.1.3 3 | description: Runnable starter stack, copy to create a new stack 4 | license: Apache-2.0 5 | language: bash 6 | maintainers: 7 | - name: Henry Nash 8 | email: henry.nash@uk.ibm.com 9 | github-id: henrynash 10 | default-template: simple -------------------------------------------------------------------------------- /experimental/go-modules/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Go Modules 2 | version: 0.1.0 3 | description: Runtime for Go using Go 1.11+ modules for dependencies 4 | license: Apache-2.0 5 | language: go 6 | maintainers: 7 | - name: John Pape 8 | email: jpapejr@icloud.com 9 | github-id: jpapejr 10 | default-template: default 11 | -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/src/main/java/dev/appsody/starter/StarterApplication.java: -------------------------------------------------------------------------------- 1 | package dev.appsody.starter; 2 | 3 | import javax.ws.rs.ApplicationPath; 4 | import javax.ws.rs.core.Application; 5 | 6 | @ApplicationPath("/starter") 7 | public class StarterApplication extends Application { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /incubator/java-microprofile/templates/default/src/main/java/dev/appsody/starter/StarterApplication.java: -------------------------------------------------------------------------------- 1 | package dev.appsody.starter; 2 | 3 | import javax.ws.rs.ApplicationPath; 4 | import javax.ws.rs.core.Application; 5 | 6 | @ApplicationPath("/starter") 7 | public class StarterApplication extends Application { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /incubator/python-flask/image/project/server/__init__.py: -------------------------------------------------------------------------------- 1 | from flask import Flask 2 | 3 | app = Flask(__name__) 4 | 5 | from userapp import * 6 | 7 | from server.routes.health import health_bp 8 | app.register_blueprint(health_bp) 9 | from server.routes.prometheus import metrics_bp 10 | app.register_blueprint(metrics_bp) 11 | 12 | -------------------------------------------------------------------------------- /experimental/rust/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | version: 1.0.0 7 | applicationImage: APPSODY_DOCKER_IMAGE 8 | stack: rust 9 | service: 10 | type: NodePort 11 | port: APPSODY_PORT 12 | expose: true -------------------------------------------------------------------------------- /incubator/python-flask/image/project/constraints.txt: -------------------------------------------------------------------------------- 1 | # Remove this file when the the next flasgger release comes out that fixes the 2 | # issue that the current requireent is incorrectly set at < 3.0.0. At that point we 3 | # can add flasgger back into the regular xx and remove the specific install in Dockerfile-stack 4 | jsonschema>3.0.0 5 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/default/src/test/java/org/acme/quickstart/NativeGreetingResourceIT.java: -------------------------------------------------------------------------------- 1 | package org.acme.quickstart; 2 | 3 | import io.quarkus.test.junit.NativeImageTest; 4 | 5 | @NativeImageTest 6 | public class NativeGreetingResourceIT extends GreetingResourceTest { 7 | 8 | // Execute the same tests but in native mode. 9 | } -------------------------------------------------------------------------------- /incubator/quarkus/templates/kafka/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach java debugger", 6 | "type": "java", 7 | "request": "attach", 8 | "hostName": "localhost", 9 | "port": 5005 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /ci/assets 2 | /ci/package 3 | /ci/build 4 | /ci/release 5 | /ci/nginx/docker-compose.override.yml 6 | **/00_local 7 | **/.DS_Store 8 | **/node_modules 9 | **/cli 10 | **/*.log 11 | **/target 12 | **/.settings 13 | **/.project 14 | **/.classpath 15 | .*.swp 16 | __pycache__/ 17 | *.py[cod] 18 | 19 | ### Intellij ### 20 | *.iml 21 | .idea 22 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/default/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach java debugger", 6 | "type": "java", 7 | "request": "attach", 8 | "hostName": "localhost", 9 | "port": 5005 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /incubator/quarkus/templates/default/src/main/java/org/acme/quickstart/GreetingService.java: -------------------------------------------------------------------------------- 1 | package org.acme.quickstart; 2 | 3 | import javax.enterprise.context.ApplicationScoped; 4 | 5 | @ApplicationScoped 6 | public class GreetingService { 7 | 8 | public String greeting(String name) { 9 | return "hello " + name; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /experimental/rust/templates/simple/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rust-simple" 3 | version = "0.1.0" 4 | authors = ["Name "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | 11 | [[bin]] 12 | name = "rust-simple" 13 | path = "src/main.rs" -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kotlin/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach java debugger", 6 | "type": "java", 7 | "request": "attach", 8 | "hostName": "localhost", 9 | "port": 5005 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /incubator/java-microprofile/templates/default/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach java debugger", 6 | "type": "java", 7 | "request": "attach", 8 | "hostName": "localhost", 9 | "port": 7777 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/default/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach java debugger", 6 | "type": "java", 7 | "request": "attach", 8 | "hostName": "localhost", 9 | "port": 5005 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach java debugger", 6 | "type": "java", 7 | "request": "attach", 8 | "hostName": "localhost", 9 | "port": 7777 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kotlin/src/main/kotlin/application/Main.kt: -------------------------------------------------------------------------------- 1 | package application 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication 4 | import org.springframework.boot.runApplication 5 | 6 | @SpringBootApplication 7 | class Main 8 | 9 | fun main(args: Array) { 10 | runApplication
(*args) 11 | } 12 | 13 | -------------------------------------------------------------------------------- /incubator/nodejs/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | expose: true 14 | -------------------------------------------------------------------------------- /incubator/quarkus/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Quarkus 2 | version: 0.5.1 3 | description: Quarkus runtime for running Java applications 4 | license: Apache-2.0 5 | language: java 6 | maintainers: 7 | - name: Paul Robinson 8 | email: probinso@redhat.com 9 | github-id: paulrobinson 10 | default-template: default 11 | requirements: 12 | appsody-version: ">= 0.6.0" 13 | -------------------------------------------------------------------------------- /incubator/swift/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | expose: true 14 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/templates/default/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach java debugger", 6 | "type": "java", 7 | "request": "attach", 8 | "hostName": "localhost", 9 | "port": 7777 10 | } 11 | ] 12 | } -------------------------------------------------------------------------------- /experimental/go-modules/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | expose: true 14 | -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/src/main/java/dev/appsody/starter/StarterResource.java: -------------------------------------------------------------------------------- 1 | package dev.appsody.starter; 2 | 3 | import javax.ws.rs.GET; 4 | import javax.ws.rs.Path; 5 | 6 | @Path("/resource") 7 | public class StarterResource { 8 | 9 | @GET 10 | public String getRequest() { 11 | return "StarterResource response"; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [{ 4 | "name": "Appsody: Attach node debugger", 5 | "type": "node", 6 | "request": "attach", 7 | "port": 9229, 8 | "remoteRoot": "/project/user-app", 9 | "localRoot": "${workspaceFolder}", 10 | "protocol": "inspector" 11 | }] 12 | } 13 | -------------------------------------------------------------------------------- /incubator/starter/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | # Dockerfile for building your application. 2 | # Defines the final image that contains content from both the image and template. 3 | 4 | FROM registry.access.redhat.com/ubi7/ubi 5 | 6 | WORKDIR /project 7 | 8 | COPY . ./ 9 | 10 | EXPOSE 8080 11 | 12 | # Pass control your application 13 | CMD ["/bin/bash", "/project/userapp/hello.sh"] -------------------------------------------------------------------------------- /experimental/rust/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Rust 2 | version: 0.3.0 3 | description: Runtime for Rust applications 4 | license: Apache-2.0 5 | language: rust 6 | maintainers: 7 | - name: Sandy Koh 8 | email: sandy.koh@ibm.com 9 | github-id: skoh7645 10 | - name: Enrique Lacal 11 | email: enrique.lacal.bereslawski@ibm.com 12 | github-id: EnriqueL8 13 | default-template: simple -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/scaffold/routes/index.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const router = express.Router(); 3 | 4 | router.get('/', (req, res) => { 5 | // Use req.log (a `pino` instance) to log JSON: 6 | req.log.info({message: 'Hello Express!!!'}); 7 | res.render('index', {msg: 'Hello Express!!!'}); 8 | }); 9 | 10 | module.exports = router; 11 | -------------------------------------------------------------------------------- /experimental/rocket/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Rocket 2 | version: 0.1.1 3 | description: Rocket web framework for Rust 4 | license: Apache-2.0 5 | language: rust 6 | maintainers: 7 | - name: Sandy Koh 8 | email: sandy.koh@ibm.com 9 | github-id: skoh7645 10 | - name: Enrique Lacal 11 | email: enrique.lacal.bereslawski@ibm.com 12 | github-id: EnriqueL8 13 | default-template: simple -------------------------------------------------------------------------------- /incubator/kitura/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Kitura 2 | version: 0.2.6 3 | description: Runtime for Kitura applications 4 | license: Apache-2.0 5 | language: swift 6 | maintainers: 7 | - name: Ian Partridge 8 | email: i.partridge@uk.ibm.com 9 | github-id: ianpartridge 10 | - name: David Jones 11 | email: djones6@uk.ibm.com 12 | github-id: djones6 13 | default-template: default 14 | -------------------------------------------------------------------------------- /incubator/java-microprofile/templates/default/src/main/webapp/WEB-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/src/main/webapp/WEB-INF/beans.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /incubator/nodejs/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Node.js 2 | version: 0.4.0 3 | description: Runtime for Node.js applications 4 | license: Apache-2.0 5 | language: nodejs 6 | maintainers: 7 | - name: Gireesh Punathil 8 | email: gpunathi@in.ibm.com 9 | github-id: gireeshpunathil 10 | default-template: simple 11 | requirements: 12 | docker-version: ">= 17.09.0" 13 | appsody-version: ">= 0.2.7" 14 | -------------------------------------------------------------------------------- /experimental/rocket/templates/simple/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 6 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 7 | Cargo.lock 8 | 9 | # These are backup files generated by rustfmt 10 | **/*.rs.bk -------------------------------------------------------------------------------- /experimental/rust/templates/simple/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | 5 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 6 | # More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html 7 | Cargo.lock 8 | 9 | # These are backup files generated by rustfmt 10 | **/*.rs.bk -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kotlin/src/main/kotlin/application/Hello.kt: -------------------------------------------------------------------------------- 1 | package application 2 | 3 | import org.springframework.web.bind.annotation.RestController 4 | import org.springframework.web.bind.annotation.GetMapping 5 | 6 | @RestController 7 | class Hello { 8 | 9 | @GetMapping("/hello") 10 | fun hello(): String { 11 | return "Hello, Appsody!" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /experimental/rust-tide/image/project/server/bin/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rust:1.44.0-buster 2 | # This file is used to publish the server as a base image. 3 | # docker build -t docker.io/number9/rust-tide-base:v1.0.0 . 4 | # docker push docker.io/number9/rust-tide-base:v1.0.0 . 5 | 6 | WORKDIR "/project/server/bin" 7 | 8 | COPY Cargo.toml ./ 9 | 10 | WORKDIR "/project/server/bin/src" 11 | 12 | COPY src ./ 13 | -------------------------------------------------------------------------------- /incubator/node-red/templates/simple/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "SampleAppsody-Node-RED-Project", 3 | "description": "A sample Node-RED Project created with Appsody", 4 | "version": "0.1.0", 5 | "dependencies": {}, 6 | "node-red": { 7 | "settings": { 8 | "flowFile": "flow.json", 9 | "credentialsFile": "flow_cred.json" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/stack.yaml: -------------------------------------------------------------------------------- 1 | name: LoopBack 4 2 | version: 0.4.0 3 | description: LoopBack 4 API Framework for Node.js 4 | maintainers: 5 | - name: Raymond Feng 6 | email: enjoyjava@gmail.com 7 | github-id: raymondfeng 8 | default-template: scaffold 9 | language: nodejs 10 | license: Apache-2.0 11 | requirements: 12 | docker-version: ">= 17.09.0" 13 | appsody-version: ">= 0.2.7" 14 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kafka/src/main/java/application/Main.java: -------------------------------------------------------------------------------- 1 | package application; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class Main { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(Main.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /experimental/rocket/templates/simple/src/tests.rs: -------------------------------------------------------------------------------- 1 | use super::rocket; 2 | use rocket::local::Client; 3 | use rocket::http::Status; 4 | 5 | #[test] 6 | fn hello_world() { 7 | let client = Client::new(rocket()).unwrap(); 8 | let mut response = client.get("/").dispatch(); 9 | assert_eq!(response.status(), Status::Ok); 10 | assert_eq!(response.body_string(), Some("Hello from Appsody!".into())); 11 | } -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/default/src/main/java/application/Main.java: -------------------------------------------------------------------------------- 1 | package application; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class Main { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(Main.class, args); 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /incubator/nodejs-express/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Node.js Express 2 | version: 0.4.13 3 | description: Express web framework for Node.js 4 | license: Apache-2.0 5 | language: nodejs 6 | maintainers: 7 | - name: Gireesh Punathil 8 | email: gpunathi@in.ibm.com 9 | github-id: gireeshpunathil 10 | default-template: simple 11 | requirements: 12 | docker-version: ">= 17.09.0" 13 | appsody-version: ">= 0.2.7" 14 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/templates/default/src/main/java/application/Main.java: -------------------------------------------------------------------------------- 1 | package application; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class Main { 8 | 9 | public static void main(String[] args) { 10 | SpringApplication.run(Main.class, args); 11 | } 12 | 13 | } -------------------------------------------------------------------------------- /experimental/rust-tide/templates/default/tests/test-lib.rs: -------------------------------------------------------------------------------- 1 | use async_std::task; 2 | 3 | #[test] 4 | fn hello_world() -> Result<(), http_types::Error> { 5 | task::block_on(async { 6 | let string = surf::get(format!("http://127.0.0.1:{}", 8000)) 7 | .recv_string() 8 | .await 9 | .unwrap(); 10 | assert_eq!(string, "Hello, world!".to_string()); 11 | Ok(()) 12 | }) 13 | } -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/scaffold/app.js: -------------------------------------------------------------------------------- 1 | module.exports = (/*options*/) => { 2 | // Use options.server to access http.Server. Example of socket.io: 3 | // const io = require('socket.io')(options.server) 4 | const app = require('express')() 5 | 6 | app.set('views', __dirname + "/views"); 7 | app.set('view engine', 'pug'); 8 | 9 | app.use('/', require('./routes')); 10 | 11 | return app; 12 | }; 13 | -------------------------------------------------------------------------------- /experimental/rocket/templates/simple/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rocket-simple" 3 | version = "0.1.0" 4 | authors = ["Name "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | appsody-rocket = { path = ".appsody" } 11 | rocket = "0.4.2" 12 | 13 | [[bin]] 14 | name = "rocket-simple" 15 | path = "src/main.rs" -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/controllers/README.md: -------------------------------------------------------------------------------- 1 | # Controllers 2 | 3 | This directory contains source files for the controllers exported by this app. 4 | 5 | To add a new empty controller, type in `lb4 controller []` from the 6 | command-line of your application's root directory. 7 | 8 | For more information, please visit 9 | [Controller generator](http://loopback.io/doc/en/lb4/Controller-generator.html). 10 | -------------------------------------------------------------------------------- /incubator/nodejs/image/project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs", 3 | "version": "0.3.6", 4 | "description": "Node.js Stack", 5 | "license": "Apache-2.0", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/appsody/stacks.git", 9 | "directory": "incubator/nodejs/image/project" 10 | }, 11 | "dependencies": {}, 12 | "devDependencies": { 13 | "appmetrics-dash": "^5.0.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /experimental/rust-tide/image/project/test-stack.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cargo build --manifest-path ../server/bin/Cargo.toml 4 | cargo run --manifest-path ../server/bin/Cargo.toml & 5 | 6 | until $(curl --output /dev/null --silent --head --fail http://127.0.0.1:8000); do 7 | printf '.'; 8 | sleep 0.2; 9 | done 10 | 11 | cargo test --manifest-path ../server/bin/Cargo.toml -p rust-tide-default 12 | kill -9 $(pidof rust-tide-server) -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/.gitignore: -------------------------------------------------------------------------------- 1 | !.keep 2 | 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /nbbuild/ 22 | /dist/ 23 | /nbdist/ 24 | /.nb-gradle/ 25 | /build/ 26 | 27 | ### VS Code ### 28 | .vscode/ 29 | -------------------------------------------------------------------------------- /experimental/go-modules/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | # Install the app dependencies in a full Node docker image 2 | FROM golang:1.12-alpine3.10 3 | 4 | 5 | # Install user-app dependencies 6 | WORKDIR "/project/user-app" 7 | RUN apk add --update git bash 8 | COPY ./user-app/* ./ 9 | RUN if [ -e /project/user-app/.vendor-me.sh ]; then bash /project/user-app/.vendor-me.sh; fi 10 | RUN go build -o /app ./... 11 | RUN chmod +x /app 12 | CMD ["/app"] 13 | -------------------------------------------------------------------------------- /experimental/rocket/image/project/deps/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "appsody-rocket" 3 | version = "0.1.0" 4 | description = "Package containing dependencies for the Appsody Rocket stack" 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | rocket = "0.4.2" 11 | rocket_prometheus = "0.3.0" 12 | 13 | [lib] 14 | path = "src/lib.rs" 15 | test = true -------------------------------------------------------------------------------- /incubator/quarkus/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | monitoring: 14 | labels: 15 | k8s-app: APPSODY_PROJECT_NAME 16 | expose: true 17 | -------------------------------------------------------------------------------- /incubator/swift/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Swift 2 | version: 0.3.0 3 | description: Appsody runtime for Swift applications 4 | license: Apache-2.0 5 | language: swift 6 | maintainers: 7 | - name: Ian Partridge 8 | email: i.partridge@uk.ibm.com 9 | github-id: ianpartridge 10 | - name: David Jones 11 | email: djones6@uk.ibm.com 12 | github-id: djones6 13 | default-template: simple 14 | requirements: 15 | appsody-version: ">= 0.2.7" 16 | -------------------------------------------------------------------------------- /incubator/java-microprofile/templates/default/.gitignore: -------------------------------------------------------------------------------- 1 | /target/* 2 | !.keep 3 | 4 | 5 | ### STS ### 6 | .apt_generated 7 | .classpath 8 | .factorypath 9 | .project 10 | .settings 11 | .springBeans 12 | .sts4-cache 13 | 14 | ### IntelliJ IDEA ### 15 | .idea 16 | *.iws 17 | *.iml 18 | *.ipr 19 | 20 | ### NetBeans ### 21 | /nbproject/private/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ 26 | /build/ 27 | 28 | ### VS Code ### 29 | .vscode/ -------------------------------------------------------------------------------- /incubator/java-microprofile/templates/default/src/main/liberty/config/server.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | microProfile-3.0 4 | 5 | 6 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/src/main/liberty/config/server.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | microProfile-3.2 4 | 5 | 6 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/image/project/.appsody-init.bat: -------------------------------------------------------------------------------- 1 | if not exist %SystemDrive%%HOMEPATH%\.m2\repository\ ( 2 | mkdir %SystemDrive%%HOMEPATH%\.m2\repository 3 | ) 4 | 5 | copy mvnw*.* .. >nul 6 | mkdir ..\.mvn 7 | robocopy .mvn ..\.mvn /e /njh /njs /ndl /nc /ns >nul 8 | 9 | where java >nul 2>nul 10 | if %ERRORLEVEL% EQU 0 ( 11 | if defined JAVA_HOME ( 12 | ..\mvnw install -q -f ./{{.stack.parentpomfilename}} 13 | ) 14 | ) -------------------------------------------------------------------------------- /incubator/nodejs/templates/simple/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach node debugger", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "remoteRoot": "/project/user-app", 10 | "localRoot": "${workspaceFolder}", 11 | "protocol": "inspector" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/kafka/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach node debugger", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "remoteRoot": "/project/user-app", 10 | "localRoot": "${workspaceFolder}", 11 | "protocol": "inspector" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kotlin/.gitignore: -------------------------------------------------------------------------------- 1 | /target/* 2 | .appsody-spring-trigger 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /nbbuild/ 22 | /dist/ 23 | /nbdist/ 24 | /.nb-gradle/ 25 | /build/ 26 | 27 | ### VS Code ### 28 | .vscode/ -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/scaffold/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach node debugger", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "remoteRoot": "/project/user-app", 10 | "localRoot": "${workspaceFolder}", 11 | "protocol": "inspector" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/simple/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach node debugger", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "remoteRoot": "/project/user-app", 10 | "localRoot": "${workspaceFolder}", 11 | "protocol": "inspector" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/templates/default/.gitignore: -------------------------------------------------------------------------------- 1 | /target/* 2 | !.keep 3 | 4 | 5 | ### STS ### 6 | .apt_generated 7 | .classpath 8 | .factorypath 9 | .project 10 | .settings 11 | .springBeans 12 | .sts4-cache 13 | 14 | ### IntelliJ IDEA ### 15 | .idea 16 | *.iws 17 | *.iml 18 | *.ipr 19 | 20 | ### NetBeans ### 21 | /nbproject/private/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ 26 | /build/ 27 | 28 | ### VS Code ### 29 | .vscode/ -------------------------------------------------------------------------------- /experimental/rust-tide/image/project/server/bin/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rust-tide-server" 3 | version = "0.1.0" 4 | authors = ["Anton Whalley "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | tide = { version = "0.11" } 11 | async-std = { version = "1" } 12 | application = { package = "rust-tide-default", path = "/project/user-app"} -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kafka/.gitignore: -------------------------------------------------------------------------------- 1 | /target/* 2 | .appsody-spring-trigger 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /nbbuild/ 22 | /dist/ 23 | /nbdist/ 24 | /.nb-gradle/ 25 | /build/ 26 | 27 | ### VS Code ### 28 | .vscode/ 29 | -------------------------------------------------------------------------------- /incubator/nodejs/templates/simple/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-simple", 3 | "version": "0.1.0", 4 | "description": "Simple Node.js application", 5 | "license": "Apache-2.0", 6 | "scripts": { 7 | "start": "node app.js", 8 | "debug": "node --inspect app.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/appsody/stacks.git", 13 | "directory": "incubator/nodejs/templates/simple" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/default/.gitignore: -------------------------------------------------------------------------------- 1 | /target/* 2 | .appsody-spring-trigger 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /nbbuild/ 22 | /dist/ 23 | /nbdist/ 24 | /.nb-gradle/ 25 | /build/ 26 | 27 | ### VS Code ### 28 | .vscode/ 29 | -------------------------------------------------------------------------------- /incubator/java-microprofile/image/project/install-dev-deps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | mvn -Dmaven.repo.local=/mvn/repository dependency:copy-dependencies@copy-dropin dependency:copy-dependencies@copy-resource dependency:copy-dependencies@copy-asm -f /project/pom-dev.xml 3 | mkdir -p /project/user-app/target/liberty/wlp/usr/servers/defaultServer/configDropins/defaults 4 | cp /project/server-dev.xml /project/user-app/target/liberty/wlp/usr/servers/defaultServer/configDropins/defaults/server.xml 5 | -------------------------------------------------------------------------------- /experimental/nodejs-functions/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Node.js Functions 2 | version: 0.2.1 3 | description: Serverless runtime for Node.js functions 4 | license: Apache-2.0 5 | language: nodejs 6 | maintainers: 7 | - name: Chris Bailey 8 | email: cnbailey@gmail.com 9 | github-id: seabaylea 10 | - name: Gireesh Punathil 11 | email: gpunathi@in.ibm.com 12 | github-id: gireeshpunathil 13 | default-template: simple 14 | requirements: 15 | appsody-version: ">= 0.2.7" 16 | -------------------------------------------------------------------------------- /experimental/nodejs-functions/templates/simple/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Appsody: Attach node debugger", 6 | "type": "node", 7 | "request": "attach", 8 | "port": 9229, 9 | "remoteRoot": "/project/user-app/functions", 10 | "localRoot": "${workspaceFolder}", 11 | "protocol": "inspector" 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /experimental/rocket/templates/simple/src/main.rs: -------------------------------------------------------------------------------- 1 | #![feature(proc_macro_hygiene, decl_macro)] 2 | 3 | use appsody_rocket; 4 | 5 | #[macro_use] extern crate rocket; 6 | 7 | #[get("/")] 8 | fn world() -> &'static str { 9 | "Hello from Appsody!" 10 | } 11 | 12 | fn rocket() -> rocket::Rocket { 13 | appsody_rocket::initialize_metrics().mount("/", routes![world]) 14 | } 15 | 16 | fn main() { 17 | rocket().launch(); 18 | } 19 | 20 | #[cfg(test)] 21 | mod tests; 22 | 23 | -------------------------------------------------------------------------------- /incubator/python-flask/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Python Flask 2 | version: 0.2.4 3 | description: Flask web Framework for Python 4 | language: python 5 | maintainers: 6 | - name: Chris Bailey 7 | email: cnbailey@gmail.com 8 | github-id: seabaylea 9 | - name: Henry Nash 10 | email: henry.nash@uk.ibm.com 11 | github-id: henrynash 12 | default-template: simple 13 | license: Apache-2.0 14 | requirements: 15 | appsody-version: ">= 0.2.7" 16 | docker-version: ">= 17.09.0" 17 | -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/simple/app.js: -------------------------------------------------------------------------------- 1 | module.exports = (/*options*/) => { 2 | // Use options.server to access http.Server. Example with socket.io: 3 | // const io = require('socket.io')(options.server) 4 | const app = require('express')() 5 | 6 | app.get('/', (req, res) => { 7 | // Use req.log (a `pino` instance) to log JSON: 8 | req.log.info({message: 'Hello from Appsody!'}); 9 | res.send('Hello from Appsody!'); 10 | }); 11 | 12 | return app; 13 | }; 14 | -------------------------------------------------------------------------------- /experimental/rust-tide/templates/default/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rust-tide-default" 3 | version = "0.1.0" 4 | authors = ["Anton Whalley "] 5 | edition = "2018" 6 | 7 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 8 | 9 | [dependencies] 10 | tide = { version = "0.11" } 11 | http-types = "2.0.1" 12 | async-std = { version = "1" } 13 | surf = { version = "2.0.0-alpha.3", default-features = false, features = ["h1-client"] } -------------------------------------------------------------------------------- /experimental/rocket/image/project/.appsody-init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Create local copy of package dependencies to enable building while developing locally. 4 | # 5 | set -e 6 | 7 | # Current directory is .appsody-init, which is a child of the user's 8 | # project directory, so we copy the dependencies to a .appsody directory 9 | # one level up. 10 | ls && cp -R -p ./deps ../.appsody 11 | 12 | # Mark dependency source code as read-only 13 | find ../.appsody -type f -name '*.rs' -exec chmod ugo-w {} \; -------------------------------------------------------------------------------- /incubator/starter/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | #Configuration file for deploying an appsody project 2 | 3 | #For more information, see: https://github.com/appsody/appsody-operator/blob/master/doc/user-guide.md 4 | 5 | apiVersion: appsody.dev/v1beta1 6 | kind: AppsodyApplication 7 | metadata: 8 | name: APPSODY_PROJECT_NAME 9 | spec: 10 | version: 1.0.0 11 | applicationImage: APPSODY_DOCKER_IMAGE 12 | stack: APPSODY_STACK 13 | service: 14 | type: NodePort 15 | port: APPSODY_PORT 16 | expose: true -------------------------------------------------------------------------------- /samples/sample-stack/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | #Configuration file for deploying an appsody project 2 | 3 | #For more information, see: https://github.com/appsody/appsody-operator/blob/master/doc/user-guide.md 4 | 5 | apiVersion: appsody.dev/v1beta1 6 | kind: AppsodyApplication 7 | metadata: 8 | name: APPSODY_PROJECT_NAME 9 | spec: 10 | version: 1.0.0 11 | applicationImage: APPSODY_DOCKER_IMAGE 12 | stack: sample-stack 13 | service: 14 | type: NodePort 15 | port: APPSODY_PORT 16 | expose: true -------------------------------------------------------------------------------- /experimental/rust-tide/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | #Configuration file for deploying an appsody project 2 | 3 | #For more information, see: https://github.com/appsody/appsody-operator/blob/master/doc/user-guide.md 4 | 5 | apiVersion: appsody.dev/v1beta1 6 | kind: AppsodyApplication 7 | metadata: 8 | name: APPSODY_PROJECT_NAME 9 | spec: 10 | version: 1.0.0 11 | applicationImage: APPSODY_DOCKER_IMAGE 12 | stack: APPSODY_STACK 13 | service: 14 | type: NodePort 15 | port: APPSODY_PORT 16 | expose: true -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Spring Boot® on Open Liberty 2 | version: 0.1.11 3 | description: Spring Boot on Open Liberty & OpenJ9 using Maven 4 | license: Apache-2.0 5 | language: java 6 | maintainers: 7 | - name: Ozzy 8 | email: ozzy@ca.ibm.com 9 | github-id: bardweller 10 | default-template: default 11 | requirements: 12 | appsody-version: ">= 0.5.0" 13 | templating-data: 14 | parentpomgroup: dev.appsody 15 | parentpomid: java-spring-boot2-liberty 16 | parentpomrange: '[0.1, 0.2)' -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/index.ts: -------------------------------------------------------------------------------- 1 | import {DemoApplication} from './application'; 2 | import {ApplicationConfig} from '@loopback/core'; 3 | 4 | export {DemoApplication}; 5 | 6 | export async function main(options: ApplicationConfig = {}) { 7 | const app = new DemoApplication(options); 8 | await app.boot(); 9 | await app.start(); 10 | 11 | const url = app.restServer.url; 12 | console.log(`Server is running at ${url}`); 13 | console.log(`Try ${url}/ping`); 14 | 15 | return app; 16 | } 17 | -------------------------------------------------------------------------------- /incubator/kitura/image/project/.appsody-init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Create local copy of package dependencies to enable building and code 4 | # completion while developing locally. 5 | # 6 | set -e 7 | 8 | # Current directory is .appsody-init, which is a child of the user's 9 | # project directory, so we copy the dependencies to a .appsody directory 10 | # one level up. 11 | cp -R -p ./deps ../.appsody 12 | 13 | # Mark dependency source code as read-only 14 | find ../.appsody -type f -name '*.swift' -exec chmod ugo-w {} \; 15 | -------------------------------------------------------------------------------- /incubator/python-flask/image/project/test/apptests.py: -------------------------------------------------------------------------------- 1 | from server import app 2 | import unittest 3 | 4 | class ServerTestCase(unittest.TestCase): 5 | 6 | def setUp(self): 7 | # create a test client 8 | self.app = app.test_client() 9 | self.app.testing = True 10 | 11 | def tearDown(self): 12 | pass 13 | 14 | def test_health_endpoint(self): 15 | result = self.app.get('/health') 16 | assert b'UP' in result.data 17 | 18 | if __name__ == '__main__': 19 | unittest.main() -------------------------------------------------------------------------------- /incubator/python-flask/image/project/server/routes/health.py: -------------------------------------------------------------------------------- 1 | from flask import Blueprint,jsonify 2 | from flasgger import Swagger 3 | 4 | health_bp = Blueprint("health", __name__) 5 | 6 | @health_bp.route("/health") 7 | def Health(): 8 | """Health of the service 9 | Return the status of the service. 10 | --- 11 | responses: 12 | 200: 13 | description: The state of the service 14 | examples: 15 | status: UP 16 | """ 17 | state = {"status": "UP"} 18 | return jsonify(state) 19 | -------------------------------------------------------------------------------- /incubator/kitura/templates/default/Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.1 2 | import PackageDescription 3 | 4 | let package = Package( 5 | name: "server", 6 | dependencies: [ 7 | .package(path: ".appsody/AppsodyKitura"), 8 | ], 9 | targets: [ 10 | .target(name: "server", dependencies: [ .target(name: "Application") ]), 11 | .target(name: "Application", dependencies: [ "AppsodyKitura" ]), 12 | .testTarget(name: "ApplicationTests" , dependencies: [.target(name: "Application"), "AppsodyKitura" ]) 13 | ] 14 | ) 15 | -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/kafka/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-express-kafka", 3 | "version": "1.0.0", 4 | "description": "Kafka Node.js Express application", 5 | "license": "Apache-2.0", 6 | "main": "app.js", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/appsody/stacks.git", 10 | "directory": "incubator/nodejs-express/templates/kafka" 11 | }, 12 | "scripts": { 13 | "test": "mocha" 14 | }, 15 | "devDependencies": { 16 | "chai": "^4.2.0", 17 | "mocha": "^7.1.1" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /incubator/python-flask/templates/simple/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "Python: Remote Attach", 6 | "type": "python", 7 | "request": "attach", 8 | "port": 5678, 9 | "host": "localhost", 10 | "pathMappings": [ 11 | { 12 | "localRoot": "${workspaceFolder}/", 13 | "remoteRoot": "/project/userapp" 14 | } 15 | ] 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /experimental/rocket/image/project/deps/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![feature(proc_macro_hygiene, decl_macro)] 2 | 3 | use rocket_prometheus::PrometheusMetrics; 4 | #[macro_use] extern crate rocket; 5 | 6 | #[get("/")] 7 | fn health() -> &'static str { 8 | "{ status: UP }" 9 | } 10 | 11 | pub fn initialize_metrics() -> rocket::Rocket { 12 | let prometheus = PrometheusMetrics::new(); 13 | rocket::ignite() 14 | .mount("/health", routes![health]) 15 | .attach(prometheus.clone()) 16 | .mount("/metrics", prometheus) 17 | } 18 | 19 | #[cfg(test)] 20 | mod tests; -------------------------------------------------------------------------------- /experimental/rocket/image/project/deps/src/tests.rs: -------------------------------------------------------------------------------- 1 | use rocket::local::Client; 2 | use rocket::http::Status; 3 | use crate::initialize_metrics; 4 | 5 | #[test] 6 | fn metrics() { 7 | let client = Client::new(initialize_metrics()).unwrap(); 8 | let response = client.get("/metrics").dispatch(); 9 | assert_eq!(response.status(), Status::Ok) 10 | } 11 | 12 | #[test] 13 | fn random() { 14 | let client = Client::new(initialize_metrics()).unwrap(); 15 | let response = client.get("/random").dispatch(); 16 | assert_eq!(response.status(), Status::NotFound); 17 | } -------------------------------------------------------------------------------- /experimental/nodejs-functions/templates/simple/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-functions-simple", 3 | "version": "0.1.1", 4 | "description": "Simple Node.js Functions application", 5 | "license": "Apache-2.0", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/appsody/stacks.git", 9 | "directory": "experimental/nodejs-functions/templates/simple" 10 | }, 11 | "scripts": { 12 | "test": "mocha" 13 | }, 14 | "devDependencies": { 15 | "chai": "^4.2.0", 16 | "mocha": "^7.1.1", 17 | "request": "^2.88.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /experimental/vertx/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM adoptopenjdk/openjdk8-openj9 as build 2 | 3 | RUN apt-get update && \ 4 | apt-get install -y maven unzip 5 | 6 | COPY . /project 7 | 8 | # Install user-app dependencies 9 | WORKDIR /project/user-app 10 | COPY ./user-app/src ./src 11 | COPY ./user-app/pom.xml ./ 12 | RUN mvn -B clean package 13 | 14 | FROM adoptopenjdk:8-jre-openj9 15 | 16 | WORKDIR /work/ 17 | COPY --from=build /project/user-app/target/*.jar /work/ 18 | 19 | RUN chmod 775 /work 20 | EXPOSE 8080 21 | ENTRYPOINT ["sh", "-c"] 22 | CMD ["exec java -jar /work/*.jar"] -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/simple/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-express-simple", 3 | "version": "1.0.0", 4 | "description": "Simple Node.js Express application", 5 | "license": "Apache-2.0", 6 | "main": "app.js", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/appsody/stacks.git", 10 | "directory": "incubator/nodejs-express/templates/simple" 11 | }, 12 | "scripts": { 13 | "test": "mocha" 14 | }, 15 | "devDependencies": { 16 | "chai": "^4.2.0", 17 | "mocha": "^7.1.1", 18 | "request": "^2.88.0" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /samples/sample-stack/stack.yaml: -------------------------------------------------------------------------------- 1 | name: sample stack # title or short name for the stack (used on the website) 2 | version: 0.1.0 # version of the stack 3 | description: sample stack to help creation of more appsody stacks # short description of this stack (used on the website and `list` command) 4 | license: Apache-2.0 # license for the stack (SPDX license id) 5 | language: java # language used for this stack 6 | maintainers: # list of maintainers for this stack 7 | - name: First Middle Last 8 | email: name@email.com 9 | github-id: github-account 10 | default-template: hello # folder name of default template -------------------------------------------------------------------------------- /incubator/quarkus/templates/kafka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # Configure the Kafka sink (we write to it) 2 | mp.messaging.outgoing.generated-price.connector=smallrye-kafka 3 | mp.messaging.outgoing.generated-price.topic=prices 4 | mp.messaging.outgoing.generated-price.value.serializer=org.apache.kafka.common.serialization.IntegerSerializer 5 | 6 | # Configure the Kafka source (we read from it) 7 | mp.messaging.incoming.prices.connector=smallrye-kafka 8 | mp.messaging.incoming.prices.topic=prices 9 | mp.messaging.incoming.prices.value.deserializer=org.apache.kafka.common.serialization.IntegerDeserializer 10 | -------------------------------------------------------------------------------- /incubator/java-microprofile/image/project/util/RangeIncludesVersion.java: -------------------------------------------------------------------------------- 1 | import org.osgi.framework.VersionRange; 2 | import org.osgi.framework.Version; 3 | 4 | public class RangeIncludesVersion { 5 | 6 | public static void main(String[] args) { 7 | if ( args.length < 2 ) { 8 | System.out.println("Must specify range and version"); 9 | System.exit(1); 10 | } 11 | String range = args[0]; 12 | String version = args[1]; 13 | 14 | boolean result = VersionRange.valueOf(range).includes(Version.valueOf(version)); 15 | System.exit( result ? 0 : 1 ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /incubator/java-openliberty/image/project/util/RangeIncludesVersion.java: -------------------------------------------------------------------------------- 1 | import org.osgi.framework.VersionRange; 2 | import org.osgi.framework.Version; 3 | 4 | public class RangeIncludesVersion { 5 | 6 | public static void main(String[] args) { 7 | if ( args.length < 2 ) { 8 | System.out.println("Must specify range and version"); 9 | System.exit(1); 10 | } 11 | String range = args[0]; 12 | String version = args[1]; 13 | 14 | boolean result = VersionRange.valueOf(range).includes(Version.valueOf(version)); 15 | System.exit( result ? 0 : 1 ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/image/project/util/RangeIncludesVersion.java: -------------------------------------------------------------------------------- 1 | import org.osgi.framework.VersionRange; 2 | import org.osgi.framework.Version; 3 | 4 | public class RangeIncludesVersion { 5 | 6 | public static void main(String[] args) { 7 | if ( args.length < 2 ) { 8 | System.out.println("Must specify range and version"); 9 | System.exit(1); 10 | } 11 | String range = args[0]; 12 | String version = args[1]; 13 | 14 | boolean result = VersionRange.valueOf(range).includes(Version.valueOf(version)); 15 | System.exit( result ? 0 : 1 ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /experimental/rust-tide/image/project/server/bin/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::env; 2 | use async_std::task; 3 | use application; 4 | 5 | fn main() -> Result<(), std::io::Error> { 6 | 7 | let port = env::var("PORT").unwrap_or_else(|_| "8000".to_string()); 8 | let address = format!("0.0.0.0:{}", port); 9 | task::block_on(async { 10 | tide::log::start(); 11 | let mut app = tide::new(); 12 | app.at("/").nest({ 13 | application::app() 14 | }); 15 | println!(" Running server on: http://localhost:{}/", port); 16 | app.listen(address).await?; 17 | Ok(()) 18 | }) 19 | } -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/image/project/util/RangeIncludesVersion.java: -------------------------------------------------------------------------------- 1 | import org.osgi.framework.VersionRange; 2 | import org.osgi.framework.Version; 3 | 4 | public class RangeIncludesVersion { 5 | 6 | public static void main(String[] args) { 7 | if ( args.length < 2 ) { 8 | System.out.println("Must specify range and version"); 9 | System.exit(1); 10 | } 11 | String range = args[0]; 12 | String version = args[1]; 13 | 14 | boolean result = VersionRange.valueOf(range).includes(Version.valueOf(version)); 15 | System.exit( result ? 0 : 1 ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /experimental/go-modules/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM golang:1.12 2 | 3 | ENV APPSODY_MOUNTS=/:/project/user-app 4 | 5 | ENV APPSODY_WATCH_DIR=/project/user-app 6 | ENV APPSODY_WATCH_IGNORE_DIR=/project/user-app/vendor 7 | ENV APPSODY_WATCH_REGEX="^.*.(go|mod)$" 8 | 9 | ENV APPSODY_RUN="go run ." 10 | ENV APPSODY_RUN_ON_CHANGE="go run ." 11 | ENV APPSODY_RUN_KILL=false 12 | 13 | 14 | ENV APPSODY_TEST="go test ./..." 15 | ENV APPSODY_TEST_KILL=false 16 | 17 | COPY ./LICENSE /licenses/ 18 | COPY ./project /project 19 | COPY ./config /config 20 | 21 | WORKDIR /project/user-app 22 | 23 | ENV PORT=3000 24 | 25 | EXPOSE 3000 26 | EXPOSE 9229 27 | 28 | -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/scaffold/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-express-scaffold", 3 | "version": "1.0.0", 4 | "description": "Scaffolded Node.js Express application", 5 | "license": "Apache-2.0", 6 | "main": "app.js", 7 | "repository": { 8 | "type": "git", 9 | "url": "https://github.com/appsody/stacks.git", 10 | "directory": "incubator/nodejs-express/templates/scaffold" 11 | }, 12 | "scripts": { 13 | "test": "mocha" 14 | }, 15 | "dependencies": { 16 | "pug": "^2.0.3" 17 | }, 18 | "devDependencies": { 19 | "chai": "^4.2.0", 20 | "mocha": "^7.1.1", 21 | "request": "^2.88.0" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/templates/default/src/main/liberty/config/server.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | springBoot-2.0 4 | servlet-4.0 5 | 6 | 7 | 8 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ci/nginx/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG NGINX_IMAGE=nginx:stable-alpine 2 | FROM $NGINX_IMAGE 3 | 4 | COPY nginx/nginx.conf /etc/nginx/nginx.conf 5 | COPY nginx/nginx-ssl.conf /etc/nginx/nginx-ssl.conf 6 | COPY nginx/startup.sh /opt/startup.sh 7 | COPY build/prefetch /opt/www/public 8 | COPY assets /opt/www/public 9 | COPY build/index-src /opt/www/public 10 | 11 | EXPOSE 8080 12 | EXPOSE 8443 13 | 14 | RUN touch /var/run/nginx.pid && \ 15 | chown -R nginx:0 /var/run/nginx.pid /var/cache/nginx /opt/www/public /etc/nginx /run && \ 16 | chmod -R g=u /opt/www/public /var/cache/nginx /etc/nginx /var/run/nginx.pid /run 17 | 18 | USER nginx 19 | 20 | ENTRYPOINT ["/opt/startup.sh"] 21 | -------------------------------------------------------------------------------- /incubator/python-flask/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | monitoring: 16 | labels: 17 | k8s-app: APPSODY_PROJECT_NAME 18 | livenessProbe: 19 | failureThreshold: 12 20 | httpGet: 21 | path: /health 22 | port: APPSODY_PORT 23 | initialDelaySeconds: 5 24 | periodSeconds: 2 25 | expose: true -------------------------------------------------------------------------------- /experimental/rocket/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | monitoring: 16 | labels: 17 | k8s-app: APPSODY_PROJECT_NAME 18 | livenessProbe: 19 | failureThreshold: 12 20 | httpGet: 21 | path: /health 22 | port: APPSODY_PORT 23 | initialDelaySeconds: 5 24 | periodSeconds: 2 25 | expose: true 26 | -------------------------------------------------------------------------------- /incubator/kitura/image/project/deps/AppsodyKitura/Sources/AppsodyKitura/Routes/HealthRoutes.swift: -------------------------------------------------------------------------------- 1 | /** 2 | * This source file is supplied by the appsody/kitura base image. DO NOT MODIFY. 3 | */ 4 | 5 | import Health 6 | import Kitura 7 | 8 | public let health = Health() 9 | 10 | func initializeHealthRoutes(router: Router) { 11 | 12 | router.get(AppsodyKitura.livenessPath) { (respondWith: (Status?, RequestError?) -> Void) -> Void in 13 | if health.status.state == .UP { 14 | respondWith(health.status, nil) 15 | } else { 16 | respondWith(nil, RequestError(.serviceUnavailable, body: health.status)) 17 | } 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **Additional context** 19 | Add any other context or screenshots about the feature request here. 20 | -------------------------------------------------------------------------------- /experimental/nodejs-functions/image/project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-functions", 3 | "version": "0.2.0", 4 | "description": "Node.js Functions Stack", 5 | "license": "Apache-2.0", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/appsody/stacks.git", 9 | "directory": "experimental/nodejs-functions/image/project" 10 | }, 11 | "main": "server.js", 12 | "scripts": { 13 | "debug": "node --inspect=0.0.0.0 server.js", 14 | "start": "node server.js", 15 | "test": "mocha" 16 | }, 17 | "dependencies": { 18 | "express": "~4.16.0" 19 | }, 20 | "devDependencies": { 21 | "chai": "^4.2.0", 22 | "mocha": "^7.1.1", 23 | "request": "^2.88.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /incubator/java-openliberty/image/mvn-stack-settings.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 11 | 12 | 13 | /mvn/repository 14 | 15 | 16 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/image/mvn-stack-settings.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 11 | 12 | 13 | /mvn/repository 14 | 15 | 16 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: generic 2 | 3 | go: 4 | - 1.12.x 5 | 6 | os: linux 7 | dist: bionic 8 | 9 | services: 10 | - docker 11 | 12 | # Delete git repo setup from travis 13 | # and replace with git clone to master. 14 | # reset hard to $TRAVIS_COMMIT 15 | install: 16 | - . ./ci/git_setup.sh 17 | 18 | before_script: 19 | - ./ci/download_cli.sh 20 | 21 | script: 22 | - . ./ci/build.sh 23 | 24 | # note before_deploy will run before each deploy provider 25 | before_deploy: 26 | - . ./ci/release.sh 27 | 28 | deploy: 29 | provider: releases 30 | skip_cleanup: true 31 | api_key: $GITHUB_TOKEN 32 | file: ci/release/* 33 | file_glob: true 34 | on: 35 | tags: true 36 | repo: appsody/stacks 37 | branch: master 38 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/__tests__/acceptance/ping.controller.acceptance.ts: -------------------------------------------------------------------------------- 1 | import {Client, expect} from '@loopback/testlab'; 2 | import {DemoApplication} from '../..'; 3 | import {setupApplication} from './test-helper'; 4 | 5 | describe('PingController', () => { 6 | let app: DemoApplication; 7 | let client: Client; 8 | 9 | before('setupApplication', async () => { 10 | ({app, client} = await setupApplication()); 11 | }); 12 | 13 | after(async () => { 14 | await app.stop(); 15 | }); 16 | 17 | it('invokes GET /ping', async () => { 18 | const res = await client.get('/ping?msg=world').expect(200); 19 | expect(res.body).to.containEql({greeting: 'Hello from LoopBack'}); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /ci/nginx/startup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | CONF_FILE= 4 | if echo $EXTERNAL_URL | grep https 5 | then 6 | CONF_FILE="-c nginx-ssl.conf" 7 | fi 8 | 9 | # Replace the resource paths in index yaml files to match the specified external URL 10 | find /opt/www/public -name '*.yaml' -exec sed -i -e "s|{{EXTERNAL_URL}}|${EXTERNAL_URL%/}|" {} \; 11 | 12 | # Replace the resource paths in index json files to match the specified external URL 13 | find /opt/www/public -name '*.json' -exec sed -i -e "s|{{EXTERNAL_URL}}|${EXTERNAL_URL%/}|" {} \; 14 | 15 | if [ -z "${DRY_RUN}" ] 16 | then 17 | exec nginx $CONF_FILE 18 | else 19 | echo "Dry run" 20 | echo using $CONF_FILE 21 | echo user id is $(id -u) 22 | echo group id is $(id -g) 23 | fi 24 | -------------------------------------------------------------------------------- /experimental/vertx/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 0.1.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | readinessProbe: 14 | failureThreshold: 12 15 | httpGet: 16 | path: /health 17 | port: APPSODY_PORT 18 | initialDelaySeconds: 5 19 | periodSeconds: 2 20 | timeoutSeconds: 1 21 | livenessProbe: 22 | failureThreshold: 12 23 | httpGet: 24 | path: /health 25 | port: APPSODY_PORT 26 | initialDelaySeconds: 5 27 | periodSeconds: 2 28 | expose: true 29 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/project/src/__tests__/acceptance/ping.controller.acceptance.ts: -------------------------------------------------------------------------------- 1 | import {Client, expect} from '@loopback/testlab'; 2 | import {BootableRestApplication} from '../..'; 3 | import {setupApplication} from './test-helper'; 4 | 5 | describe('PingController', () => { 6 | let app: BootableRestApplication; 7 | let client: Client; 8 | 9 | before('setupApplication', async () => { 10 | ({app, client} = await setupApplication()); 11 | }); 12 | 13 | after(async () => { 14 | await app.stop(); 15 | }); 16 | 17 | it('invokes GET /ping', async () => { 18 | const res = await client.get('/ping?msg=world').expect(200); 19 | expect(res.body).to.containEql({greeting: 'Hello from LoopBack'}); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /incubator/kitura/templates/default/Sources/Application/Application.swift: -------------------------------------------------------------------------------- 1 | import AppsodyKitura 2 | import Configuration 3 | import Kitura 4 | 5 | public let projectPath = ConfigurationManager.BasePath.project.path 6 | 7 | public class App { 8 | let router: Router 9 | let manager: ConfigurationManager 10 | 11 | public init() { 12 | self.router = AppsodyKitura.createRouter() 13 | self.manager = AppsodyKitura.manager 14 | } 15 | 16 | public func setUpRoutes() { 17 | router.get("/hello") { request, response, next in 18 | response.send("Hello, World!") 19 | next() 20 | } 21 | } 22 | 23 | public func run() { 24 | AppsodyKitura.run(self.router) 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | readinessProbe: 14 | failureThreshold: 12 15 | httpGet: 16 | path: /ready 17 | port: APPSODY_PORT 18 | initialDelaySeconds: 5 19 | periodSeconds: 2 20 | timeoutSeconds: 1 21 | livenessProbe: 22 | failureThreshold: 12 23 | httpGet: 24 | path: /live 25 | port: APPSODY_PORT 26 | initialDelaySeconds: 5 27 | periodSeconds: 2 28 | expose: true 29 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/migrate.ts: -------------------------------------------------------------------------------- 1 | import {DemoApplication} from './application'; 2 | 3 | export async function migrate(args: string[]) { 4 | const existingSchema = args.includes('--rebuild') ? 'drop' : 'alter'; 5 | console.log('Migrating schemas (%s existing schema)', existingSchema); 6 | 7 | const app = new DemoApplication(); 8 | await app.boot(); 9 | await app.migrateSchema({existingSchema}); 10 | 11 | // Connectors usually keep a pool of opened connections, 12 | // this keeps the process running even after all work is done. 13 | // We need to exit explicitly. 14 | process.exit(0); 15 | } 16 | 17 | migrate(process.argv).catch(err => { 18 | console.error('Cannot migrate database schema', err); 19 | process.exit(1); 20 | }); 21 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kafka/src/main/java/application/KafkaConsumer.java: -------------------------------------------------------------------------------- 1 | package application; 2 | 3 | import org.springframework.kafka.annotation.KafkaListener; 4 | import org.springframework.stereotype.Service; 5 | 6 | import java.util.concurrent.CountDownLatch; 7 | 8 | // a simple kafka consumer 9 | @Service 10 | public class KafkaConsumer { 11 | private final CountDownLatch countDownLatch = new CountDownLatch(1); 12 | 13 | @KafkaListener(topics = "orders", groupId = "orders-service") 14 | public void receiveString(String message) { 15 | System.out.println("Receiving message = " + message); 16 | countDownLatch.countDown(); 17 | } 18 | 19 | public CountDownLatch getCountDownLatch() { 20 | return countDownLatch; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/openapi-spec.ts: -------------------------------------------------------------------------------- 1 | import {ApplicationConfig} from '@loopback/core'; 2 | import {DemoApplication} from './application'; 3 | 4 | /** 5 | * Export the OpenAPI spec from the application 6 | */ 7 | async function exportOpenApiSpec(): Promise { 8 | const config: ApplicationConfig = { 9 | rest: { 10 | port: +(process.env.PORT ?? 3000), 11 | host: process.env.HOST ?? 'localhost', 12 | }, 13 | }; 14 | const outFile = process.argv[2] ?? ''; 15 | const app = new DemoApplication(config); 16 | await app.boot(); 17 | await app.exportOpenApiSpec(outFile); 18 | } 19 | 20 | exportOpenApiSpec().catch(err => { 21 | console.error('Fail to export OpenAPI spec from the application.', err); 22 | process.exit(1); 23 | }); 24 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/default/src/main/java/org/acme/quickstart/GreetingResource.java: -------------------------------------------------------------------------------- 1 | package org.acme.quickstart; 2 | 3 | import javax.inject.Inject; 4 | import javax.ws.rs.GET; 5 | import javax.ws.rs.Path; 6 | import javax.ws.rs.Produces; 7 | import javax.ws.rs.core.MediaType; 8 | 9 | import org.jboss.resteasy.annotations.jaxrs.PathParam; 10 | 11 | @Path("/hello") 12 | public class GreetingResource { 13 | 14 | @Inject 15 | GreetingService service; 16 | 17 | @GET 18 | @Produces(MediaType.TEXT_PLAIN) 19 | @Path("/greeting/{name}") 20 | public String greeting(@PathParam String name) { 21 | return service.greeting(name); 22 | } 23 | 24 | @GET 25 | @Produces(MediaType.TEXT_PLAIN) 26 | public String hello() { 27 | return "hello"; 28 | } 29 | } -------------------------------------------------------------------------------- /ci/nginx/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | index: 4 | build: 5 | context: .. 6 | dockerfile: nginx/Dockerfile 7 | image: "appsody/appsody-index" 8 | container_name: "appsody-index" 9 | ports: 10 | - "8008:8080" 11 | - "8003:8443" 12 | environment: 13 | - EXTERNAL_URL=http://localhost:8008/ 14 | 15 | verify: 16 | image: "appsody/appsody-index" 17 | container_name: "appsody-verify" 18 | entrypoint: "" 19 | command: sh -c "/opt/startup.sh; cat /opt/www/public/*.yaml; cat /opt/www/public/*.json; ls /opt/www/public" 20 | environment: 21 | - EXTERNAL_URL=https://localhost:8003/ 22 | - DRY_RUN=true 23 | 24 | registry: 25 | image: "registry:2" 26 | container_name: "registry" 27 | ports: 28 | - "5000:5000" 29 | -------------------------------------------------------------------------------- /incubator/java-openliberty/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: openliberty.io/v1beta1 2 | kind: OpenLibertyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | service: 10 | type: NodePort 11 | port: APPSODY_PORT 12 | annotations: 13 | prometheus.io/scrape: 'true' 14 | readinessProbe: 15 | failureThreshold: 12 16 | httpGet: 17 | path: /health/ready 18 | port: APPSODY_PORT 19 | initialDelaySeconds: 5 20 | periodSeconds: 2 21 | timeoutSeconds: 1 22 | livenessProbe: 23 | failureThreshold: 12 24 | httpGet: 25 | path: /health/live 26 | port: APPSODY_PORT 27 | initialDelaySeconds: 5 28 | periodSeconds: 2 29 | expose: true 30 | -------------------------------------------------------------------------------- /ci/ext/pre_env.d/10_travis: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ "$TRAVIS" == "true" ] 4 | then 5 | echo "Setting Travis environment" 6 | 7 | export GIT_BRANCH=${TRAVIS_BRANCH} 8 | export GIT_ORG_REPO=${TRAVIS_REPO_SLUG} 9 | export INDEX_VERSION=${TRAVIS_BUILD_NUMBER} 10 | 11 | # Either enable or customize how long-running tasks are watched 12 | export CI_WAIT_FOR="true" 13 | # export CI_WAIT_FOR="$script_dir/ci_wait.sh --interval 3 --limit 30" 14 | 15 | # Trim all output to ensure max log length is not exceeded 16 | export VERBOSE=false 17 | 18 | if [ $TRAVIS_TAG ] && [ "$TRAVIS_TAG" == "$TRAVIS_BRANCH" ] 19 | then 20 | echo "This is a release build for $TRAVIS_TAG" 21 | IMAGE_REGISTRY_PUBLISH=true 22 | else 23 | IMAGE_REGISTRY_PUBLISH=false 24 | fi 25 | fi 26 | -------------------------------------------------------------------------------- /incubator/node-red/image/project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-red-stack", 3 | "version": "0.1.2", 4 | "description": "Node-RED Stack", 5 | "license": "Apache-2.0", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/appsody/stacks.git", 9 | "directory": "incubator/nodejs-express/image/project" 10 | }, 11 | "scripts": { 12 | "debug": "node --inspect=0.0.0.0 server.js", 13 | "start": "node server.js", 14 | "test": "mocha" 15 | }, 16 | "dependencies": { 17 | "@cloudnative/health-connect": "^2.0.0", 18 | "express": "~4.16.0", 19 | "node-red": "1.x", 20 | "prom-client": "^12.0.0" 21 | }, 22 | "devDependencies": { 23 | "appmetrics-dash": "^5.0.0", 24 | "chai": "^4.2.0", 25 | "mocha": "^7.1.1", 26 | "request": "^2.88.0" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /incubator/java-microprofile/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Eclipse MicroProfile® 2 | version: 0.2.27 3 | description: Eclipse MicroProfile on Open Liberty & OpenJ9 using Maven 4 | license: Apache-2.0 5 | language: java 6 | maintainers: 7 | - name: Mike Andrasak 8 | email: andrasak@us.ibm.com 9 | github-id: uberskigeek 10 | - name: Andy Mauer 11 | email: ajmauer@us.ibm.com 12 | github-id: ajm01 13 | - name: Scott Kurz 14 | email: skurz@us.ibm.com 15 | github-id: scottkurz 16 | - name: Adam Wisniewski 17 | email: awisniew@us.ibm.com 18 | github-id: awisniew90 19 | default-template: default 20 | requirements: 21 | appsody-version: ">= 0.5.0" 22 | templating-data: 23 | libertyversion: '19.0.0.12' 24 | deprecated: 04/20/2020 - This stack has been replaced by the Open Liberty stack (java-openliberty) 25 | -------------------------------------------------------------------------------- /incubator/java-microprofile/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | readinessProbe: 16 | failureThreshold: 12 17 | httpGet: 18 | path: /health/ready 19 | port: APPSODY_PORT 20 | initialDelaySeconds: 5 21 | periodSeconds: 2 22 | timeoutSeconds: 1 23 | livenessProbe: 24 | failureThreshold: 12 25 | httpGet: 26 | path: /health/live 27 | port: APPSODY_PORT 28 | initialDelaySeconds: 5 29 | periodSeconds: 2 30 | expose: true 31 | -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/scaffold/test/test.js: -------------------------------------------------------------------------------- 1 | var expect = require('chai').expect; 2 | var request = require('request'); 3 | 4 | // Start the server before testing 5 | const server = require('../../server').server; 6 | const PORT = require('../../server').PORT; 7 | const url = 'http://localhost:' + PORT; 8 | 9 | // Testing / endpoint, should return 200 10 | describe('Node.js Express Scaffold template', function () { 11 | describe('/ endpoint', function () { 12 | it('status', function (done) { 13 | request(url + '/', function (error, response, body) { 14 | expect(response.statusCode).to.equal(200); 15 | done(); 16 | }); 17 | }); 18 | }); 19 | }); 20 | 21 | // Stop the server after testing 22 | after(done => { 23 | server.close(done); 24 | }); 25 | -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/simple/test/test.js: -------------------------------------------------------------------------------- 1 | var expect = require('chai').expect; 2 | var request = require('request'); 3 | 4 | // Start the server before testing 5 | const server = require('../../server').server; 6 | const PORT = require('../../server').PORT; 7 | const url = 'http://localhost:' + PORT; 8 | 9 | describe('Node.js Express Simple template', function () { 10 | // Testing / endpoint, should return 200 11 | describe('/ endpoint', function () { 12 | it('status', function (done) { 13 | request(url + '/', function (error, response, body) { 14 | expect(response.statusCode).to.equal(200); 15 | done(); 16 | }); 17 | }); 18 | }); 19 | }); 20 | 21 | // Stop the server after testing 22 | after(done => { 23 | server.close(done); 24 | }); 25 | -------------------------------------------------------------------------------- /incubator/java-microprofile/templates/default/src/main/java/dev/appsody/starter/health/StarterLivenessCheck.java: -------------------------------------------------------------------------------- 1 | package dev.appsody.starter.health; 2 | 3 | import javax.enterprise.context.ApplicationScoped; 4 | 5 | import org.eclipse.microprofile.health.HealthCheck; 6 | import org.eclipse.microprofile.health.HealthCheckResponse; 7 | import org.eclipse.microprofile.health.Liveness; 8 | 9 | @Liveness 10 | @ApplicationScoped 11 | public class StarterLivenessCheck implements HealthCheck { 12 | 13 | private boolean isAlive() { 14 | // perform health checks here 15 | 16 | return true; 17 | } 18 | 19 | @Override 20 | public HealthCheckResponse call() { 21 | boolean up = isAlive(); 22 | return HealthCheckResponse.named(this.getClass().getSimpleName()).state(up).build(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/src/main/java/dev/appsody/starter/health/StarterLivenessCheck.java: -------------------------------------------------------------------------------- 1 | package dev.appsody.starter.health; 2 | 3 | import javax.enterprise.context.ApplicationScoped; 4 | 5 | import org.eclipse.microprofile.health.HealthCheck; 6 | import org.eclipse.microprofile.health.HealthCheckResponse; 7 | import org.eclipse.microprofile.health.Liveness; 8 | 9 | @Liveness 10 | @ApplicationScoped 11 | public class StarterLivenessCheck implements HealthCheck { 12 | 13 | private boolean isAlive() { 14 | // perform health checks here 15 | 16 | return true; 17 | } 18 | 19 | @Override 20 | public HealthCheckResponse call() { 21 | boolean up = isAlive(); 22 | return HealthCheckResponse.named(this.getClass().getSimpleName()).state(up).build(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /incubator/java-openliberty/image/project/.appsody-init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ -n "$TERM" ] && [ "$TERM" != "dumb" ] && [ -x /usr/bin/tput ] && [[ `tput colors` != "0" ]]; then 4 | color_prompt="yes" 5 | else 6 | color_prompt= 7 | fi 8 | 9 | if [[ "$color_prompt" == "yes" ]]; then 10 | BLUE="\033[0;34m" 11 | NO_COLOR="\033[0m" 12 | else 13 | BLUE="" 14 | NO_COLOUR="" 15 | fi 16 | 17 | if [ ! -d ~/.m2/repository ]; then 18 | echo -e "${BLUE}Creating local maven repository: ~/.m2/repository${NO_COLOR}" 19 | mkdir -p ~/.m2/repository 20 | fi 21 | 22 | which java 2>&1 >/dev/null ; JAVA_KNOWN=$? 23 | if [ ! -z "$JAVA_HOME" ] || [ $JAVA_KNOWN = "0" ]; then 24 | ./mvnw install -Denforcer.skip=true 25 | fi 26 | 27 | # copy the maven wrapper from the stack to extracted application directory 28 | cp -Rp mvnw* .. 29 | cp -Rp .mvn .. 30 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/image/project/.appsody-init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | if [ -n "$TERM" ] && [ "$TERM" != "dumb" ] && [ -x /usr/bin/tput ] && [[ `tput colors` != "0" ]]; then 3 | color_prompt="yes" 4 | else 5 | color_prompt= 6 | fi 7 | 8 | if [[ "$color_prompt" == "yes" ]]; then 9 | BLUE="\033[0;34m" 10 | NO_COLOR="\033[0m" 11 | else 12 | BLUE="" 13 | NO_COLOUR="" 14 | fi 15 | 16 | if [ ! -d ~/.m2/repository ]; then 17 | echo -e "${BLUE}Creating local maven repository: ~/.m2/repository${NO_COLOR}" 18 | mkdir -p ~/.m2/repository 19 | fi 20 | 21 | which java 2>&1 >/dev/null ; JAVA_KNOWN=$? 22 | if [ ! -z "$JAVA_HOME" ] || [ $JAVA_KNOWN = "0" ]; then 23 | ./mvnw install -q -f ./{{.stack.parentpomfilename}} 24 | fi 25 | 26 | # copy the maven wrapper from the stack to extracted application directory 27 | cp -Rp mvnw* .. 28 | cp -Rp .mvn .. -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/project/src/__tests__/acceptance/test-helper.ts: -------------------------------------------------------------------------------- 1 | import {main, BootableRestApplication} from '../..'; 2 | import { 3 | createRestAppClient, 4 | givenHttpServerConfig, 5 | Client, 6 | } from '@loopback/testlab'; 7 | 8 | export async function setupApplication(): Promise { 9 | const restConfig = givenHttpServerConfig({ 10 | // Customize the server configuration here. 11 | // Empty values (undefined, '') will be ignored by the helper. 12 | // 13 | // host: process.env.HOST, 14 | // port: +process.env.PORT, 15 | }); 16 | 17 | const app = await main({ 18 | rest: restConfig, 19 | }); 20 | 21 | const client = createRestAppClient(app); 22 | 23 | return {app, client}; 24 | } 25 | 26 | export interface AppWithClient { 27 | app: BootableRestApplication; 28 | client: Client; 29 | } 30 | -------------------------------------------------------------------------------- /incubator/java-openliberty/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Open Liberty 2 | version: 0.2.20 3 | description: Eclipse MicroProfile & Jakarta EE on Open Liberty & OpenJ9 using Maven 4 | license: Apache-2.0 5 | language: java 6 | maintainers: 7 | - name: Mike Andrasak 8 | email: andrasak@us.ibm.com 9 | github-id: uberskigeek 10 | - name: Andy Mauer 11 | email: ajmauer@us.ibm.com 12 | github-id: ajm01 13 | - name: Scott Kurz 14 | email: skurz@us.ibm.com 15 | github-id: scottkurz 16 | - name: Adam Wisniewski 17 | email: awisniew@us.ibm.com 18 | github-id: awisniew90 19 | default-template: default 20 | requirements: 21 | docker-version: ">= 17.09.0" 22 | appsody-version: ">= 0.5.0" 23 | templating-data: 24 | libertyversion: "20.0.0.9" 25 | parentpomgroup: "dev.appsody" 26 | parentpomid: "java-openliberty" 27 | parentpomrange: "[0.2, 0.3)" 28 | -------------------------------------------------------------------------------- /experimental/rust/templates/simple/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // You will need to install the CodeLLDB plugin to use this launch config 2 | { 3 | "version": "0.2.0", 4 | "configurations": [ 5 | { 6 | "name": "Remote Debug", 7 | "type": "lldb", 8 | "request": "custom", 9 | "initCommands": [ 10 | "platform select remote-linux", 11 | "platform connect connect://localhost:1234", 12 | "platform settings -w /project/user-app/target/x86_64-unknown-linux-musl/debug" 13 | ], 14 | "targetCreateCommands": [ 15 | "file rust-simple" 16 | ], 17 | "processCreateCommands": [ 18 | "run" 19 | ], 20 | "sourceMap": { "/project/user-app" : "${workspaceFolder}" } 21 | } 22 | ] 23 | } -------------------------------------------------------------------------------- /incubator/java-openliberty/templates/default/src/main/java/dev/appsody/starter/health/StarterReadinessCheck.java: -------------------------------------------------------------------------------- 1 | package dev.appsody.starter.health; 2 | 3 | import javax.enterprise.context.ApplicationScoped; 4 | 5 | import org.eclipse.microprofile.health.HealthCheck; 6 | import org.eclipse.microprofile.health.HealthCheckResponse; 7 | import org.eclipse.microprofile.health.Readiness; 8 | 9 | @Readiness 10 | @ApplicationScoped 11 | public class StarterReadinessCheck implements HealthCheck { 12 | 13 | private boolean isReady() { 14 | // perform readiness checks, e.g. database connection, etc. 15 | 16 | return true; 17 | } 18 | 19 | @Override 20 | public HealthCheckResponse call() { 21 | boolean up = isReady(); 22 | return HealthCheckResponse.named(this.getClass().getSimpleName()).state(up).build(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | prometheus.io/path: '/actuator/prometheus' 16 | readinessProbe: 17 | failureThreshold: 12 18 | httpGet: 19 | path: /actuator/health 20 | port: APPSODY_PORT 21 | initialDelaySeconds: 5 22 | periodSeconds: 2 23 | livenessProbe: 24 | failureThreshold: 12 25 | httpGet: 26 | path: /actuator/liveness 27 | port: APPSODY_PORT 28 | initialDelaySeconds: 5 29 | periodSeconds: 2 30 | expose: true 31 | -------------------------------------------------------------------------------- /incubator/java-microprofile/templates/default/src/main/java/dev/appsody/starter/health/StarterReadinessCheck.java: -------------------------------------------------------------------------------- 1 | package dev.appsody.starter.health; 2 | 3 | import javax.enterprise.context.ApplicationScoped; 4 | 5 | import org.eclipse.microprofile.health.HealthCheck; 6 | import org.eclipse.microprofile.health.HealthCheckResponse; 7 | import org.eclipse.microprofile.health.Readiness; 8 | 9 | @Readiness 10 | @ApplicationScoped 11 | public class StarterReadinessCheck implements HealthCheck { 12 | 13 | private boolean isReady() { 14 | // perform readiness checks, e.g. database connection, etc. 15 | 16 | return true; 17 | } 18 | 19 | @Override 20 | public HealthCheckResponse call() { 21 | boolean up = isReady(); 22 | return HealthCheckResponse.named(this.getClass().getSimpleName()).state(up).build(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /incubator/node-red/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM node:12 2 | 3 | ENV APPSODY_MOUNTS=/:/project/user-app 4 | ENV APPSODY_DEPS=/project/user-app/node_modules 5 | 6 | ENV APPSODY_WATCH_DIR=/project/user-app 7 | ENV APPSODY_WATCH_IGNORE_DIR=/project/user-app/node_modules 8 | ENV APPSODY_WATCH_REGEX="^.*.json$" 9 | 10 | ENV APPSODY_INSTALL="npm install --prefix user-app" 11 | 12 | ENV APPSODY_RUN="npm start" 13 | ENV APPSODY_RUN_ON_CHANGE="npm start" 14 | ENV APPSODY_RUN_KILL=true 15 | 16 | ENV APPSODY_DEBUG="npm run debug" 17 | ENV APPSODY_DEBUG_ON_CHANGE="npm run debug" 18 | ENV APPSODY_DEBUG_KILL=true 19 | 20 | ENV APPSODY_TEST="npm test" 21 | 22 | COPY ./LICENSE /licenses/ 23 | COPY ./project /project 24 | COPY ./config /config 25 | WORKDIR /project 26 | RUN npm install 27 | 28 | ENV PORT=3000 29 | ENV NODE_PATH=/project/user-app/node_modules 30 | 31 | EXPOSE 3000 32 | EXPOSE 9229 33 | -------------------------------------------------------------------------------- /incubator/node-red/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | monitoring: 16 | labels: 17 | k8s-app: APPSODY_PROJECT_NAME 18 | readinessProbe: 19 | failureThreshold: 12 20 | httpGet: 21 | path: /ready 22 | port: APPSODY_PORT 23 | initialDelaySeconds: 5 24 | periodSeconds: 2 25 | timeoutSeconds: 1 26 | livenessProbe: 27 | failureThreshold: 12 28 | httpGet: 29 | path: /live 30 | port: APPSODY_PORT 31 | initialDelaySeconds: 5 32 | periodSeconds: 2 33 | expose: true 34 | -------------------------------------------------------------------------------- /incubator/nodejs-express/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | monitoring: 16 | labels: 17 | k8s-app: APPSODY_PROJECT_NAME 18 | readinessProbe: 19 | failureThreshold: 12 20 | httpGet: 21 | path: /ready 22 | port: APPSODY_PORT 23 | initialDelaySeconds: 5 24 | periodSeconds: 2 25 | timeoutSeconds: 1 26 | livenessProbe: 27 | failureThreshold: 12 28 | httpGet: 29 | path: /live 30 | port: APPSODY_PORT 31 | initialDelaySeconds: 5 32 | periodSeconds: 2 33 | expose: true 34 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "label": "Watch and Compile Project", 8 | "type": "shell", 9 | "command": "npm", 10 | "args": ["--silent", "run", "build:watch"], 11 | "group": { 12 | "kind": "build", 13 | "isDefault": true 14 | }, 15 | "problemMatcher": "$tsc-watch" 16 | }, 17 | { 18 | "label": "Build, Test and Lint", 19 | "type": "shell", 20 | "command": "npm", 21 | "args": ["--silent", "run", "test:dev"], 22 | "group": { 23 | "kind": "test", 24 | "isDefault": true 25 | }, 26 | "problemMatcher": ["$tsc", "$eslint-compact", "$eslint-stylish"] 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /experimental/nodejs-functions/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | monitoring: 16 | labels: 17 | k8s-app: APPSODY_PROJECT_NAME 18 | readinessProbe: 19 | failureThreshold: 12 20 | httpGet: 21 | path: /ready 22 | port: APPSODY_PORT 23 | initialDelaySeconds: 5 24 | periodSeconds: 2 25 | timeoutSeconds: 1 26 | livenessProbe: 27 | failureThreshold: 12 28 | httpGet: 29 | path: /live 30 | port: APPSODY_PORT 31 | initialDelaySeconds: 5 32 | periodSeconds: 2 33 | expose: true 34 | -------------------------------------------------------------------------------- /incubator/nodejs-express/image/project/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodejs-express", 3 | "version": "0.4.10", 4 | "description": "Node.js Express Stack", 5 | "license": "Apache-2.0", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/appsody/stacks.git", 9 | "directory": "incubator/nodejs-express/image/project" 10 | }, 11 | "scripts": { 12 | "debug": "node --inspect=0.0.0.0 server.js", 13 | "start": "node server.js", 14 | "test": "mocha" 15 | }, 16 | "dependencies": { 17 | "@cloudnative/health-connect": "^2.0.0", 18 | "express": "^4.17.1", 19 | "node-rdkafka": "^2.7.4", 20 | "pino": "^6.2.0", 21 | "pino-http": "^5.0.0", 22 | "prom-client": "^12.0.0" 23 | }, 24 | "devDependencies": { 25 | "appmetrics-dash": "^5.3.0", 26 | "chai": "^4.2.0", 27 | "mocha": "^7.1.1", 28 | "request": "^2.88.0" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/__tests__/acceptance/test-helper.ts: -------------------------------------------------------------------------------- 1 | import {DemoApplication} from '../..'; 2 | import { 3 | createRestAppClient, 4 | givenHttpServerConfig, 5 | Client, 6 | } from '@loopback/testlab'; 7 | 8 | export async function setupApplication(): Promise { 9 | const restConfig = givenHttpServerConfig({ 10 | // Customize the server configuration here. 11 | // Empty values (undefined, '') will be ignored by the helper. 12 | // 13 | // host: process.env.HOST, 14 | // port: +process.env.PORT, 15 | }); 16 | 17 | const app = new DemoApplication({ 18 | rest: restConfig, 19 | }); 20 | 21 | await app.boot(); 22 | await app.start(); 23 | 24 | const client = createRestAppClient(app); 25 | 26 | return {app, client}; 27 | } 28 | 29 | export interface AppWithClient { 30 | app: DemoApplication; 31 | client: Client; 32 | } 33 | -------------------------------------------------------------------------------- /incubator/swift/templates/simple/Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.0 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "simple", 8 | dependencies: [ 9 | // Dependencies declare other packages that this package depends on. 10 | // .package(url: /* package url */, from: "1.0.0"), 11 | ], 12 | targets: [ 13 | // Targets are the basic building blocks of a package. A target can define a module or a test suite. 14 | // Targets can depend on other targets in this package, and on products in packages which this package depends on. 15 | .target( 16 | name: "simple", 17 | dependencies: []), 18 | .testTarget( 19 | name: "simpleTests", 20 | dependencies: ["simple"]), 21 | ] 22 | ) 23 | -------------------------------------------------------------------------------- /ci/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # setup environment 4 | . $( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/env.sh 5 | 6 | if [ $# -gt 0 ] 7 | then 8 | # ignore the old basedir argument 9 | dir=$1 10 | if [ -d $dir ] && [ -f $dir/RELEASE.md ] 11 | then 12 | shift 13 | fi 14 | fi 15 | 16 | # Fetch previously released stacks 17 | . $script_dir/prefetch.sh 18 | 19 | # Allow multiple stacks to be selected 20 | if [ $# -gt 0 ] 21 | then 22 | export STACKS_LIST="$@" 23 | echo "STACKS_LIST=$STACKS_LIST" 24 | 25 | for stack_name in $STACKS_LIST 26 | do 27 | if [ "${stack_name: -1}" == "/" ] 28 | then 29 | stack_name=${stack_name%?} 30 | fi 31 | 32 | stack_no_slash="$stack_no_slash $stack_name" 33 | done 34 | 35 | STACKS_LIST=$stack_no_slash 36 | fi 37 | 38 | if [ -z "$STACKS_LIST" ] 39 | then 40 | . $script_dir/list.sh 41 | fi 42 | 43 | . $script_dir/package.sh 44 | -------------------------------------------------------------------------------- /experimental/rust-tide/templates/default/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "(gdb) Launch", 6 | "type": "cppdbg", 7 | "request": "launch", 8 | "program": "${workspaceFolder}/rust-tide-server", 9 | "args": [], 10 | "stopAtEntry": false, 11 | "cwd": "${workspaceFolder}", 12 | "environment": [], 13 | "externalConsole": false, 14 | "MIMode": "gdb", 15 | "miDebuggerServerAddress": "localhost:1234", 16 | "serverLaunchTimeout": 1000, 17 | "setupCommands": [ 18 | { 19 | "description": "Enable pretty-printing for gdb", 20 | "text": "-enable-pretty-printing", 21 | "ignoreFailures": true 22 | } 23 | ] 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/src/__tests__/acceptance/home-page.acceptance.ts: -------------------------------------------------------------------------------- 1 | import {Client} from '@loopback/testlab'; 2 | import {DemoApplication} from '../..'; 3 | import {setupApplication} from './test-helper'; 4 | 5 | describe('HomePage', () => { 6 | let app: DemoApplication; 7 | let client: Client; 8 | 9 | before('setupApplication', async () => { 10 | ({app, client} = await setupApplication()); 11 | }); 12 | 13 | after(async () => { 14 | await app.stop(); 15 | }); 16 | 17 | it('exposes a default home page', async () => { 18 | await client 19 | .get('/') 20 | .expect(200) 21 | .expect('Content-Type', /text\/html/); 22 | }); 23 | 24 | it('exposes self-hosted explorer', async () => { 25 | await client 26 | .get('/explorer/') 27 | .expect(200) 28 | .expect('Content-Type', /text\/html/) 29 | .expect(/LoopBack API Explorer/); 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/stack.yaml: -------------------------------------------------------------------------------- 1 | name: Spring Boot® 2 | version: 0.3.30 3 | description: Spring Boot using OpenJ9 and Maven 4 | license: Apache-2.0 5 | language: java 6 | maintainers: 7 | - name: Erin Schnabel 8 | email: schnabel@us.ibm.com 9 | github-id: ebullient 10 | - name: Ozzy Osborne 11 | email: ozzy@ca.ibm.com 12 | github-id: bardweller 13 | - name: Richard Trotter 14 | email: rtrotter@us.ibm.com 15 | github-id: richard-trotter 16 | - name: Harish Yayi 17 | email: hyayi@us.ibm.com 18 | github-id: yharish991 19 | default-template: default 20 | requirements: 21 | appsody-version: ">= 0.5.0" 22 | docker-version: ">= 17.09.0" 23 | templating-data: 24 | baseimage: maven:3.6-jdk-8-openj9 25 | finalimage: adoptopenjdk/openjdk8-openj9:ubi-jre 26 | parentpomgroup: dev.appsody 27 | parentpomid: spring-boot2-stack 28 | parentpomrange: '[0.3, 0.4)' 29 | parentpomfilename: appsody-boot2-pom.xml 30 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kafka/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #enable the actuator endpoints for health, metrics, and prometheus. 2 | management.endpoints.web.exposure.include=health,metrics,prometheus,liveness 3 | opentracing.jaeger.log-spans=false 4 | 5 | spring.kafka.consumer.bootstrap-servers=${KAFKA_BOOTSTRAP_SERVERS} 6 | spring.kafka.consumer.group-id=orders-service 7 | spring.kafka.consumer.auto-offset-reset=earliest 8 | spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer 9 | spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer 10 | 11 | spring.kafka.producer.bootstrap-servers=${KAFKA_BOOTSTRAP_SERVERS} 12 | spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer 13 | spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer 14 | spring.kafka.consumer.enable-auto-commit=true 15 | -------------------------------------------------------------------------------- /ci/git_setup.sh: -------------------------------------------------------------------------------- 1 | if [ -n "$TRAVIS_TAG" ] 2 | then 3 | if [ -z "$RELEASE_BRANCH" ] 4 | then 5 | # This environment variable can be set in the Travis settings 6 | echo "No RELEASE_BRANCH environment variable set: defaulting to master" 7 | export RELEASE_BRANCH="master" 8 | fi 9 | 10 | echo "Release branch is: $RELEASE_BRANCH" 11 | 12 | git clone --branch=$RELEASE_BRANCH https://github.com/$TRAVIS_REPO_SLUG.git $TRAVIS_BUILD_DIR/release 13 | cd $TRAVIS_BUILD_DIR/release 14 | 15 | echo "Looking for release commit in branch..." 16 | git branch --contains $TRAVIS_COMMIT 17 | 18 | if [[ $(echo $?) != "0" ]] 19 | then 20 | echo "Error: could not find release commit in release branch! Branch: $RELEASE_BRANCH , Commit: $TRAVIS_COMMIT" 21 | exit 1 22 | fi 23 | 24 | echo "Reseting branch to release commit: $TRAVIS_COMMIT" 25 | git reset --hard $TRAVIS_COMMIT 26 | 27 | # Logging the current commit 28 | git log -n 1 29 | fi 30 | 31 | 32 | -------------------------------------------------------------------------------- /ci/release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # setup environment 4 | . $( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/env.sh 5 | 6 | # directory to store assets for test or release 7 | release_dir=$script_dir/release 8 | mkdir -p $release_dir 9 | 10 | # expose an extension point for running before main 'release' processing 11 | exec_hooks $script_dir/ext/pre_release.d 12 | 13 | # iterate over each asset 14 | for asset in $assets_dir/* 15 | do 16 | if [[ $asset != *-local.yaml ]] 17 | then 18 | echo "Releasing: $asset" 19 | mv $asset $release_dir 20 | fi 21 | done 22 | 23 | image_registry_login 24 | 25 | if [ -f $build_dir/image_list ] 26 | then 27 | while read line 28 | do 29 | if [ "$line" != "" ] 30 | then 31 | image_push $line 32 | fi 33 | done < $build_dir/image_list 34 | fi 35 | 36 | # expose an extension point for running after main 'release' processing 37 | exec_hooks $script_dir/ext/post_release.d 38 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kafka/src/main/resources/application-test.properties: -------------------------------------------------------------------------------- 1 | # spring.embedded.kafka.brokers system property is set by Embedded Kafka server to the addresses of the bootstrap servers 2 | spring.kafka.consumer.bootstrap-servers=${spring.embedded.kafka.brokers} 3 | spring.kafka.consumer.group-id=orders-service 4 | spring.kafka.consumer.auto-offset-reset=earliest 5 | spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer 6 | spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer 7 | 8 | # spring.embedded.kafka.brokers system property is set by Embedded Kafka server to the addresses of the bootstrap servers 9 | spring.kafka.producer.bootstrap-servers=${spring.embedded.kafka.brokers} 10 | spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer 11 | spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer 12 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.rulers": [80], 3 | "editor.tabCompletion": "on", 4 | "editor.tabSize": 2, 5 | "editor.trimAutoWhitespace": true, 6 | "editor.formatOnSave": true, 7 | "editor.codeActionsOnSave": { 8 | "source.organizeImports": true, 9 | "source.fixAll.eslint": true 10 | }, 11 | 12 | "files.exclude": { 13 | "**/.DS_Store": true, 14 | "**/.git": true, 15 | "**/.hg": true, 16 | "**/.svn": true, 17 | "**/CVS": true, 18 | "dist": true, 19 | }, 20 | "files.insertFinalNewline": true, 21 | "files.trimTrailingWhitespace": true, 22 | 23 | "typescript.tsdk": "./node_modules/typescript/lib", 24 | "typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces": false, 25 | "typescript.preferences.quoteStyle": "single", 26 | "eslint.run": "onSave", 27 | "eslint.nodePath": "./node_modules", 28 | "eslint.validate": [ 29 | "javascript", 30 | "typescript" 31 | ] 32 | } 33 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/kafka/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | 3 | services: 4 | 5 | zookeeper: 6 | image: strimzi/kafka:0.11.3-kafka-2.1.0 7 | command: [ 8 | "sh", "-c", 9 | "bin/zookeeper-server-start.sh config/zookeeper.properties" 10 | ] 11 | ports: 12 | - "2181:2181" 13 | environment: 14 | LOG_DIR: /tmp/logs 15 | 16 | kafka: 17 | image: strimzi/kafka:0.11.3-kafka-2.1.0 18 | command: [ 19 | "sh", "-c", 20 | "bin/kafka-server-start.sh config/server.properties --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT}" 21 | ] 22 | depends_on: 23 | - zookeeper 24 | ports: 25 | - "9092:9092" 26 | environment: 27 | LOG_DIR: "/tmp/logs" 28 | KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 29 | KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 30 | KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 31 | -------------------------------------------------------------------------------- /incubator/swift/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | # Install the app dependencies 2 | FROM swift:5.2 as builder 3 | 4 | # Install OS updates 5 | RUN apt-get update \ 6 | && apt-get install -y libcurl4-openssl-dev libssl-dev \ 7 | && apt-get clean \ 8 | && echo 'Finished installing dependencies' 9 | 10 | # Install user-app dependencies 11 | WORKDIR "/project" 12 | COPY ./user-app ./ 13 | 14 | # Build project, and discover executable name 15 | RUN echo '#!/bin/bash' > run.sh \ 16 | && swift build -c release | tee output.txt \ 17 | && cat output.txt | awk 'END {print "./.build/x86_64-unknown-linux/release/" $NF}' >> run.sh \ 18 | && chmod 755 run.sh 19 | 20 | FROM swift:5.2-slim 21 | 22 | # Install OS updates 23 | RUN apt-get update \ 24 | && apt-get clean \ 25 | && echo 'Finished installing dependencies' 26 | 27 | WORKDIR "/project" 28 | COPY --from=builder /project/.build /project/.build 29 | COPY --from=builder /project/run.sh /project 30 | 31 | ENV PORT 8080 32 | EXPOSE 8080 33 | 34 | CMD ["./run.sh"] 35 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/kafka/src/main/java/org/acme/kafka/PriceGenerator.java: -------------------------------------------------------------------------------- 1 | package org.acme.kafka; 2 | 3 | import java.time.Duration; 4 | import java.util.Random; 5 | import java.util.concurrent.TimeUnit; 6 | 7 | import javax.enterprise.context.ApplicationScoped; 8 | 9 | import io.smallrye.mutiny.Multi; 10 | import org.eclipse.microprofile.reactive.messaging.Outgoing; 11 | 12 | import io.reactivex.Flowable; 13 | 14 | /** 15 | * A bean producing random prices every 5 seconds. 16 | * The prices are written to a Kafka topic (prices). The Kafka configuration is specified in the application configuration. 17 | */ 18 | @ApplicationScoped 19 | public class PriceGenerator { 20 | 21 | private Random random = new Random(); 22 | 23 | @Outgoing("generated-price") 24 | public Multi<Integer> generate() { 25 | return Multi.createFrom().ticks().every(Duration.ofSeconds(5)) 26 | .onOverflow().drop() 27 | .map(tick -> random.nextInt(100)); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /incubator/kitura/templates/default/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | // This configuration requires the CodeLLDB plugin: 6 | // https://github.com/vadimcn/vscode-lldb 7 | "name": "Remote Debug", 8 | "type": "lldb", 9 | "request": "custom", 10 | "initCommands": [ 11 | "platform select remote-linux", 12 | "platform connect connect://localhost:1234", 13 | "env LD_LIBRARY_PATH=/project/user-app/.build/debug" 14 | ], 15 | "targetCreateCommands": [ 16 | "file .build/x86_64-unknown-linux/debug/server" 17 | ], 18 | "processCreateCommands": [ 19 | "run" 20 | ], 21 | "sourceMap": { "/project/user-app" : "${workspaceFolder}" }, 22 | "exitCommands": [ 23 | "process kill" 24 | ] 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /incubator/swift/templates/simple/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | // This configuration requires the CodeLLDB plugin: 6 | // https://github.com/vadimcn/vscode-lldb 7 | "name": "Remote Debug", 8 | "type": "lldb", 9 | "request": "custom", 10 | "initCommands": [ 11 | "platform select remote-linux", 12 | "platform connect connect://localhost:1234", 13 | "env LD_LIBRARY_PATH=/project/user-app/.build/debug" 14 | ], 15 | "targetCreateCommands": [ 16 | "file .build/x86_64-unknown-linux/debug/simple" 17 | ], 18 | "processCreateCommands": [ 19 | "run" 20 | ], 21 | "sourceMap": { "/project/user-app" : "${workspaceFolder}" }, 22 | "exitCommands": [ 23 | "process kill" 24 | ] 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **To Reproduce** 13 | Steps to reproduce the behavior: 14 | 1. Go to '...' 15 | 2. Click on '....' 16 | 3. Scroll down to '....' 17 | 4. See error 18 | 19 | **Expected behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Actual behaviour** 23 | What is the actual behaviour. 24 | 25 | **Environment Details (please complete the following information):** 26 | - OS: [e.g. iOS] 27 | - Browser [e.g. chrome, safari] 28 | - Version [e.g. 22] 29 | 30 | **If applicable please specify:** 31 | - CLI version: 32 | - Stack you are using (including the version): 33 | 34 | **Screenshots** 35 | If applicable, add screenshots to help explain your problem. 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /incubator/quarkus/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | ## Stage 1 : build with maven builder image with native capabilities 2 | FROM quay.io/quarkus/centos-quarkus-maven:19.3.1-java11 AS build 3 | 4 | COPY . /project 5 | RUN cd /project && mvn -B install dependency:go-offline -DskipTests 6 | # Install user-app dependencies 7 | WORKDIR /project/user-app 8 | COPY ./user-app/src ./src 9 | COPY ./user-app/pom.xml ./ 10 | USER root 11 | RUN chown -R quarkus . 12 | USER quarkus 13 | RUN mvn -B -Pnative clean package 14 | 15 | 16 | ## Stage 2 : create the docker final image 17 | FROM registry.access.redhat.com/ubi8/ubi-minimal 18 | 19 | WORKDIR /work/ 20 | COPY --from=build /project/user-app/target/*-runner /work/application 21 | 22 | USER root 23 | RUN microdnf -y install shadow-utils \ 24 | && microdnf clean all ;\ 25 | useradd -r -g 0 -s /usr/sbin/nologin quarkus 26 | 27 | RUN chown -R quarkus /work 28 | RUN chmod -R g+w /work 29 | 30 | 31 | USER quarkus 32 | EXPOSE 8080 33 | CMD ["./application", "-Dquarkus.http.host=0.0.0.0"] 34 | -------------------------------------------------------------------------------- /experimental/vertx/image/project/pom.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8"?> 2 | <project> 3 | <modelVersion>4.0.0</modelVersion> 4 | 5 | <groupId>dev.appsody</groupId> 6 | <artifactId>vertx</artifactId> 7 | <version>0.1.4</version> 8 | <packaging>pom</packaging> 9 | 10 | <properties> 11 | <vertx.version>3.8.0</vertx.version> 12 | <vertx-maven-plugin.version>1.0.20</vertx-maven-plugin.version> 13 | <maven.compiler.source>1.8</maven.compiler.source> 14 | <maven.compiler.target>1.8</maven.compiler.target> 15 | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 16 | </properties> 17 | 18 | <dependencyManagement> 19 | <dependencies> 20 | <dependency> 21 | <groupId>io.vertx</groupId> 22 | <artifactId>vertx-stack-depchain</artifactId> 23 | <version>${vertx.version}</version> 24 | <type>pom</type> 25 | <scope>import</scope> 26 | </dependency> 27 | </dependencies> 28 | </dependencyManagement> 29 | 30 | </project> 31 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | prometheus.io/path: '/actuator/prometheus' 16 | monitoring: 17 | labels: 18 | k8s-app: APPSODY_PROJECT_NAME 19 | endpoints: 20 | - path: '/actuator/prometheus' 21 | readinessProbe: 22 | failureThreshold: 12 23 | httpGet: 24 | path: /actuator/health 25 | port: APPSODY_PORT 26 | initialDelaySeconds: 5 27 | periodSeconds: 2 28 | timeoutSeconds: 1 29 | livenessProbe: 30 | failureThreshold: 12 31 | httpGet: 32 | path: /actuator/liveness 33 | port: APPSODY_PORT 34 | initialDelaySeconds: 5 35 | periodSeconds: 2 36 | expose: true 37 | -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/kafka/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | zookeeper: 4 | image: strimzi/kafka:0.17.0-kafka-2.4.0 5 | command: [ 6 | "sh", "-c", 7 | "bin/zookeeper-server-start.sh config/zookeeper.properties" 8 | ] 9 | ports: 10 | - "2181:2181" 11 | environment: 12 | LOG_DIR: /tmp/logs 13 | 14 | kafka: 15 | image: strimzi/kafka:0.17.0-kafka-2.4.0 16 | command: [ 17 | "sh", "-c", 18 | "bin/kafka-server-start.sh config/server.properties --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT}" 19 | ] 20 | depends_on: 21 | - zookeeper 22 | ports: 23 | - "9092:9092" 24 | expose: 25 | - "9092" 26 | environment: 27 | LOG_DIR: "/tmp/logs" 28 | KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 29 | KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 30 | KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 31 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/default/src/test/java/org/acme/quickstart/GreetingResourceTest.java: -------------------------------------------------------------------------------- 1 | package org.acme.quickstart; 2 | 3 | import static io.restassured.RestAssured.given; 4 | import static org.hamcrest.CoreMatchers.is; 5 | 6 | import java.util.UUID; 7 | 8 | import org.junit.jupiter.api.Test; 9 | 10 | import io.quarkus.test.junit.QuarkusTest; 11 | 12 | @QuarkusTest 13 | public class GreetingResourceTest { 14 | 15 | @Test 16 | public void testHelloEndpoint() { 17 | given() 18 | .when().get("/hello") 19 | .then() 20 | .statusCode(200) 21 | .body(is("hello")); 22 | } 23 | 24 | @Test 25 | public void testGreetingEndpoint() { 26 | String uuid = UUID.randomUUID().toString(); 27 | given() 28 | .pathParam("name", uuid) 29 | .when().get("/hello/greeting/{name}") 30 | .then() 31 | .statusCode(200) 32 | .body(is("hello " + uuid)); 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 3 | <modelVersion>4.0.0</modelVersion> 4 | 5 | <groupId>stacks.app</groupId> 6 | <artifactId>stacks-app</artifactId> 7 | <version>1.0-SNAPSHOT</version> 8 | 9 | <properties> 10 | <maven.compiler.source>1.7</maven.compiler.source> 11 | <maven.compiler.target>1.7</maven.compiler.target> 12 | <src.dir>incubator/java-openliberty/image/project/util</src.dir> 13 | </properties> 14 | <build> 15 | <sourceDirectory>${src.dir}</sourceDirectory> 16 | </build> 17 | 18 | 19 | <dependencies> 20 | <!-- https://mvnrepository.com/artifact/org.osgi/org.osgi.core --> 21 | <dependency> 22 | <groupId>org.osgi</groupId> 23 | <artifactId>org.osgi.core</artifactId> 24 | <version>6.0.0</version> 25 | <scope>provided</scope> 26 | </dependency> 27 | </dependencies> 28 | </project> 29 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/kafka/src/main/resources/META-INF/resources/prices.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html> 2 | <html lang="en"> 3 | <head> 4 | <meta charset="UTF-8"> 5 | <title>Prices 6 | 7 | 9 | 11 | 12 | 13 |
14 | 15 |

Last price

16 |
17 |

The last price is N/A €.

18 |
19 |
20 | 21 | 22 | 28 | -------------------------------------------------------------------------------- /incubator/nodejs-express/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM appsody/nodejs:0.3 2 | 3 | ENV APPSODY_PROJECT_DIR=/project 4 | ENV APPSODY_MOUNTS=/:/project/user-app 5 | ENV APPSODY_DEPS=/project/user-app/node_modules 6 | 7 | ENV APPSODY_WATCH_DIR=/project/user-app 8 | ENV APPSODY_WATCH_IGNORE_DIR=/project/user-app/node_modules 9 | ENV APPSODY_WATCH_REGEX="^.*.js$" 10 | 11 | ENV APPSODY_PREP="npm install --prefix user-app" 12 | 13 | ENV APPSODY_RUN="npm start" 14 | ENV APPSODY_RUN_ON_CHANGE="npm start" 15 | ENV APPSODY_RUN_KILL=true 16 | 17 | ENV APPSODY_DEBUG="npm run debug" 18 | ENV APPSODY_DEBUG_ON_CHANGE="npm run debug" 19 | ENV APPSODY_DEBUG_KILL=true 20 | 21 | ENV APPSODY_TEST="npm test && npm test --prefix user-app" 22 | ENV APPSODY_TEST_ON_CHANGE="" 23 | ENV APPSODY_TEST_KILL=false 24 | 25 | COPY ./LICENSE /licenses/ 26 | COPY ./project /project 27 | COPY ./config /config 28 | WORKDIR /project 29 | RUN npm install 30 | 31 | ENV PORT=3000 32 | ENV APPSODY_DEBUG_PORT=9229 33 | ENV NODE_PATH=/project/user-app/node_modules 34 | 35 | EXPOSE 3000 36 | EXPOSE 9229 37 | -------------------------------------------------------------------------------- /experimental/rust-tide/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/number9/rust-tide-base:0.3.0 as server 2 | 3 | FROM rust:1.44.0-buster as builder 4 | 5 | COPY --from=server /project/server /project/server 6 | 7 | WORKDIR "/project/user-app" 8 | 9 | COPY * /project/user-app/ 10 | 11 | # get user application dependencies 12 | RUN cargo fetch 13 | 14 | #copy user code 15 | COPY user-app/src /project/user-app/ 16 | 17 | WORKDIR "/project/server/bin" 18 | 19 | # build for release 20 | RUN cargo build --release \ 21 | && echo "#!/bin/bash" > run.sh \ 22 | && bin=$(find ./target/release -maxdepth 1 -perm -111 -type f| head -n 1) \ 23 | && echo ./${bin##*/} >> run.sh \ 24 | && chmod 755 run.sh 25 | 26 | FROM debian:buster-slim 27 | 28 | RUN useradd rust 29 | 30 | WORKDIR "/project/user-app" 31 | 32 | # get files and built binary from previous image 33 | COPY --from=builder /project/server/bin/run.sh /project/server/bin/Cargo.toml /project/server/bin/target/release/ ./ 34 | 35 | USER rust 36 | 37 | ENV PORT 8000 38 | 39 | EXPOSE 8000 40 | 41 | CMD ["./run.sh"] 42 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Checklist: 2 | 3 | - [ ] Read the [Code of Conduct](https://github.com/appsody/website/blob/master/CODE_OF_CONDUCT.md) and [Contributing Guidelines](https://github.com/appsody/website/blob/master/CONTRIBUTING.md). 4 | 5 | - [ ] Followed the [commit message guidelines](https://github.com/appsody/website/blob/master/CONTRIBUTING.md#commit-message-guidelines). 6 | 7 | - [ ] Stack adheres to [Appsody stack structure](https://github.com/appsody/website/blob/master/content/docs/stacks/stacks-overview.md#stack-structure). 8 | 9 | ### Modifying an existing stack: 10 | 11 | - [ ] Updated the stack version in `stack.yaml` 12 | 13 | 14 | 15 | ### Contributing a new stack: 16 | 17 | - Describe how application dependencies are managed: 18 | 19 | - Explain how Appsody file watcher is utilized: 20 | 21 | - Describe other Appsody environment variables defined by the stack image: 22 | 23 | - Describe any limitations and known issues: 24 | 25 | 26 | ### Related Issues: 27 | 28 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/kafka/src/main/java/org/acme/kafka/PriceResource.java: -------------------------------------------------------------------------------- 1 | package org.acme.kafka; 2 | 3 | import javax.inject.Inject; 4 | import javax.ws.rs.GET; 5 | import javax.ws.rs.Path; 6 | import javax.ws.rs.Produces; 7 | import javax.ws.rs.core.MediaType; 8 | 9 | import org.jboss.resteasy.annotations.SseElementType; 10 | import org.reactivestreams.Publisher; 11 | 12 | import org.eclipse.microprofile.reactive.messaging.Channel; 13 | 14 | /** 15 | * A simple resource retrieving the "in-memory" "my-data-stream" and sending the items to a server sent event. 16 | */ 17 | @Path("/prices") 18 | public class PriceResource { 19 | 20 | @Inject 21 | @Channel("my-data-stream") 22 | Publisher prices; 23 | 24 | @GET 25 | @Path("/stream") 26 | @Produces(MediaType.SERVER_SENT_EVENTS) // denotes that server side events (SSE) will be produced 27 | @SseElementType("text/plain") // denotes that the contained data, within this SSE, is just regular text/plain data 28 | public Publisher stream() { 29 | return prices; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /experimental/nodejs-functions/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM appsody/nodejs-express:0.3 2 | 3 | ENV APPSODY_MOUNTS=/:/project/user-app/functions 4 | ENV APPSODY_DEPS=/project/user-app/functions/node_modules 5 | 6 | ENV APPSODY_WATCH_DIR=/project/user-app/functions 7 | ENV APPSODY_WATCH_IGNORE_DIR=/project/user-app/functions/node_modules 8 | 9 | ENV APPSODY_PREP="npm install --prefix user-app/functions && npm audit fix --prefix user-app/functions" 10 | 11 | ENV APPSODY_RUN="npm start" 12 | ENV APPSODY_RUN_ON_CHANGE="npm start" 13 | ENV APPSODY_RUN_KILL=true 14 | 15 | ENV APPSODY_DEBUG="npm run debug" 16 | ENV APPSODY_DEBUG_ON_CHANGE="npm run debug" 17 | ENV APPSODY_DEBUG_KILL=true 18 | 19 | ENV APPSODY_TEST="npm test && npm test --prefix user-app/functions" 20 | ENV APPSODY_TEST_ON_CHANGE="" 21 | ENV APPSODY_TEST_KILL=false 22 | 23 | COPY ./LICENSE /licenses/ 24 | COPY ./project /project/user-app 25 | COPY ./config /config 26 | WORKDIR /project 27 | RUN npm install && npm audit fix 28 | 29 | ENV PORT=3000 30 | ENV NODE_PATH=/project/user-app/functions/node_modules 31 | 32 | EXPOSE 3000 33 | EXPOSE 9229 34 | -------------------------------------------------------------------------------- /incubator/quarkus/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | # Dockerfile for building the stack 2 | FROM quay.io/quarkus/centos-quarkus-maven:19.3.1-java8 3 | 4 | COPY ./LICENSE /licenses/ 5 | COPY ./project /project 6 | COPY ./config /config 7 | 8 | WORKDIR /project 9 | 10 | RUN mvn -N io.takari:maven:wrapper -Dmaven=$(mvn help:evaluate -Dexpression=maven.version -q -DforceStdout) 11 | RUN mvn -B install dependency:go-offline -DskipTests 12 | 13 | RUN mkdir -p /project/user-app/target 14 | ENV APPSODY_MOUNTS=".:/project/user-app" 15 | ENV APPSODY_DEPS="/project/user-app/target;/home/quarkus/.m2" 16 | ENV APPSODY_PREP="" 17 | 18 | ENV APPSODY_RUN="./mvnw -B compile quarkus:dev" 19 | ENV APPSODY_RUN_ON_CHANGE="" 20 | ENV APPSODY_RUN_KILL=false 21 | 22 | ENV APPSODY_DEBUG="./mvnw -B -Ddebug compile quarkus:dev" 23 | ENV APPSODY_DEBUG_ON_CHANGE="" 24 | ENV APPSODY_DEBUG_KILL=false 25 | 26 | ENV APPSODY_TEST="./mvnw -B test" 27 | ENV APPSODY_TEST_ON_CHANGE="./mvnw -B test" 28 | ENV APPSODY_TEST_KILL=true 29 | 30 | WORKDIR /project/user-app 31 | 32 | ENV PORT=8080 33 | ENV APPSODY_DEBUG_PORT=5005 34 | 35 | EXPOSE 8080 36 | EXPOSE 5005 37 | -------------------------------------------------------------------------------- /incubator/kitura/image/config/app-deploy.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: appsody.dev/v1beta1 2 | kind: AppsodyApplication 3 | metadata: 4 | name: APPSODY_PROJECT_NAME 5 | spec: 6 | # Add fields here 7 | version: 1.0.0 8 | applicationImage: APPSODY_DOCKER_IMAGE 9 | stack: APPSODY_STACK 10 | service: 11 | type: NodePort 12 | port: APPSODY_PORT 13 | annotations: 14 | prometheus.io/scrape: 'true' 15 | monitoring: 16 | labels: 17 | k8s-app: APPSODY_PROJECT_NAME 18 | readinessProbe: 19 | # By default, Kitura's liveness and readiness endpoints are the same. 20 | # You may wish to implement a custom readiness endpoint that is appropriate for 21 | # the initialization of your app - if so, adjust the route here. 22 | failureThreshold: 12 23 | httpGet: 24 | path: /health 25 | port: APPSODY_PORT 26 | initialDelaySeconds: 5 27 | periodSeconds: 2 28 | timeoutSeconds: 1 29 | livenessProbe: 30 | failureThreshold: 12 31 | httpGet: 32 | path: /health 33 | port: APPSODY_PORT 34 | initialDelaySeconds: 5 35 | periodSeconds: 2 36 | expose: true 37 | -------------------------------------------------------------------------------- /experimental/rocket/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM rustlang/rust:nightly 2 | 3 | ENV CARGO_HOME=/usr/local/cargo/deps 4 | ENV CARGO_TARGET_DIR=$CARGO_HOME/target 5 | 6 | ENV APPSODY_MOUNTS=/Cargo.toml:/project/copy/Cargo.toml;/src:/project/user-app/src/ 7 | ENV APPSODY_DEPS=$CARGO_HOME 8 | ENV APPSODY_PROJECT_DIR=/project 9 | 10 | ENV APPSODY_WATCH_DIR="/project/user-app" 11 | ENV APPSODY_WATCH_IGNORE_DIR="/project/user-app/.appsody" 12 | ENV APPSODY_WATCH_REGEX="(^.*.rs$)" 13 | 14 | ENV ROCKET_ADDRESS=0.0.0.0 15 | ENV ROCKET_PORT=8000 16 | 17 | ENV APPSODY_PREP="cp /project/copy/Cargo.toml /project/user-app/Cargo.toml && cargo add -q appsody-rocket --path=../deps" 18 | 19 | ENV APPSODY_RUN="cargo run" 20 | ENV APPSODY_RUN_ON_CHANGE="cargo run" 21 | ENV APPSODY_RUN_KILL=true 22 | 23 | ENV APPSODY_TEST="cargo test -p appsody-rocket && cargo test" 24 | 25 | COPY ./LICENSE /licenses 26 | COPY ./project /project 27 | COPY ./config /config 28 | 29 | WORKDIR /project/deps 30 | 31 | RUN cp /project/cargo-add /usr/local/cargo/bin && cargo fetch 32 | 33 | WORKDIR /project/user-app 34 | 35 | ENV PORT=8000 36 | 37 | EXPOSE 8000 38 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/project/src/__tests__/acceptance/home-page.acceptance.ts: -------------------------------------------------------------------------------- 1 | import {Client} from '@loopback/testlab'; 2 | import {BootableRestApplication} from '../..'; 3 | import {setupApplication} from './test-helper'; 4 | 5 | describe('HomePage', () => { 6 | let app: BootableRestApplication; 7 | let client: Client; 8 | 9 | before('setupApplication', async () => { 10 | ({app, client} = await setupApplication()); 11 | }); 12 | 13 | after(async () => { 14 | await app.stop(); 15 | }); 16 | 17 | it('exposes a default home page', async () => { 18 | await client 19 | .get('/') 20 | .expect(200) 21 | .expect('Content-Type', /text\/html/); 22 | }); 23 | 24 | it('exposes self-hosted explorer', async () => { 25 | await client 26 | .get('/explorer/') 27 | .expect(200) 28 | .expect('Content-Type', /text\/html/) 29 | .expect(/LoopBack API Explorer/); 30 | }); 31 | 32 | it('exposes /health', async () => { 33 | await client 34 | .get('/health') 35 | .expect(200) 36 | .expect('Content-Type', /application\/json/); 37 | }); 38 | }); 39 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/default/src/main/resources/public/index.html: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html> 2 | <html> 3 | <head> 4 | <title>Hello from Appsody! 5 | 6 | 7 |

Hello from Appsody!

8 |

Next steps with Spring Boot 2: 9 |

21 |

22 | 23 | 24 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kafka/src/main/resources/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Hello from Appsody! 5 | 6 | 7 |

Hello from Appsody!

8 |

Next steps with Spring Boot 2: 9 |

21 |

22 | 23 | 24 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kotlin/src/main/resources/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Hello from Appsody! 5 | 6 | 7 |

Hello from Appsody!

8 |

Next steps with Spring Boot 2: 9 |

21 |

22 | 23 | 24 | -------------------------------------------------------------------------------- /experimental/vertx/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | # Dockerfile for building the stack 2 | FROM adoptopenjdk/openjdk8-openj9 3 | 4 | USER root 5 | RUN apt-get -qq update \ 6 | && apt-get -qq install -y curl maven \ 7 | && DEBIAN_FRONTEND=noninteractive apt-get -qq upgrade -y \ 8 | && apt-get -qq clean \ 9 | && rm -rf /tmp/* /var/lib/apt/lists/* 10 | RUN mkdir -p /.m2/repository 11 | 12 | COPY ./LICENSE /licenses/ 13 | COPY ./project /project 14 | COPY ./config /config 15 | WORKDIR /project/ 16 | RUN mvn -B install dependency:go-offline -DskipTests 17 | 18 | ENV APPSODY_USER_RUN_AS_LOCAL=true 19 | 20 | ENV APPSODY_MOUNTS=".:/project/user-app/;~/.m2/repository:/.m2/repository" 21 | ENV APPSODY_DEPS= 22 | 23 | ENV APPSODY_RUN="mvn -B compile vertx:run" 24 | ENV APPSODY_RUN_ON_CHANGE="" 25 | ENV APPSODY_RUN_KILL=false 26 | 27 | ENV APPSODY_DEBUG="mvn -B compile vertx:debug" 28 | ENV APPSODY_DEBUG_ON_CHANGE="" 29 | ENV APPSODY_DEBUG_KILL=false 30 | 31 | ENV APPSODY_TEST="mvn -B test" 32 | ENV APPSODY_TEST_ON_CHANGE="mvn -B test" 33 | ENV APPSODY_TEST_KILL=true 34 | 35 | WORKDIR /project/user-app 36 | 37 | ENV PORT=8080 38 | 39 | EXPOSE 8080 40 | EXPOSE 5005 41 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/templates/default/src/main/resources/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Hello from Appsody! 5 | 6 | 7 |

Hello from Appsody!

8 |

Next steps with Spring Boot 2: 9 |

21 |

22 | 23 | 24 | -------------------------------------------------------------------------------- /ci/list.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # setup environment 4 | . $( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/env.sh 5 | 6 | # expose an extension point for running beforer main 'list' processing 7 | exec_hooks $script_dir/ext/pre_list.d 8 | 9 | if [ -z "$STACKS_LIST" ] 10 | then 11 | echo "Listing all stacks" 12 | for repo_name in $REPO_LIST 13 | do 14 | repo_dir=$base_dir/$repo_name 15 | if [ -d $repo_dir ] 16 | then 17 | for stack_exists in $repo_dir/*/stack.yaml 18 | do 19 | if [ -f $stack_exists ] 20 | then 21 | var=`echo ${stack_exists#"$base_dir/"}` 22 | repo_stack=`awk '{split($1, a, "/*"); print a[1]"/"a[2]}' <<< $var` 23 | STACKS_LIST+=("$repo_stack") 24 | fi 25 | done 26 | fi 27 | done 28 | STACKS_LIST=${STACKS_LIST[@]} 29 | fi 30 | 31 | echo "Building stacks: $STACKS_LIST" 32 | 33 | # expose environment variable for stacks 34 | export STACKS_LIST 35 | 36 | # expose an extension point for running after main 'list' processing 37 | exec_hooks $script_dir/ext/post_list.d 38 | 39 | -------------------------------------------------------------------------------- /experimental/rust/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM rust:1.40 2 | 3 | RUN apt-get update && apt-get install -y lldb musl-tools 4 | RUN rustup target add x86_64-unknown-linux-musl 5 | RUN cargo install sccache 6 | 7 | ENV CARGO_HOME=/usr/local/cargo/deps 8 | ENV SCCACHE_DIR=/project/sccache 9 | ENV RUSTC_WRAPPER=sccache 10 | 11 | ENV APPSODY_MOUNTS=.:/project/user-app;~/.cache/sccache:/project/sccache 12 | ENV APPSODY_DEPS=$CARGO_HOME 13 | 14 | ENV APPSODY_WATCH_DIR="/project/user-app" 15 | ENV APPSODY_WATCH_REGEX="^(Cargo.toml|.*.rs)$" 16 | 17 | ENV APPSODY_RUN="cargo run --target x86_64-unknown-linux-musl" 18 | ENV APPSODY_RUN_ON_CHANGE="$APPSODY_RUN" 19 | ENV APPSODY_RUN_KILL=true 20 | 21 | ENV APPSODY_TEST="cargo test" 22 | 23 | ENV APPSODY_DEBUG="cargo build --target x86_64-unknown-linux-musl && lldb-server platform --listen '*:1234' --min-gdbserver-port 5000 --max-gdbserver-port 5001 --server" 24 | ENV APPSODY_DEBUG_ON_CHANGE="$APPSODY_DEBUG" 25 | ENV APPSODY_DEBUG_KILL=true 26 | 27 | COPY ./LICENSE /licenses 28 | COPY ./project /project 29 | COPY ./config /config 30 | 31 | WORKDIR /project/user-app 32 | 33 | ENV PORT=8000 34 | 35 | EXPOSE 8000 36 | EXPOSE 1234 37 | EXPOSE 5000 38 | -------------------------------------------------------------------------------- /incubator/kitura/image/project/deps/AppsodyKitura/Sources/AppsodyKitura/Logging.swift: -------------------------------------------------------------------------------- 1 | /** 2 | * This source file is supplied by the appsody/kitura base image. DO NOT MODIFY. 3 | */ 4 | 5 | import LoggerAPI 6 | import HeliumLogger 7 | 8 | /// Initialize logging using HeliumLogger, using the `LOG_LEVEL` environment 9 | /// variable. This must match the name of a `LoggerMessageType`, or `none` to 10 | /// disable logging entirely. 11 | /// 12 | /// If no `LOG_LEVEL` is specified, the default level of `info` will be used. 13 | /// 14 | func initializeLogging(value: String?) { 15 | let logLevel: LoggerMessageType 16 | switch value?.lowercased() { 17 | case "error": 18 | logLevel = .error 19 | case "warning": 20 | logLevel = .warning 21 | case "info": 22 | logLevel = .info 23 | case "verbose": 24 | logLevel = .verbose 25 | case "debug": 26 | logLevel = .debug 27 | case "exit": 28 | logLevel = .exit 29 | case "entry": 30 | logLevel = .entry 31 | case "none", "false", "off", "disabled": 32 | return 33 | default: 34 | logLevel = .info 35 | } 36 | HeliumLogger.use(logLevel) 37 | } 38 | -------------------------------------------------------------------------------- /incubator/node-red/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | # Install the app dependencies in a full Node docker image 2 | FROM node:12 3 | 4 | 5 | # Copying individual files/folders as buildah 1.9.0 does not honour .dockerignore 6 | COPY package*.json /project/ 7 | COPY *.js /project/ 8 | COPY user-app /project/user-app 9 | # Removing node_modules as we can not make assumptions about file structure of user-app 10 | RUN rm -rf /project/user-app/node_modules && mkdir -p /project/user-app/node_modules 11 | 12 | # Install stack dependencies 13 | WORKDIR /project 14 | RUN npm install --production 15 | 16 | # Install user-app dependencies 17 | WORKDIR /project/user-app 18 | RUN npm install --production 19 | 20 | # Creating a tar to work around poor copy performance when using buildah 1.9.0 21 | RUN cd / && tar czf project.tgz project 22 | 23 | # Copy the dependencies into a slim Node docker image 24 | FROM node:12-slim 25 | 26 | # Copy project with dependencies 27 | COPY --chown=node:node --from=0 /project.tgz / 28 | RUN tar xf project.tgz && chown -R node:node /project && rm project.tgz 29 | WORKDIR /project 30 | 31 | ENV NODE_ENV production 32 | ENV PORT 3000 33 | 34 | USER node 35 | 36 | EXPOSE 3000 37 | CMD ["npm", "start"] 38 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kotlin/src/main/kotlin/application/LivenessEndpoint.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2019 IBM Corp. All rights reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 | * except in compliance with the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the 10 | * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 11 | * either express or implied. See the License for the specific language governing permissions 12 | * and limitations under the License. 13 | */ 14 | 15 | package application 16 | 17 | import org.springframework.boot.actuate.endpoint.annotation.Endpoint 18 | import org.springframework.boot.actuate.endpoint.annotation.ReadOperation 19 | import org.springframework.stereotype.Component 20 | 21 | // Simple custom liveness check 22 | @Endpoint(id = "liveness") 23 | @Component 24 | class LivenessEndpoint { 25 | 26 | @ReadOperation 27 | fun testLiveness(): String { 28 | return "{\"status\":\"UP\"}" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /incubator/quarkus/templates/kafka/src/main/java/org/acme/kafka/PriceConverter.java: -------------------------------------------------------------------------------- 1 | package org.acme.kafka; 2 | 3 | import javax.enterprise.context.ApplicationScoped; 4 | 5 | import org.eclipse.microprofile.reactive.messaging.Acknowledgment; 6 | import org.eclipse.microprofile.reactive.messaging.Incoming; 7 | import org.eclipse.microprofile.reactive.messaging.Outgoing; 8 | 9 | import io.smallrye.reactive.messaging.annotations.Broadcast; 10 | 11 | /** 12 | * A bean consuming data from the "prices" Kafka topic and applying some conversion. 13 | * The result is pushed to the "my-data-stream" stream which is an in-memory stream. 14 | */ 15 | @ApplicationScoped 16 | public class PriceConverter { 17 | 18 | private static final double CONVERSION_RATE = 0.88; 19 | 20 | // Consume from the `prices` channel and produce to the `my-data-stream` channel 21 | @Incoming("prices") 22 | @Outgoing("my-data-stream") 23 | // Send to all subscribers 24 | @Broadcast 25 | // Acknowledge the messages before calling this method. 26 | @Acknowledgment(Acknowledgment.Strategy.PRE_PROCESSING) 27 | public double process(int priceInUsd) { 28 | return priceInUsd * CONVERSION_RATE; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kafka/src/main/java/application/config/KafkaProducer.java: -------------------------------------------------------------------------------- 1 | package application.config; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.boot.CommandLineRunner; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | import org.springframework.kafka.core.KafkaTemplate; 8 | 9 | import application.KafkaConsumer; 10 | 11 | import java.util.UUID; 12 | 13 | @Configuration 14 | public class KafkaProducer { 15 | 16 | @Autowired 17 | KafkaTemplate kafkaTemplate; 18 | 19 | private static String TOPIC_NAME = "orders"; 20 | 21 | // a simple kafka producer that publishes a message to the "orders" topic after the application is initialized 22 | @Bean 23 | public CommandLineRunner kafkaCommandLineRunner(KafkaConsumer kafkaConsumer) { 24 | return args -> { 25 | String data = "testData:" + UUID.randomUUID(); 26 | System.out.println("Sending message to kafka = " + data); 27 | kafkaTemplate.send(TOPIC_NAME, data); 28 | kafkaConsumer.getCountDownLatch().await(); 29 | }; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /incubator/kitura/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | # Install the app dependencies 2 | FROM swift:5.1 as builder 3 | 4 | # Install OS updates 5 | RUN apt-get update \ 6 | && apt-get install -y zlib1g-dev libcurl4-openssl-dev libssl-dev \ 7 | && apt-get clean \ 8 | && echo 'Finished installing dependencies' 9 | 10 | # Copy extracted project 11 | WORKDIR "/project" 12 | COPY . /project 13 | 14 | # Replace dependencies with a pristine copy, in case they have been modified 15 | RUN rm -rf /project/user-app/.appsody 16 | COPY ./deps /project/user-app/.appsody 17 | 18 | # Build project, and discover executable name 19 | WORKDIR "/project/user-app" 20 | RUN echo '#!/bin/bash' > run.sh \ 21 | && swift build -c release | tee output.txt \ 22 | && cat output.txt | awk 'END {print "./.build/x86_64-unknown-linux/release/" $NF}' >> run.sh \ 23 | && chmod 755 run.sh 24 | 25 | FROM swift:5.1-slim 26 | 27 | # Define a kitura user 28 | RUN useradd -ms /bin/bash kitura 29 | 30 | # Copy built project 31 | COPY --chown=kitura:kitura --from=builder /project /project 32 | 33 | # Configure listening port 34 | ENV PORT 8080 35 | EXPOSE 8080 36 | 37 | # Run application as kitura user 38 | USER kitura 39 | WORKDIR "/project/user-app" 40 | CMD ["./run.sh"] 41 | -------------------------------------------------------------------------------- /incubator/python-flask/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM python:3.7 2 | 3 | RUN pip install --upgrade pip 4 | 5 | RUN useradd -m worker 6 | WORKDIR /project 7 | # It is a real shame that WORKDIR doesn't honor the current user (or even take a chown option), so..... 8 | RUN chown worker:worker /project 9 | USER worker 10 | 11 | RUN pip install --upgrade --user pipenv 12 | ENV PATH=/home/worker/.local/bin:$PATH 13 | 14 | COPY --chown=worker:worker . ./ 15 | 16 | # First we get the dependencies for the stack itself 17 | RUN pipenv lock -r > requirements.txt 18 | # Now add in any for the app, that the developer has added (there seems to be 19 | # no easy way of specifying a different location for the Pipfile, so have to 20 | # change the working directory!) 21 | WORKDIR /project/userapp 22 | RUN pipenv lock -r > ../requirements-additional.txt 23 | # Now process the combined requirements 24 | WORKDIR /project 25 | RUN python -m pip install -r requirements.txt -t /project/deps 26 | RUN python -m pip install -r requirements-additional.txt -t /project/deps 27 | 28 | ENV PYTHONPATH=/project/deps 29 | ENV FLASK_APP=server/__init__.py 30 | 31 | ENV PORT=8080 32 | EXPOSE 8080 33 | CMD ["python", "-m", "flask", "run", "--host=0.0.0.0", "--port=8080"] -------------------------------------------------------------------------------- /incubator/nodejs/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM node:12 2 | 3 | ENV APPSODY_MOUNTS=/:/project/user-app 4 | ENV APPSODY_DEPS=/project/user-app/node_modules 5 | ENV APPSODY_PROJECT_DIR=/project 6 | 7 | ENV APPSODY_WATCH_DIR=/project/user-app 8 | ENV APPSODY_WATCH_IGNORE_DIR=/project/user-app/node_modules 9 | ENV APPSODY_WATCH_REGEX="^.*.js$" 10 | 11 | ENV APPSODY_PREP="npm install && npm run build --if-present" 12 | 13 | ENV APPSODY_RUN="npm start --node-options --require=appmetrics-dash/attach" 14 | ENV APPSODY_RUN_ON_CHANGE="npm start --node-options --require=appmetrics-dash/attach" 15 | ENV APPSODY_RUN_KILL=true 16 | 17 | ENV APPSODY_DEBUG="npm start --node-options --inspect=0.0.0.0 --require=appmetrics-dash/attach" 18 | ENV APPSODY_DEBUG_ON_CHANGE="npm start --node-options --inspect=0.0.0.0 --require=appmetrics-dash/attach" 19 | ENV APPSODY_DEBUG_KILL=true 20 | 21 | ENV APPSODY_TEST="npm test" 22 | ENV APPSODY_TEST_ON_CHANGE="" 23 | ENV APPSODY_TEST_KILL=false 24 | 25 | COPY ./LICENSE /licenses/ 26 | COPY ./project /project 27 | COPY ./config /config 28 | 29 | WORKDIR /project 30 | RUN npm install 31 | 32 | WORKDIR /project/user-app 33 | 34 | ENV PORT=3000 35 | ENV APPSODY_DEBUG_PORT=9229 36 | 37 | EXPOSE 3000 38 | EXPOSE 9229 39 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/default/src/main/java/application/LivenessEndpoint.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2019 IBM Corp. All rights reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 | * except in compliance with the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the 10 | * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 11 | * either express or implied. See the License for the specific language governing permissions 12 | * and limitations under the License. 13 | */ 14 | 15 | package application; 16 | 17 | import org.springframework.boot.actuate.endpoint.annotation.Endpoint; 18 | import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; 19 | import org.springframework.stereotype.Component; 20 | 21 | // Simple custom liveness check 22 | @Endpoint(id = "liveness") 23 | @Component 24 | public class LivenessEndpoint { 25 | 26 | @ReadOperation 27 | public String testLiveness() { 28 | return "{\"status\":\"UP\"}"; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/kafka/src/main/java/application/LivenessEndpoint.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2019 IBM Corp. All rights reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 | * except in compliance with the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the 10 | * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 11 | * either express or implied. See the License for the specific language governing permissions 12 | * and limitations under the License. 13 | */ 14 | 15 | package application; 16 | 17 | import org.springframework.boot.actuate.endpoint.annotation.Endpoint; 18 | import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; 19 | import org.springframework.stereotype.Component; 20 | 21 | // Simple custom liveness check 22 | @Endpoint(id = "liveness") 23 | @Component 24 | public class LivenessEndpoint { 25 | 26 | @ReadOperation 27 | public String testLiveness() { 28 | return "{\"status\":\"UP\"}"; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /incubator/kitura/image/project/deps/AppsodyKitura/Sources/AppsodyKitura/Metrics.swift: -------------------------------------------------------------------------------- 1 | /** 2 | * This source file is supplied by the appsody/kitura base image. DO NOT MODIFY. 3 | */ 4 | 5 | import Kitura 6 | import SwiftMetrics 7 | import SwiftMetricsDash 8 | import SwiftMetricsPrometheus 9 | import SwiftMetricsREST 10 | import LoggerAPI 11 | 12 | var swiftMetrics: SwiftMetrics? 13 | var swiftMetricsDash: SwiftMetricsDash? 14 | var swiftMetricsPrometheus: SwiftMetricsPrometheus? 15 | var swiftMetricsRest: SwiftMetricsREST? 16 | 17 | func initializeMetrics(router: Router) { 18 | do { 19 | let metrics = try SwiftMetrics() 20 | let dashboard = try SwiftMetricsDash(swiftMetricsInstance: metrics, endpoint: router) 21 | let prometheus = try SwiftMetricsPrometheus(swiftMetricsInstance: metrics, endpoint: router) 22 | let rest = try SwiftMetricsREST(swiftMetricsInstance: metrics, endpoint: router) 23 | 24 | swiftMetrics = metrics 25 | swiftMetricsDash = dashboard 26 | swiftMetricsPrometheus = prometheus 27 | swiftMetricsRest = rest 28 | Log.info("Initialized metrics.") 29 | } catch { 30 | Log.warning("Failed to initialize metrics: \(error)") 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/templates/default/src/main/java/application/LivenessEndpoint.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2019 IBM Corp. All rights reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file 5 | * except in compliance with the License. You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software distributed under the 10 | * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 11 | * either express or implied. See the License for the specific language governing permissions 12 | * and limitations under the License. 13 | */ 14 | 15 | package application; 16 | 17 | import org.springframework.boot.actuate.endpoint.annotation.Endpoint; 18 | import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; 19 | import org.springframework.stereotype.Component; 20 | 21 | // Simple custom liveness check 22 | @Endpoint(id = "liveness") 23 | @Component 24 | public class LivenessEndpoint { 25 | 26 | @ReadOperation 27 | public String testLiveness() { 28 | return "{\"status\":\"UP\"}"; 29 | } 30 | 31 | } -------------------------------------------------------------------------------- /ci/nginx/nginx.conf: -------------------------------------------------------------------------------- 1 | user nginx; 2 | worker_processes 1; 3 | daemon off; 4 | 5 | # Default nginx image symlinks: 6 | # ln -sf /dev/stdout /var/log/nginx/access.log 7 | # ln -sf /dev/stderr /var/log/nginx/error.log 8 | 9 | error_log /var/log/nginx/error.log warn; 10 | pid /var/run/nginx.pid; 11 | 12 | events { 13 | worker_connections 1024; 14 | } 15 | 16 | http { 17 | include /etc/nginx/mime.types; 18 | default_type application/octet-stream; 19 | 20 | sendfile off; 21 | tcp_nopush on; 22 | tcp_nodelay on; 23 | 24 | gzip on; 25 | gzip_min_length 50; 26 | gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon; 27 | 28 | keepalive_timeout 65; 29 | 30 | server { 31 | listen 8080; 32 | 33 | access_log /var/log/nginx/access.log; 34 | 35 | error_page 404 /404.html; 36 | 37 | server_name localhost; 38 | 39 | location / { 40 | root /opt/www/public; 41 | autoindex on; 42 | } 43 | 44 | location /health { 45 | access_log off; 46 | error_log off; 47 | return 200 'ok'; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /experimental/rust-tide/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM rust:1.44.0-buster 2 | 3 | RUN apt-get update && apt-get install -y gdbserver 4 | 5 | ENV CARGO_HOME=/usr/local/cargo/deps 6 | 7 | ENV APPSODY_MOUNTS=/:/project/user-app 8 | ENV APPSODY_DEPS=$CARGO_HOME 9 | ENV APPSODY_WATCH_DIR=/project/user-app 10 | ENV APPSODY_WATCH_REGEX="^(Cargo.toml|.*.rs)$" 11 | ENV APPSODY_WATCH_IGNORE_DIR=/project/server/bin/target;/project/user-app/target 12 | ENV APPSODY_PROJECT_DIR=/project 13 | ENV APPSODY_RUN="cargo run --manifest-path ../server/bin/Cargo.toml" 14 | ENV APPSODY_RUN_ON_CHANGE=$APPSODY_RUN 15 | ENV APPSODY_RUN_KILL=true 16 | 17 | ENV APPSODY_DEBUG="cargo build --manifest-path ../server/bin/Cargo.toml && gdbserver localhost:1234 /project/server/bin/target/debug/rust-tide-server" 18 | ENV APPSODY_DEBUG_ON_CHANGE="$APPSODY_DEBUG" 19 | ENV APPSODY_DEBUG_KILL=true 20 | ENV APPSODY_DEBUG_PORT=1234 21 | 22 | ENV APPSODY_TEST="/project/test-stack.sh" 23 | ENV APPSODY_TEST_ON_CHANGE=$APPSODY_TEST 24 | ENV APPSODY_TEST_KILL=true 25 | 26 | COPY ./LICENSE /licenses/ 27 | COPY ./project /project 28 | COPY ./config /config 29 | 30 | WORKDIR /project/user-app 31 | 32 | # Expose the relevant ports (change this to be specific to your application). 33 | ENV PORT=8000 34 | 35 | EXPOSE 8000 36 | EXPOSE 1234 -------------------------------------------------------------------------------- /incubator/java-microprofile/image/project/util/check_version: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This is a small utility script that uses OSGi VersionRange and Version 3 | # classes to verify whether or not a specified version matches is contained 4 | # within a specified range. 5 | # 6 | cd "$( dirname "${BASH_SOURCE[0]}" )" 7 | 8 | if [ $# -lt 1 ]; then 9 | ACTION=range 10 | else 11 | ACTION=$1 12 | shift 13 | fi 14 | 15 | range_check() { 16 | java -cp .:org.osgi.core-6.0.0.jar RangeIncludesVersion "$1" "$2" 17 | return $? 18 | } 19 | 20 | sniff() { 21 | range_check "$1" "$2" 22 | if [ $? -ne $3 ]; then 23 | echo "Test |'$1' contains '$2'| should return $3. Got $?" 24 | exit 1 25 | fi 26 | } 27 | 28 | case "$ACTION" in 29 | build) 30 | wget -q https://repo1.maven.org/maven2/org/osgi/org.osgi.core/6.0.0/org.osgi.core-6.0.0.jar 31 | javac -cp org.osgi.core-6.0.0.jar *.java 32 | 33 | sniff "[0.3,0.4)" "0.3.7" 0 34 | sniff "[0.3,0.4)" "0.4" 1 35 | sniff "[0.3,0.4)" "0.2" 1 36 | exit 0 37 | ;; 38 | contains) 39 | if [ $# -lt 2 ]; then 40 | echo "Specify version information: check_version contains " 41 | exit 1 42 | fi 43 | 44 | range_check "$1" "$2" 45 | exit $? 46 | ;; 47 | esac 48 | 49 | -------------------------------------------------------------------------------- /incubator/java-openliberty/image/project/util/check_version: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This is a small utility script that uses OSGi VersionRange and Version 3 | # classes to verify whether or not a specified version matches is contained 4 | # within a specified range. 5 | # 6 | cd "$( dirname "${BASH_SOURCE[0]}" )" 7 | 8 | if [ $# -lt 1 ]; then 9 | ACTION=range 10 | else 11 | ACTION=$1 12 | shift 13 | fi 14 | 15 | range_check() { 16 | java -cp .:org.osgi.core-6.0.0.jar RangeIncludesVersion "$1" "$2" 17 | return $? 18 | } 19 | 20 | sniff() { 21 | range_check "$1" "$2" 22 | if [ $? -ne $3 ]; then 23 | echo "Test |'$1' contains '$2'| should return $3. Got $?" 24 | exit 1 25 | fi 26 | } 27 | 28 | case "$ACTION" in 29 | build) 30 | wget -q https://repo1.maven.org/maven2/org/osgi/org.osgi.core/6.0.0/org.osgi.core-6.0.0.jar 31 | javac -cp org.osgi.core-6.0.0.jar *.java 32 | 33 | sniff "[0.3,0.4)" "0.3.7" 0 34 | sniff "[0.3,0.4)" "0.4" 1 35 | sniff "[0.3,0.4)" "0.2" 1 36 | exit 0 37 | ;; 38 | contains) 39 | if [ $# -lt 2 ]; then 40 | echo "Specify version information: check_version contains " 41 | exit 1 42 | fi 43 | 44 | range_check "$1" "$2" 45 | exit $? 46 | ;; 47 | esac 48 | 49 | -------------------------------------------------------------------------------- /experimental/java-spring-boot2-liberty/image/project/util/check_version: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # This is a small utility script that uses OSGi VersionRange and Version 3 | # classes to verify whether or not a specified version matches is contained 4 | # within a specified range. 5 | # 6 | cd "$( dirname "${BASH_SOURCE[0]}" )" 7 | 8 | if [ $# -lt 1 ]; then 9 | ACTION=range 10 | else 11 | ACTION=$1 12 | shift 13 | fi 14 | 15 | range_check() { 16 | java -cp .:org.osgi.core-6.0.0.jar RangeIncludesVersion "$1" "$2" 17 | return $? 18 | } 19 | 20 | sniff() { 21 | range_check "$1" "$2" 22 | if [ $? -ne $3 ]; then 23 | echo "Test |'$1' contains '$2'| should return $3. Got $?" 24 | exit 1 25 | fi 26 | } 27 | 28 | case "$ACTION" in 29 | build) 30 | wget -q https://repo1.maven.org/maven2/org/osgi/org.osgi.core/6.0.0/org.osgi.core-6.0.0.jar 31 | javac -cp org.osgi.core-6.0.0.jar *.java 32 | 33 | sniff "[0.3,0.4)" "0.3.7" 0 34 | sniff "[0.3,0.4)" "0.4" 1 35 | sniff "[0.3,0.4)" "0.2" 1 36 | exit 0 37 | ;; 38 | contains) 39 | if [ $# -lt 2 ]; then 40 | echo "Specify version information: check_version contains " 41 | exit 1 42 | fi 43 | 44 | range_check "$1" "$2" 45 | exit $? 46 | ;; 47 | esac 48 | 49 | -------------------------------------------------------------------------------- /experimental/rust/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rust:1.40 as builder 2 | 3 | # Install musl 4 | RUN apt-get update && apt-get install -y musl-tools 5 | RUN rustup target add x86_64-unknown-linux-musl 6 | 7 | WORKDIR "/project/user-app" 8 | 9 | # copy dependency files 10 | COPY /user-app/Cargo.toml Cargo.toml 11 | 12 | # get user application dependencies 13 | RUN cargo fetch 14 | 15 | #copy user code 16 | COPY /user-app/src ./src 17 | 18 | # build for release 19 | RUN cargo build --release --target x86_64-unknown-linux-musl \ 20 | && cp $(find ./target/x86_64-unknown-linux-musl/release -maxdepth 1 -perm -111 -type f| head -n 1) ./target/app \ 21 | && chmod 755 ./target/app 22 | 23 | # Create a "nobody" non-root user for the next image by crafting an /etc/passwd 24 | # file that the next image can copy in. This is necessary since the next image 25 | # is based on scratch, which doesn't have adduser, cat, echo, or even sh. 26 | RUN echo "nobody:x:65534:65534:Nobody:/:" > /etc_passwd 27 | 28 | FROM scratch 29 | 30 | WORKDIR "/project/user-app" 31 | 32 | # get files and built binary from previous image 33 | COPY --from=builder /project/user-app/target/app ./ 34 | COPY --from=builder /etc_passwd /etc/passwd 35 | 36 | ENV PORT 8000 37 | 38 | USER nobody 39 | 40 | EXPOSE 8000 41 | 42 | CMD ["./app"] 43 | -------------------------------------------------------------------------------- /incubator/kitura/image/project/deps/AppsodyKitura/Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.1 2 | import PackageDescription 3 | 4 | /** 5 | * This source file is supplied by the appsody/kitura base image. DO NOT MODIFY. 6 | */ 7 | 8 | let package = Package( 9 | name: "AppsodyKitura", 10 | products: [ 11 | .library( 12 | name: "AppsodyKitura", 13 | targets: ["AppsodyKitura"] 14 | ) 15 | ], 16 | dependencies: [ 17 | .package(url: "https://github.com/IBM-Swift/Kitura.git", .upToNextMinor(from: "2.9.0")), 18 | .package(url: "https://github.com/IBM-Swift/HeliumLogger.git", from: "1.9.0"), 19 | .package(url: "https://github.com/IBM-Swift/Configuration.git", from: "3.0.0"), 20 | .package(url: "https://github.com/RuntimeTools/SwiftMetrics.git", from: "2.0.0"), 21 | .package(url: "https://github.com/IBM-Swift/Health.git", from: "1.0.0"), 22 | .package(url: "https://github.com/IBM-Swift/Kitura-OpenAPI.git", from: "1.3.0"), 23 | ], 24 | targets: [ 25 | .target(name: "AppsodyKitura", dependencies: [ "Kitura", "HeliumLogger", "Configuration", "SwiftMetrics", "Health", "KituraOpenAPI" ]), 26 | .testTarget(name: "AppsodyKituraTests" , dependencies: [.target(name: "AppsodyKitura"), "Kitura", "HeliumLogger" ]) 27 | ] 28 | ) 29 | -------------------------------------------------------------------------------- /samples/sample-stack/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | # Dockerfile for building the stack 2 | 3 | #See https://appsody.dev/docs/stacks/environment-variables for more information about each variable. 4 | 5 | ENV APPSODY_MOUNTS= #Mount directories 6 | 7 | ENV APPSODY_WATCH_DIR= #Directories to watch for changes in. 8 | ENV APPSODY_WATCH_IGNORE_DIR= #Directories to ignore changes in. 9 | ENV APPSODY_WATCH_REGEX= #Regex expression to describe which files are watched for changes in. 10 | 11 | ENV APPSODY_INSTALL= #Optional command executed before RUN/TEST/DEBUG 12 | 13 | ENV APPSODY_RUN= #Command executed in 'run' mode. 14 | ENV APPSODY_RUN_ON_CHANGE= #Command executed in 'run' mode when a change is detected. 15 | ENV APPSODY_RUN_KILL= #Signals whether to kill the server process before starting the ON_CHANGE action. 16 | 17 | ENV APPSODY_DEBUG= #Command executed in 'debug' mode 18 | ENV APPSODY_DEBUG_ON_CHANGE= #Command executed in 'debug' mode when a change is detected. 19 | ENV APPSODY_DEBUG_KILL= #Signals whether to kill the server process before starting the ON_CHANGE action. 20 | 21 | ENV APPSODY_TEST= #Command executed in 'test' mode 22 | ENV APPSODY_TEST_ON_CHANGE= #Command executed in 'test' mode when a change is detected. 23 | ENV APPSODY_TEST_KILL= #Signals whether to kill the server process before starting the ON_CHANGE action. 24 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/templates/scaffold/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # Transpiled JavaScript files from Typescript 61 | /dist 62 | 63 | # Cache used by TypeScript's incremental build 64 | *.tsbuildinfo 65 | -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/Dockerfile-stack: -------------------------------------------------------------------------------- 1 | FROM appsody/nodejs:0.4 2 | 3 | ENV APPSODY_PROJECT_DIR=/project 4 | ENV APPSODY_MOUNTS=/:/project/user-app 5 | ENV APPSODY_DEPS=/project/user-app/node_modules 6 | 7 | ENV APPSODY_WATCH_DIR=/project/user-app 8 | ENV APPSODY_WATCH_IGNORE_DIR=/project/user-app/node_modules;/project/user-app/dist 9 | ENV APPSODY_WATCH_REGEX="^.*.ts$" 10 | 11 | # LoopBack 4 applications require 'npm run build' to transpile TypeScript source code 12 | ENV APPSODY_PREP="npm install --prefix user-app && npm run build --prefix user-app" 13 | 14 | ENV APPSODY_RUN="npm run pretest --prefix user-app && npm start" 15 | ENV APPSODY_RUN_ON_CHANGE="npm run pretest --prefix user-app && npm start" 16 | ENV APPSODY_RUN_KILL=true 17 | 18 | ENV APPSODY_DEBUG="npm run debug" 19 | ENV APPSODY_DEBUG_ON_CHANGE="npm run pretest --prefix user-app && npm run debug" 20 | ENV APPSODY_DEBUG_KILL=true 21 | ENV APPSODY_DEBUG_PORT=9229 22 | 23 | ENV APPSODY_TEST="npm test && npm test --prefix user-app" 24 | ENV APPSODY_TEST_ON_CHANGE="" 25 | ENV APPSODY_TEST_KILL=false 26 | 27 | COPY ./LICENSE /licenses/ 28 | COPY ./project /project 29 | COPY ./config /config 30 | 31 | WORKDIR /project 32 | RUN npm install && npm run pretest 33 | 34 | ENV PORT=3000 35 | ENV NODE_PATH=/project/user-app/node_modules 36 | 37 | EXPOSE 3000 38 | EXPOSE 9229 39 | -------------------------------------------------------------------------------- /experimental/rocket/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rustlang/rust:nightly as builder 2 | 3 | WORKDIR "/project" 4 | 5 | COPY /deps /project/deps 6 | 7 | # copy dependency files 8 | COPY /copy/Cargo.toml cargo-add /project/ 9 | 10 | #get stack dependencies 11 | RUN mv /project/cargo-add /usr/local/cargo/bin \ 12 | && cargo fetch --manifest-path /project/deps/Cargo.toml \ 13 | && cargo add -q appsody-rocket --path=../deps \ 14 | && mkdir /project/user-app \ 15 | && mv /project/Cargo.toml /project/user-app/ 16 | 17 | WORKDIR "/project/user-app" 18 | # get user application dependencies 19 | RUN cargo fetch 20 | 21 | #copy user code 22 | COPY /user-app/src /project/user-app/src/ 23 | 24 | ENV ROCKET_ADDRESS=0.0.0.0 25 | 26 | ENV ROCKET_PORT=8000 27 | 28 | # build for release 29 | RUN cargo build --release \ 30 | && echo "#!/bin/bash" > run.sh \ 31 | && bin=$(find ./target/release -maxdepth 1 -perm -111 -type f| head -n 1) \ 32 | && echo ./${bin##*/} >> run.sh \ 33 | && chmod 755 run.sh 34 | 35 | FROM rust:1.37-slim 36 | 37 | WORKDIR "/project" 38 | 39 | # get files and built binary from previous image 40 | COPY --from=builder /project/user-app/run.sh /project/user-app/Cargo.toml /project/user-app/target/release/ ./ 41 | 42 | RUN rm -rf build deps examples incremental 43 | 44 | RUN useradd rust 45 | 46 | USER rust 47 | 48 | EXPOSE 8000 49 | 50 | CMD ["./run.sh"] -------------------------------------------------------------------------------- /incubator/nodejs-loopback/image/project/Dockerfile: -------------------------------------------------------------------------------- 1 | # Install the app dependencies in a full Node docker image 2 | FROM node:12 3 | 4 | # Copying individual files/folders as buildah 1.9.0 does not honour .dockerignore 5 | COPY *.json /project/ 6 | COPY user-app /project/user-app 7 | COPY src /project/src 8 | 9 | # Removing node_modules as we can not make assumptions about file structure of user-app 10 | RUN rm -rf /project/user-app/node_modules && mkdir -p /project/user-app/node_modules 11 | 12 | # Install stack dependencies 13 | WORKDIR /project 14 | RUN npm install 15 | 16 | # Install user-app dependencies 17 | WORKDIR /project/user-app 18 | # RUN `npm install` instead of `npm install --production` as we need to transpile TS code 19 | RUN npm install 20 | 21 | # Creating a tar to work around poor copy performance when using buildah 1.9.0 22 | RUN cd / && tar czf /project.tgz project 23 | 24 | # Copy the dependencies into a slim Node docker image 25 | FROM node:12-slim 26 | 27 | # Copy project with dependencies 28 | COPY --chown=node:node --from=0 /project.tgz / 29 | RUN tar xf project.tgz && chown -R node:node /project && rm project.tgz 30 | WORKDIR /project 31 | 32 | # Make sure TypeScript source code is transpiled 33 | RUN npm run build && npm run build --prefix user-app 34 | 35 | ENV NODE_ENV production 36 | ENV PORT 3000 37 | 38 | USER node 39 | 40 | CMD ["npm", "start"] 41 | -------------------------------------------------------------------------------- /incubator/java-spring-boot2/templates/default/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 7 | {{.stack.parentpomgroup}} 8 | {{.stack.parentpomid}} 9 | {{.stack.parentpomrange}} 10 | 11 | 12 | 13 | dev.appsody 14 | default-application 15 | 0.0.1-SNAPSHOT 16 | jar 17 | 18 | 23 | 24 | 25 | 30 | 31 | org.springframework.boot 32 | spring-boot-starter-web 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /experimental/rocket/templates/simple/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /experimental/rust/templates/simple/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /incubator/nodejs/templates/simple/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /incubator/quarkus/templates/default/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /incubator/quarkus/templates/kafka/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /incubator/starter/templates/simple/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /samples/sample-stack/templates/hello/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/kafka/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /incubator/nodejs-express/templates/simple/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /incubator/python-flask/templates/simple/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } -------------------------------------------------------------------------------- /experimental/nodejs-functions/templates/simple/.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Appsody: run", 6 | "type": "shell", 7 | "command": "appsody run", 8 | "group": "build", 9 | "problemMatcher": [] 10 | }, 11 | { 12 | "label": "Appsody: debug", 13 | "type": "shell", 14 | "command": "appsody debug", 15 | "group": "build", 16 | "problemMatcher": [] 17 | }, 18 | { 19 | "label": "Appsody: test", 20 | "type": "shell", 21 | "command": "appsody test", 22 | "group": "test", 23 | "problemMatcher": [] 24 | }, 25 | { 26 | "label": "Appsody: build", 27 | "type": "shell", 28 | "command": "appsody build", 29 | "group": "build", 30 | "problemMatcher": [] 31 | }, 32 | { 33 | "label": "Appsody: deploy", 34 | "type": "shell", 35 | "command": "appsody deploy", 36 | "group": "build", 37 | "problemMatcher": [] 38 | }, 39 | { 40 | "label": "Appsody: stop", 41 | "type": "shell", 42 | "command": "appsody stop", 43 | "group": "build", 44 | "problemMatcher": [] 45 | } 46 | ] 47 | } --------------------------------------------------------------------------------