stack-orchestrator/app/data/stacks/build-support
2023-04-03 16:41:07 -04:00
..
README.md key missing line 2023-04-03 16:41:07 -04:00
stack.yml Working feature 2023-02-20 12:46:56 -07:00

Build Support Stack

Instructions

JS/TS/NPM builds need an npm registry to store intermediate package artifacts. This can be supplied by the user (e.g. using a hosted registry or even npmjs.com), or a local registry using gitea can be deployed by stack orchestrator. To use a user-supplied registry set these environment variables:

CERC_NPM_REGISTRY_URL and CERC_NPM_AUTH_TOKEN

Leave CERC_NPM_REGISTRY_URL un-set to use the local gitea registry.

1. Build support containers

$ laconic-so --stack build-support build-containers

Note that the scheme/gerbil builder container can take a while to build so if you aren't going to build scheme projects it can be skipped with:

$ laconic-so --stack build-support build-containers --exclude cerc/builder-gerbil

2. Deploy Gitea Package Registry

$ laconic-so --stack package-registry setup-repositories
$ laconic-so --stack package-registry build-containers 
$ laconic-so --stack package-registry deploy up
[+] Running 3/3
 ⠿ Network laconic-aecc4a21d3a502b14522db97d427e850_gitea       Created                                                                                    0.0s
 ⠿ Container laconic-aecc4a21d3a502b14522db97d427e850-db-1      Started                                                                                    1.2s
 ⠿ Container laconic-aecc4a21d3a502b14522db97d427e850-server-1  Started                                                                                    1.9s
New user 'gitea_admin' has been successfully created!
This is your gitea access token: 84fe66a73698bf11edbdccd0a338236b7d1d5c45. Keep it safe and secure, it can not be fetched again from gitea.
To use with laconic-so set this environment variable: export CERC_NPM_AUTH_TOKEN=3e493e77b3e83fe9e882f7e3a79dd4d5441c308b
Created the organization cerc-io
Gitea was configured to use host name: gitea.local, ensure that this resolves to localhost, e.g. with sudo vi /etc/hosts
Success, gitea is properly initialized
$

3. Configure the hostname gitea.local

How to do this is OS-dependent but usually involves editing a hosts file. For example on Linux add this line to the file /etc/hosts (needs sudo):

127.0.0.1       gitea.local

Test with:

$ ping gitea.local
PING gitea.local (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.147 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.033 ms

Although not necessary in order to build and publish packages, you can now access the Gitea web interface at: http://gitea.local:3000 using these credentials: gitea_admin/admin1234 (Note: please properly secure Gitea if public internet access is allowed).

Now npm packages can be built:

Build npm Packages

Ensure that CERC_NPM_AUTH_TOKEN is set with the token printed above when the package-registry stack was deployed (the actual token value will be different than shown in this example):

$ export CERC_NPM_AUTH_TOKEN=84fe66a73698bf11edbdccd0a338236b7d1d5c45
$ laconic-so build-npms --include laconic-sdk