Skip to content

ci: Update release workflow to use arbitrary references #699

ci: Update release workflow to use arbitrary references

ci: Update release workflow to use arbitrary references #699

Workflow file for this run

name: rust-toolchain
on:
pull_request:
paths:
- rust-toolchain
- "**Dockerfile"
- ".github/workflows/*"
- ".github/**/Dockerfile"
permissions:
contents: read
jobs:
devcontainer:
runs-on: ubuntu-latest
container: ghcr.io/linkerd/dev:v43-rust
steps:
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633
- run: git config --global --add safe.directory "$PWD" # actions/runner#2033
- run: |
VERSION_REGEX='channel = "([0-9]+\.[0-9]+\.[0-9]+)"'
TOOLCHAIN=$(cat rust-toolchain.toml)
if [[ $TOOLCHAIN =~ $VERSION_REGEX ]]; then
VERSION=${BASH_REMATCH[1]}
if [ "$(cargo --version | cut -d' ' -f2)" != "$VERSION" ]; then
echo "::error file=rust-toolchain.toml::rust-toolchain channel '$VERSION' does not match devcontainer '$(cargo --version)'"
exit 1
fi
else
echo "::error file=rust-toolchain.toml::failed to parse rust-toolchain.toml"
exit 1
fi
shell: bash
workflows:
runs-on: ubuntu-latest
steps:
- uses: linkerd/dev/actions/setup-tools@v43
- uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633
- shell: bash
run: |
VERSION_REGEX='channel = "([0-9]+\.[0-9]+\.[0-9]+)"'
TOOLCHAIN=$(cat rust-toolchain.toml)
if [[ $TOOLCHAIN =~ $VERSION_REGEX ]]; then
VERSION=${BASH_REMATCH[1]}
else
echo "::error file=rust-toolchain.toml::failed to parse rust-toolchain.toml"
exit 1
fi
ex=0
while IFS= read -r file ; do
while IFS= read -r image ; do
if [[ "$image" =~ ^docker://(docker.io/library/)?rust: ]]; then
tag="${image##*rust:}"
v="${tag%%-*}"
if [[ "$v" != "$VERSION" ]]; then
echo "::warning file=$file::$file uses incorrect rust version: '$v' (rust-toolchain.toml contains '$VERSION')"
ex=$((ex + 1))
fi
fi
done < <(yq '.jobs[] | select(.container) | .container.image // .container' "$file")
done < <(find .github/workflows -name '*.yml')
exit $ex