Skip to content

Commit f39a94f

Browse files
committed
build/rofl: Bump rofl-containers
1 parent f729982 commit f39a94f

10 files changed

Lines changed: 85 additions & 30 deletions

build/rofl/artifacts.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ var LatestContainerArtifacts = ArtifactsConfig{
2121
Kernel: "https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage1.bin#e5d4d654ca1fa2c388bf64b23fc6e67815893fc7cb8b7cfee253d87963f54973",
2222
Stage2: "https://github.com/oasisprotocol/oasis-boot/releases/download/v0.6.2/stage2-podman.tar.bz2#b2ea2a0ca769b6b2d64e3f0c577ee9c08f0bb81a6e33ed5b15b2a7e50ef9a09f",
2323
Container: ContainerArtifactsConfig{
24+
// TODO release new rofl-container
2425
Runtime: "https://github.com/oasisprotocol/oasis-sdk/releases/download/rofl-containers%2Fv0.8.6/rofl-containers#5aa26a3c5a7e1d284e217959d89b7a620ea7b7fc5079909e25042124ffb384e8",
2526
},
2627
}

cmd/rofl/public_var.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,6 @@ func init() {
253253
publicVarSetCmd.Flags().AddFlagSet(common.ForceFlag)
254254
publicVarCmd.AddCommand(publicVarSetCmd)
255255

256-
// public-var import flags and registration.
257256
publicVarImportCmd.Flags().AddFlagSet(roflCommon.DeploymentFlags)
258257
publicVarImportCmd.Flags().AddFlagSet(common.ForceFlag)
259258
publicVarCmd.AddCommand(publicVarImportCmd)

cmd/rofl/public_var_test.go

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
cliConfig "github.com/oasisprotocol/cli/config"
1414
)
1515

16-
func TestPublicVarMetadataKeyRejectsInvalidNames(t *testing.T) {
16+
func TestPublicVarRejectsInvalidNames(t *testing.T) {
1717
for _, name := range []string{
1818
"",
1919
"API-URL",
@@ -28,7 +28,7 @@ func TestPublicVarMetadataKeyRejectsInvalidNames(t *testing.T) {
2828
}
2929
}
3030

31-
func TestParsePublicVarValueRejectsInvalidValues(t *testing.T) {
31+
func TestParsePublicVarRejectsInvalidValues(t *testing.T) {
3232
for _, value := range [][]byte{
3333
{0xff},
3434
} {
@@ -45,12 +45,12 @@ func TestPublicVarCommandsUpdateManifest(t *testing.T) {
4545
t.Chdir(tmpDir)
4646

4747
const (
48-
testGreetingVarName = "GREETING"
49-
testGreetingValue = "hello"
50-
testAPIURLVarName = "API_URL"
51-
testAPIURLValue = "https://example.com?a=b#c"
52-
testConfigVarName = "CONFIG"
53-
testConfigValue = `{"mode":"prod"}`
48+
testGreetingVar = "GREETING"
49+
testGreetingValue = "hello"
50+
testAPIURLVar = "API_URL"
51+
testAPIURLValue = "https://example.com?a=b#c"
52+
testConfigVar = "CONFIG"
53+
testConfigValue = `{"mode":"prod"}`
5454
)
5555

5656
prevConfig := *cliConfig.Global()
@@ -83,54 +83,61 @@ deployments:
8383
greetingFile := filepath.Join(tmpDir, "greeting.txt")
8484
err = os.WriteFile(greetingFile, []byte(testGreetingValue), 0o600)
8585
require.NoError(err)
86-
publicVarSetCmd.Run(publicVarSetCmd, []string{testGreetingVarName, greetingFile})
86+
publicVarSetCmd.Run(publicVarSetCmd, []string{testGreetingVar, greetingFile})
8787

8888
envFile := filepath.Join(tmpDir, ".env")
89-
env := fmt.Sprintf("# public vars\n%s=%s # trailing comment\n%s=%s\n", testAPIURLVarName, testAPIURLValue, testConfigVarName, testConfigValue)
89+
env := fmt.Sprintf("# public vars\n%s=%s # trailing comment\n%s=%s\n", testAPIURLVar, testAPIURLValue, testConfigVar, testConfigValue)
9090
err = os.WriteFile(envFile, []byte(env), 0o600)
9191
require.NoError(err)
9292
publicVarImportCmd.Run(publicVarImportCmd, []string{envFile})
9393

9494
manifest, err := buildRofl.LoadManifest()
9595
require.NoError(err)
9696
metadata := manifest.Deployments["testnet"].Metadata
97-
require.Equal(testGreetingValue, metadata[publicVarMetadataPrefix+testGreetingVarName])
98-
require.Equal(testAPIURLValue, metadata[publicVarMetadataPrefix+testAPIURLVarName])
99-
require.Equal(testConfigValue, metadata[publicVarMetadataPrefix+testConfigVarName])
97+
require.Equal(testGreetingValue, metadata[publicVarMetadataPrefix+testGreetingVar])
98+
require.Equal(testAPIURLValue, metadata[publicVarMetadataPrefix+testAPIURLVar])
99+
require.Equal(testConfigValue, metadata[publicVarMetadataPrefix+testConfigVar])
100100

101101
// Test public-var get
102102
output := captureStdout(t, func() {
103-
publicVarGetCmd.Run(publicVarGetCmd, []string{testGreetingVarName})
103+
publicVarGetCmd.Run(publicVarGetCmd, []string{testGreetingVar})
104104
})
105-
require.Contains(output, fmt.Sprintf("Name: %s", testGreetingVarName))
105+
require.Contains(output, fmt.Sprintf("Name: %s", testGreetingVar))
106106
require.Contains(output, fmt.Sprintf("Value: %s", testGreetingValue))
107107

108108
// Test public-var rm
109-
publicVarRmCmd.Run(publicVarRmCmd, []string{testGreetingVarName})
109+
publicVarRmCmd.Run(publicVarRmCmd, []string{testGreetingVar})
110110
manifest, err = buildRofl.LoadManifest()
111111
require.NoError(err)
112112
metadata = manifest.Deployments["testnet"].Metadata
113-
require.NotContains(metadata, publicVarMetadataPrefix+testGreetingVarName)
114-
require.Equal(testAPIURLValue, metadata[publicVarMetadataPrefix+testAPIURLVarName])
115-
require.Equal(testConfigValue, metadata[publicVarMetadataPrefix+testConfigVarName])
113+
require.NotContains(metadata, publicVarMetadataPrefix+testGreetingVar)
114+
require.Equal(testAPIURLValue, metadata[publicVarMetadataPrefix+testAPIURLVar])
115+
require.Equal(testConfigValue, metadata[publicVarMetadataPrefix+testConfigVar])
116116

117117
// Override public variable to an empty string.
118118
emptyFile := filepath.Join(tmpDir, "empty.txt")
119119
err = os.WriteFile(emptyFile, nil, 0o600)
120120
require.NoError(err)
121121
withForce(t, true, func() {
122-
publicVarSetCmd.Run(publicVarSetCmd, []string{testConfigVarName, emptyFile})
122+
publicVarSetCmd.Run(publicVarSetCmd, []string{testConfigVar, emptyFile})
123123
})
124124
manifest, err = buildRofl.LoadManifest()
125125
require.NoError(err)
126126
metadata = manifest.Deployments["testnet"].Metadata
127-
require.Equal(testAPIURLValue, metadata[publicVarMetadataPrefix+testAPIURLVarName])
128-
require.Equal("", metadata[publicVarMetadataPrefix+testConfigVarName])
127+
require.Equal(testAPIURLValue, metadata[publicVarMetadataPrefix+testAPIURLVar])
128+
require.Equal("", metadata[publicVarMetadataPrefix+testConfigVar])
129129
}
130130

131131
func withForce(t *testing.T, enabled bool, fn func()) {
132132
t.Helper()
133133

134+
boolFlagValue := func(v bool) string {
135+
if v {
136+
return "true"
137+
}
138+
return "false"
139+
}
140+
134141
prev := cliCommon.IsForce()
135142
require.NoError(t, cliCommon.ForceFlag.Set("force", boolFlagValue(enabled)))
136143
defer func() {
@@ -139,10 +146,3 @@ func withForce(t *testing.T, enabled bool, fn func()) {
139146

140147
fn()
141148
}
142-
143-
func boolFlagValue(v bool) string {
144-
if v {
145-
return "true"
146-
}
147-
return "false"
148-
}

docs/rofl.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,53 @@ Run `rofl secret rm <secret-name>` to remove the secret from your manifest file.
186186

187187
![code shell](../examples/rofl/secret-rm.in.static)
188188

189+
## Public variables management {#public-var}
190+
191+
Public variables are stored unencrypted in ROFL app metadata and exposed to
192+
containers as environment variables. Use `rofl secret` for confidential values.
193+
194+
### Set public variable {#public-var-set}
195+
196+
Run `rofl public-var set <name> <filename>|-` to store a public variable in the
197+
manifest file.
198+
199+
If you have the value in a file, run:
200+
201+
![code shell](../examples/rofl/public-var-set-file.in.static)
202+
203+
You can also feed the value from standard input:
204+
205+
![code shell](../examples/rofl/public-var-set-stdin.in.static)
206+
207+
Use `--force` to replace an existing public variable.
208+
209+
### Import public variables from `.env` files {#public-var-import}
210+
211+
Run `rofl public-var import <dot-env-file>|-` to bulk-import public variables
212+
from a [dotenv](https://github.com/motdotla/dotenv) compatible file (key=value
213+
with `#` comments).
214+
215+
![code shell](../examples/rofl/public-var-import.in.static)
216+
217+
Each `KEY=VALUE` pair becomes a separate public variable in your manifest. Use
218+
`--force` to replace existing public variables.
219+
220+
### Get public variable info {#public-var-get}
221+
222+
Run `rofl public-var get <name>` to show the value currently stored in your
223+
manifest file.
224+
225+
![code shell](../examples/rofl/public-var-get.in.static)
226+
227+
![code](../examples/rofl/public-var-get.out.static)
228+
229+
### Remove public variable {#public-var-rm}
230+
231+
Run `rofl public-var rm <name>` to remove the public variable from your manifest
232+
file.
233+
234+
![code shell](../examples/rofl/public-var-rm.in.static)
235+
189236
## Update ROFL app config on-chain {#update}
190237

191238
Use `rofl update` command to push the ROFL app's configuration to the chain:
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
oasis rofl public-var get API_URL
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Name: API_URL
2+
Value: https://api.example.com
3+
Size: 23 bytes
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
oasis rofl public-var import .env.production
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
oasis rofl public-var rm API_URL
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
oasis rofl public-var set API_URL api-url.txt
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
echo -n "https://api.example.com" | oasis rofl public-var set API_URL -

0 commit comments

Comments
 (0)