A nested pipeline's environment does not pass through to a `uses` step.
Opened this issue · 0 comments
smoser commented
I was trying to use environment
from a nested pipeline
in a uses
stanza. The environment variable didnt' pass through as I wanted.
$ melange version | grep ^[A-Z]
GitVersion: v0.12.1-7-g94476be
GitCommit: 94476be97a34c3d0b0dece6c4b2ec596960b1b34
GitTreeState: clean
BuildDate: '2024-09-26T17:58:32Z'
GoVersion: go1.23.1
Compiler: gc
Platform: linux/amd64
Given the two files:
test-me.yaml
# test-me.yaml
package:
name: test-me
version: 1.0
epoch: 0
environment:
contents:
packages:
- busybox
environment:
BAR: "the other day I saw a BAR"
pipeline:
- environment:
FOO: "WINNER WINNER"
pipeline:
- runs: |
echo "==== FOO=$FOO ==="
echo "==== BAR=$BAR ==="
- uses: test/dump-env
pipelines/test/dump-env
name: dump your environment
pipeline:
- name: "show env"
runs: |
fails=0
[ -n "$FOO" ] && echo "PASS: FOO got $FOO" ||
{ echo "FAIL: FOO was empty"; fails=$((fails+1)); }
[ -n "$BAR" ] && echo "PASS: BAR got $BAR" ||
{ echo "FAIL: BAR was empty"; fails=$((fails+1)); }
exit $fails
build command and output are below. you can see that the 'run' section gets both the global environment (BAR) and the "local" environment ("FOO"), but the uses
pipeline does not get access to the local variable (FOO).
$ melange build test-me.yaml --repository-append=./packages \
--keyring-append=local-melange.rsa.pub \
--signing-key=local-melange.rsa \
--arch=x86_64 --pipeline-dir=./pipelines/ \
-k https://packages.wolfi.dev/os/wolfi-signing.rsa.pub \
-r https://packages.wolfi.dev/os
...
2024/10/08 15:00:11 INFO ==== FOO=WINNER WINNER ===
2024/10/08 15:00:11 INFO ==== BAR=the other day I saw a BAR ===
2024/10/08 15:00:11 INFO running step "test/dump-env"
2024/10/08 15:00:11 INFO running step "show env" uses=test/dump-env
2024/10/08 15:00:11 INFO FAIL: FOO was empty uses=test/dump-env name="show env"
2024/10/08 15:00:11 INFO PASS: BAR got the other day I saw a BAR uses=test/dump-env name="show env"
2024/10/08 15:00:11 ERRO ERROR: failed to build package. the build environment has been preserved:
2024/10/08 15:00:11 INFO workspace dir: /tmp/melange-workspace-3334864414
2024/10/08 15:00:11 INFO guest dir: /tmp/melange-guest-1999173818
2024/10/08 15:00:11 ERRO failed to build package: unable to run package test-me pipeline: unable to run pipeline: unable to run pipeline: unable to run pipeline: exit status 1