You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+44-4
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,8 @@
5
5
6
6
This is a Github CI action which wraps Viam's cloud build system. Use this to build and publish your Viam module for multiple platforms.
7
7
8
+
If you run into trouble setting this up, file a bug on this repo or reach out on our [Discord](https://discord.gg/viam).
9
+
8
10
## What is Viam cloud build?
9
11
10
12
Cloud build is cross-compilation infrastructure that we provide to module authors so you can publish your module for multiple platforms. (x86 and ARM Linux, ideally MacOS as well).
@@ -16,32 +18,70 @@ Your customers are deploying to different kinds of hardware, and prototyping on
16
18
1. Set up build commands in your meta.json ([instructions below](#build-commands)). You can test these on your laptop by running `viam module build local`
17
19
1. Create a .github/workflows/viam-build.yml in your repo with the default contents below
18
20
1. Set up repo secrets using [auth instructions](#auth-instructions) below
19
-
1. Create a tag like 0.0.1 (todo: make this an RC and link to RC) and push to github; your module should build and deploy on the desired platforms
21
+
1. Create a tag like 0.0.1 and push to github; your module should build and deploy on the desired platforms
20
22
21
23
Default contents:
22
24
23
25
```yml
24
26
# see https://github.com/viamrobotics/upload-module for help
25
-
# todo: example should restrict to tags
26
27
on:
27
28
push:
29
+
tags:
30
+
- '[0-9]+.[0-9]+.[0-9]+'
28
31
29
32
jobs:
30
33
publish:
31
34
runs-on: ubuntu-latest
32
35
steps:
33
36
- uses: actions/checkout@v3
34
-
- uses: viamrobotics/build-action@main
37
+
- uses: viamrobotics/build-action@v1
35
38
with:
39
+
# note: you can replace this line with 'version: ""' if you want to test the build process without deploying
36
40
version: ${{ github.ref_name }}
37
41
key-id: ${{ secrets.viam_key_id }}
38
42
key-value: ${{ secrets.viam_key_value }}
39
43
```
40
44
41
45
## Auth instructions
42
46
47
+
1. Run `viam organizations list` to view your organization ID.
48
+
2. Create a key with `viam organization api-key create --org-id YOUR_ORG_UUID --name descriptive-key-name`. This command outputs an ID + a value, both of which you will use in step 4 below. If the command doesn't exist, update your CLI version.
49
+
3. In the github repo for your project, go to 'Settings' -> 'Secrets and variables' -> 'Actions'
50
+
4. Create two new secrets using the 'New repository secret' button:
51
+
- `viam_key_id`with the UUID from "Key ID:" in your terminal
52
+
- `viam_key_value`with the string from "Key Value:" in your terminal
53
+
5. All set! If you copy the YAML example above, it will use these secrets to authenticate to Viam. If you have already tried the action and it failed because the secrets were missing, you can trigger a re-run from your repo's 'Actions' tab.
54
+
55
+
## Build commands
56
+
57
+
In order for cloud builds to work, you'll need to create a build stanza in your module's meta.json. (If you don't have a meta.json, start with the 'create' and 'upload' sections of our [registry docs](https://docs.viam.com/registry/)).
58
+
59
+
Here's an example, taken from our [golang wifi repo](https://github.com/viam-labs/wifi-sensor):
You can test this command by running `viam module build local` on your laptop. This will run your build instructions without submitting a cloud build job.
73
+
43
74
## Environment and base image
44
75
76
+
On Linux builds, you'll be using the same Debian layer that builds our golang RDK. If something is missing, you can `apt-get install` it.
77
+
78
+
For MacOS, you'll have a runner with most of the libraries for our golang RDK installed as homebrew packages. If something is missing, you can `brew install` it.
0 commit comments