gitpod-io / gitpod

The developer platform for on-demand cloud development environments to create software faster and more securely.
https://www.gitpod.io
GNU Affero General Public License v3.0
12.83k stars 1.23k forks source link

Contributing to Gitpod #5618

Closed ghuntley closed 2 years ago

ghuntley commented 3 years ago

👋 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:

Testing gitpod-io/vscode in gitpod-io/gitpod

https://github.com/gitpod-io/vscode/pull/22#issuecomment-890948435

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

  1. Create it
$ mkdir components/geoff
$ cd components/geoff
$ leeway init geoff
$ leeway collect |grep geoff
components/geoff:geoff                                         b38b4f9aeac36f45915368a183bc1b6f8bd8a874
  1. 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 allwhich specifies lists as dependencies of everything that should be built by that target.

deps:
      - components/blobserve:docker
      - components/content-service:docker
      **- components/geoff:docker**
anbraten commented 2 years ago

Linking https://github.com/gitpod-io/gitpod/issues/6466#issuecomment-1059650869 as I don't know where it belongs 🙈