Skip to content

Commit aa39561

Browse files
SashaMITdaywalker90
authored andcommitted
ci: bind version/ref inputs via env before shell in release workflows
Follow-up to the docker/pypi env-binding pass: check-release-tag.yml, release-build.yml, release-publish.yml and pypi-build.yml still interpolated inputs.version / github.ref_name directly into run: blocks (script-injection class per GitHub's hardening guidance). Bind through env: and reference quoted shell variables instead. Also drops a dead duplicate CHANGELOG_VERSION assignment in release-publish.yml that ran before VERSION was set. Made-with: Cursor Changelog-None
1 parent 4fd17d7 commit aa39561

4 files changed

Lines changed: 22 additions & 10 deletions

File tree

.github/workflows/check-release-tag.yml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,14 @@ jobs:
2828

2929
- name: Validate tag matches .version file
3030
id: resolve
31+
env:
32+
REF_TYPE: ${{ github.ref_type }}
33+
INPUT_VERSION: ${{ inputs.version }}
34+
REF_NAME: ${{ github.ref_name }}
3135
run: |
32-
if [[ "${{ github.ref_type }}" != "tag" ]]; then
33-
echo "::notice::Not triggered by a tag push (ref_type=${{ github.ref_type }}); skipping .version check."
34-
echo "version=${{ inputs.version }}" >> "$GITHUB_OUTPUT"
36+
if [[ "$REF_TYPE" != "tag" ]]; then
37+
echo "::notice::Not triggered by a tag push (ref_type=$REF_TYPE); skipping .version check."
38+
echo "version=$INPUT_VERSION" >> "$GITHUB_OUTPUT"
3539
exit 0
3640
fi
3741
@@ -41,7 +45,7 @@ jobs:
4145
fi
4246
4347
FILE_VERSION="$(tr -d '[:space:]' < .version)"
44-
TAG_VERSION="${{ github.ref_name }}"
48+
TAG_VERSION="$REF_NAME"
4549
4650
if [[ "$TAG_VERSION" != "$FILE_VERSION" ]]; then
4751
echo "::error::Tag '$TAG_VERSION' does not match version in .version file ('$FILE_VERSION'). Refusing to release."
@@ -53,4 +57,6 @@ jobs:
5357
5458
- name: Validate release
5559
if: ${{ !inputs.skip_validation }}
56-
run: tools/check-release.sh --version=${{ steps.resolve.outputs.version }}
60+
env:
61+
RESOLVED_VERSION: ${{ steps.resolve.outputs.version }}
62+
run: tools/check-release.sh "--version=$RESOLVED_VERSION"

.github/workflows/pypi-build.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@ jobs:
3434
uses: astral-sh/setup-uv@v8.1.0
3535

3636
- name: Update pyln versions
37+
env:
38+
INPUT_VERSION: ${{ inputs.version }}
3739
run: |
38-
make update-pyln-versions NEW_VERSION=${{ inputs.version }}
40+
make update-pyln-versions NEW_VERSION="$INPUT_VERSION"
3941
4042
- name: Build distribution 📦
4143
run: uv build --package ${{ matrix.PACKAGE }}

.github/workflows/release-build.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,12 @@ jobs:
4040
if: contains(matrix.target, 'Ubuntu')
4141

4242
- name: Build release
43+
env:
44+
SKIP_VALIDATION: ${{ inputs.skip_validation }}
45+
INPUT_VERSION: ${{ inputs.version }}
4346
run: |
44-
if [[ "${{ inputs.skip_validation }}" == "true" ]]; then
45-
tools/build-release.sh ${{ matrix.target }} --force-version "${{ inputs.version }}" --force-unclean --force-mtime "$(date +%Y-%m-%d)"
47+
if [[ "$SKIP_VALIDATION" == "true" ]]; then
48+
tools/build-release.sh ${{ matrix.target }} --force-version "$INPUT_VERSION" --force-unclean --force-mtime "$(date +%Y-%m-%d)"
4649
else
4750
tools/build-release.sh ${{ matrix.target }}
4851
fi

.github/workflows/release-publish.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ jobs:
4949

5050
- name: Determine release data
5151
id: release_data
52+
env:
53+
INPUT_VERSION: ${{ inputs.version }}
5254
run: |
53-
CHANGELOG_VERSION=${VERSION#v}
54-
VERSION="${{ inputs.version }}"
55+
VERSION="$INPUT_VERSION"
5556
CHANGELOG_VERSION=${VERSION#v}
5657
CHANGELOG_TITLE=$(grep "## \[${CHANGELOG_VERSION}\]" CHANGELOG.md)
5758
RELEASE_TITLE=$(echo $CHANGELOG_TITLE | cut -d'"' -f2)

0 commit comments

Comments
 (0)