-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
👋 Howdy folks,
Whilst Gitpod is an open-source project, the contributing experience isn’t as good as it should be. We are working on making improvements to this but for now I highly recommend starting a discussion over at www.gitpod.io/chat in the #contributing discussion room whilst our CONTRIBUTING.md is built and knowledge is transferred.
Topics to cover:
- Fundamental knowledge (leeway, components)
- Establishing a development loop
- Tips and Tricks (telepresence)
- Formatting your code
- Expectation related to unit/integration testing
- Testing changes to gitpod-io/openvscode-server in gitpod-io/gitpod
- ... ?
Testing gitpod-io/vscode in gitpod-io/gitpod
gitpod-io/openvscode-server#22 (comment)
Listing components that can be built
$ leeway collect
chart/config/db/init:init-scripts ae337ce2e9ec67cd718513b257ff8cd85a714610
chart/config/db/init:release-tar eb17b2de8c76e531e5709ef48f7bdd86b863e71e
chart:helm 667269128c21450b6c175baf0cdb5e4882350121
chart:release-tars 8cffdf01efe4c7537429bc1af1ff0fe7f7c48fbc
components/blobserve:app 730ea1ae76bf4093f7746283e0d69b334ec06883
components/blobserve:docker b2175eaaf501aa05afa3612f17dba26669773c73
components/common-go:lib 2bfc80de94e06e38d0647deb41238219579f8142
components/content-service-api/go:lib 2b1120a2b313f22187a61cd9f98f12751831a0b9
components/content-service-api/typescript:lib 22cc835ca83200c09c65ef3c61a54540d46d5b67
components/content-service:app 7fc4d1abd19cefc19546556d08db61120837ea21
components/content-service:docker 855920f3ec5fc1f9b7a91674dced7fae1dfdee4f
components/content-service:lib f7c0cc7a68e0823c02bb70675e9184196987d610
components/dashboard:app 3318c542c680c561adfa051b928b1a1b151a1d40
components/dashboard:docker 7c1bd1573940f74904878436c883db7839160897
components/dashboard:static c2913a250f9d81e94c97f2008854bbc9639e7224
components/docker-up:app bc627fb214f9e3841ad727954ed3315ce0366d65
components/docker-up:bin-docker-up 78c9f70c084102985cb26090f8b126d3f266c3f8
components/docker-up:bin-runc-facade 5ae1bbe839d625d15acfb4e486d113a6c5567276
components/docker-up:bin-slirp-docker-proxy 1a78583a52b1632f2d28a2e1d1024d34f5af6538
components/docker-up:docker 34288bcc4ce3d4fa6fd27457968effb2be6ae2a4
components/ee/agent-smith/cmd/testbed:app c8c4bd69af2f3f0f15a874f7721989d6e9c8553e
components/ee/agent-smith/cmd/testtarget:app 207c18496686c730b4d71a3d6ad742eb02f5e1c9
components/ee/agent-smith:app 6785c68ce8c9a555830d27200faee6e45fafff1a
components/ee/agent-smith:docker 6c2ba35676e79f0aa8f845d0bed8dde600c69c6e
components/ee/agent-smith:example-config c880a98daf78e302e7bb3d94037a7bc29201440b
components/ee/agent-smith:falco-bpf-probe a4a5fa479c5b752f2cafa4612edbb250188902a6
components/ee/db-sync:app 898391328aac4579fbd897d7e96e0d5f08036ceb
components/ee/db-sync:dbtest ffaad84d463d5d8a5877242f26d5156a67bc6c69
components/ee/db-sync:docker 5fe851ee5f079671757a1fa4ef53a046c1cb0f74
components/ee/kedge:app 19092a548bbb586f7c99e943cf5973781e2d9a51
components/ee/kedge:docker fac7eecf1b7a271e1e5ab36cb749afdc4de1e1ce
components/ee/payment-endpoint:app fb42ef1719ce9eac8ec3b4bd420b21b23c6f5e8a
components/ee/payment-endpoint:dbtest b654381cd1f2925d933e58ef8eff531add4f9ef1
components/ee/payment-endpoint:docker 3026939e3e54d4d175d097fc36a959d093c63c32
components/ee/payment-endpoint:lib 5382cf515211c5ed9237e953f5a43563a7c5fb8a
components/ee/ws-scheduler:app c93033a4a72fa6394635387de3f43c7fd005a0b5
components/ee/ws-scheduler:docker 3d0ed83e79a09d440cfbcf5b6a36c949f62aa757
components/gitpod-cli:app 4dedc567570aee3bacb949ac022d6f66c97d3ae9
components/gitpod-db:dbtest 3a78c2822e413e4dab8cf6c47719bf18b88c52dc
components/gitpod-db:dbtest-init 80ca7f12b9ad4846f300be923a531dbd19d3739e
components/gitpod-db:docker 5696f09049e663db221e332adc341120dab53657
components/gitpod-db:lib 4a644712b408234baed43ddd1efbe45381066455
components/gitpod-db:migrations 472d19145e31a91cd2ff4bef706df66e1fc51ed9
components/gitpod-messagebus:lib ece6118677a7e14c7372499314c3c7c9275d8520
components/gitpod-protocol/go:lib 74e0017ea2360c48ef608f238623c41b0d9bfcc6
components/gitpod-protocol:gitpod-schema 07eded344851b96a647dab04db931ea7e9b1eabe
components/gitpod-protocol:lib 8fb9fec856276c6a8605907ce5b0ffbc8e5422cc
components/gitpod-protocol:publish 61252f9cfc3f88481db9dee86ad0733508ac8627
components/gitpod-protocol:scripts eb0117c390b90b52eac25a1a4552646cbedf8aa8
components/gitpod-protocol:theia-plugin-list f866641781b4cb91dda46b6407575faa2c92079f
components/ide/code:docker a68bc563d72a481ecb34c6d9144e6d0233434466
components/ide/theia:docker b8914cf40115453d62359bc2a0fa86a6d5b00759
components/image-builder-api/go:lib 5ead334bdc5e930cd823ae4cfdaf7a7797411004
components/image-builder-api/typescript:lib 62c8d9b6a904459d32300507ca682d326b7bf193
components/image-builder-bob:app 9cb57ac81995181afbe4e5791179c4c2a5f87031
components/image-builder-bob:docker c5cd6cb0f18cba271b09b0715573cae190326d90
components/image-builder-mk3/workspace-image-layer:pack 4b43acf97007fece57b1454adc3441a9ca569a59
components/image-builder-mk3:app 8dc343e04909173e4ccc0aa26146bb6463622abf
components/image-builder-mk3:docker a81f04290bc1d714806f7efc90e63492bbd24d55
components/image-builder/workspace-image-layer:pack 09e88d5af744a88d6d944c92bd7f586b42783a77
components/image-builder:app 28ac84b22a239ae61daffd96d8d9d422a0456541
components/image-builder:docker 539010ef659eef2136b475fce2056b1121c48be3
components/licensor/typescript:lib 542a6f37b7977a8144c78fc9c46317bb0b27a03b
components/licensor:app d7a093c9294ae10955d4ebc3690f4a0ff3b8dd2c
components/licensor:lib 9a7202332e5587c5de533b80aa058688173800bb
components/local-app-api/go:lib 83e0891fab37b3885b9aaefd530b136fed13185a
components/local-app-api/typescript-grpcweb:lib 6dde5df0cbc4d29d43f793fe89d24f7e59a9fbec
components/local-app-api/typescript-grpcweb:publish 00f216d8ad83b8bc4998cfa192fd080692b59829
components/local-app-api/typescript-grpcweb:scripts 4f6ed105cb7ed58bc317a393dbb555249ed46be0
components/local-app-api:proto cc43657954e88d5d0b9f1016a320a19f2728be04
components/local-app:app 2a9910b8c3320a587b636b87791444c7cdcb441b
components/local-app:app-darwin c5c8d37653fbdc0486c1f68d16d4578241568264
components/local-app:app-linux 14dd5cabd657cbb987fafc2203b8176fb0c45f56
components/local-app:app-windows 7cd09a39e0899614d6057fd49d230fb55840cd7c
components/local-app:docker 0a72b5547467901287582bf843a88d5a08d74fe1
components/local-app:version 82ae5fa1da3d65e6e5d6a85683277a11776c2932
components/proxy:docker 3a578ce04b338ea8bd8ee46e76ad7abb68d40db4
components/registry-facade-api/go:lib 22c08bb79582e65010fbf9ac0a3c3c0dacada34a
components/registry-facade:app c0f3efa75c8a4e6b6cef36b0c4e9f7b9b408234e
components/registry-facade:docker e9620cf8e29b2c21751df8be5cc92a469cbf0a4f
components/registry-facade:lib efad3500b36d4e25607ee66790fd8eed30383014
components/server:app d9961f6cee504ca714fcf0e5899e49cddaa10f84
components/server:dbtest f70ab136696937f08cf019f5a5ff25166d81f75d
components/server:docker d92b343368143cf419d3b79d6fd2cd9fe825972e
components/server:lib 74a7001e8870fb5cbfeac6ee3154ec432f42a9ed
components/service-waiter:app 15851f2aa6e1f6e29718f2f78c335cef7800536e
components/service-waiter:docker 36db8624eb58f874aca34e310560ffc7de065602
components/supervisor-api/go:lib 6afed03d7c447f12f0e37c4cb49409af61dc9ec8
components/supervisor-api/typescript-grpc:lib 63f896a2446bc78190d17e3e45cd897c79e5b358
components/supervisor-api/typescript-grpc:publish 79481d34db7b630f42e5f7db58aa42b799888213
components/supervisor-api/typescript-grpcweb:lib d17eb6b22e4ee1d48027cd614668e9862ce9cf5f
components/supervisor-api/typescript-grpcweb:publish f87798a36b96428cea08512ab560972aafe7a86a
components/supervisor-api:proto fb1b9b94a340231f236086af20465a2797e35b88
components/supervisor/frontend:app bd642626b2cc08893fae00b4f36ee6b8a6e0b20c
components/supervisor:app c16ab20411e979aa73108bb54318f6e719397a9a
components/supervisor:docker 0abafc48214059506f34c415d963a89609d7d372
components/supervisor:dropbear daf199936ca83eeeec5a0042bd15c1bbe334d585
components/workspacekit:app 6c5539dd906eb4ffa31b5ffb03c9e4248a37f06b
components/workspacekit:fuse-overlayfs 9d21f84360f725fc368da29c16b648c699776dbb
components/workspacekit:lib e9d4a54ec2f5dcdb45774aeadd20bcee6d3c0b16
components/ws-daemon-api/go:lib ddad567b4eb109768e2901cede59281811661e97
components/ws-daemon-api/typescript:lib 61ba5f3e9964fd2c4ddb5babae17c83bab36ac4d
components/ws-daemon/nsinsider:app 7a9f619f58c0363552067f17ee603532723fc486
components/ws-daemon/seccomp-profile-installer:app 54e825b84d46c1aca02631911847cdf09da626fa
components/ws-daemon/seccomp-profile-installer:docker 6b67a35975671cf00fc48778b97409b15f262a8c
components/ws-daemon/seccomp-profile-installer:profile 5b134d03db382140a4998418cc4b17d8590d5a22
components/ws-daemon/shiftfs-module-loader:docker c1fa75e10e15037d35c0fd85bb084e9aa6ded700
components/ws-daemon:app bd18a4adfa79e08ea35282e64e75fb128b15b4df
components/ws-daemon:content-initializer 33e6c32ef85a5d66a8be1db9031c155b7e11f166
components/ws-daemon:docker 92a3f86476e4b0cd826f52e3d3c27586981fc59f
components/ws-manager-api/go:lib f7938430707d70402a1c09cdc9b651034d694838
components/ws-manager-api/typescript:lib 75737e6597f4d4dc7c90a9e23fefc16adb8f729d
components/ws-manager-bridge-api/go:lib 1ec0ea5546f762f9cd8732dc7e0ff009f17c145b
components/ws-manager-bridge-api/typescript:lib 5a2558175dfe65e8c1d4c459895557ca222bb323
components/ws-manager-bridge:app 57269e29ec7c63278b1fa16c19e6fb62cf4da8a1
components/ws-manager-bridge:docker 941f4e7a08c143a394ecfb58f17ceec1844a86d3
components/ws-manager:app 6edd27e24ab0a1f026d1bfb0edd56b9c52574782
components/ws-manager:docker fcaf38db4f702e9a97cee75182dee7fe3bb7e5e1
components/ws-manager:docker-debug abeac7fc745b752b56ee0447a68c12e9ff36ef5f
components/ws-manager:integration-test 96cabd0ee25723b9f508c48bdc3ba0bfb6c68e91
components/ws-manager:userns-test-fixtures 1f5c4da2982339540bdb625db89f1daae52f4ec6
components/ws-proxy:app a17f4014420c1690228d337d1234f9de3a87d259
components/ws-proxy:docker 506ab1cbd177680a43a3c2adeb6c40bd54fa3853
components:all 86420a967b7cd1b46989dd2a7d03c65841b6a2a9
components:all-apps cf269d1051ce7688296310fd96e5d4f0cfa64ef6
components:all-docker c68b9f4e275f6282b1d0d795a306c82e9c349220
components:docker-versions 614de95842f70cf1dd9f4df870a16c16d7ed1f13
dev/addlicense:app 08a17724b9d99a22f6136391300aaae3c5a9e9d0
dev/blowtorch:app f82c9e3fcb6c4a96699afc5324b05156c37e8bcb
dev/gpctl:app fcf82cb3c64353f2dcd3daa7695fa48a3eafdcca
dev/image:docker b6fa1e3b6c3e48ca254947b9243cfb4664b5ab8b
dev/loadgen:app 631c79c3644b888d57ac5121b864de7050308e74
dev/poolkeeper:app 488800613c6e364541aa492ce208d131aca15715
dev/poolkeeper:docker 5f1fbb75e6e53a1709562e7ab051f4730ef3171b
dev/sweeper:app e1a1e3db4fbc8eca19c5de9fe58082116170305a
dev/sweeper:docker 57aaf3345762726d5ba6ef00fdcd5492b51ec9d4
dev/telepresence-hack:copy-mounts f1a5deaa15579a3fcf3589f57f2996424b0a14f6
dev/version-manifest:app c47e6f353d9d260ec9486b27c8cf30bbd8499d84
dev:all d30688b6f0287ff56e6c9447c3c915e8f96929b0
install/docker/examples/gitpod-gitlab/gitlab:docker 50f7aa99b08247497a08cc02c9f89ea96867603a
install/docker/gitpod-image:docker 1429e29f1c94cbd857e4662ed569884c83ba72ae
install/gcp-terraform/environment/installer/modules:all c8bdee7ad5ddbd73fd2358c46544ca3f8c84242d
install/gcp-terraform/environment/installer/modules:installer 08c5cd22daa00b9f31584688a88db8e3816d8148
install/gcp-terraform/environment/installer:lib 0cb15deedf8ba4d089f0b81f9732c69afb6f3ae7
install/gcp-terraform/modules:all b2e4df0e34f496bae8aaf4056e3c1788e2bc5809
install/gcp-terraform/modules:installer 95e010fb06339eade18924da06b5a00a168bfb0f
install:all 10ba72ab0b1d4b42609b967814dba972bc68b884
install:release-tar 3eaa8f62f183e3f9ace76d70c91a1b3de4706d29
test:app 2429487ca0f911a4fc40e7810d3730470935d375
test:docker 9aab1e558d7d2fb49e9efdffaa2fb36da56e718c
Building a component
$ leeway build components/ws-daemon:app
Create a component
- Create it
$ mkdir components/geoff
$ cd components/geoff
$ leeway init geoff
$ leeway collect |grep geoff
components/geoff:geoff b38b4f9aeac36f45915368a183bc1b6f8bd8a874
- Configure it to be built
In the root you'll find a [WORKSPACE.yaml](https://github.com/gitpod-io/gitpod/blob/master/WORKSPACE.yaml)
which is the root configuration for leeway. The default target for the workspace is components:all
. Walk down the tree and open up [components/BUILD.yaml](https://github.com/gitpod-io/gitpod/blob/master/components/BUILD.yaml)
which defines the package all
which specifies lists as dependencies of everything that should be built by that target.
deps:
- components/blobserve:docker
- components/content-service:docker
**- components/geoff:docker**