1717 - uses : actions/checkout@v4
1818 with :
1919 fetch-depth : 0
20-
21- - name : Get changed files
22- id : changed-files
23- uses : tj-actions/changed-files@v41
24-
25- - name : Discover changed crates
26- id : set-matrix
27- run : |
28- # Get all workspace members
29- crates=$(cargo metadata --format-version=1 | jq -r '.workspace_members[]' | cut -d'#' -f1 | rev | cut -d'/' -f1 | rev)
30-
31- changed_crates=()
32- for crate in $crates; do
33- # Get crate path from metadata
34- crate_path=$(cargo metadata --format-version=1 | jq -r ".packages[] | select(.name == \"$crate\") | .manifest_path" | xargs dirname)
35-
36- # Check if any files in this crate changed
37- if echo "${{ steps.changed-files.outputs.all_changed_files }}" | grep -q "$crate_path"; then
38- changed_crates+=("$crate")
39- fi
40- done
41-
42- # Convert to JSON matrix
43- if [ ${#changed_crates[@]} -eq 0 ]; then
44- echo "matrix={\"component\":[]}" >> $GITHUB_OUTPUT
45- else
46- matrix=$(printf '%s\n' "${changed_crates[@]}" | jq -R . | jq -s .)
47- echo "matrix={\"component\":$matrix}" >> $GITHUB_OUTPUT
48- fi
20+ - run : chmod +x .github/scripts/detect-changes.sh
21+ - id : set-matrix
22+ run : .github/scripts/detect-changes.sh
4923
5024 build-and-publish :
5125 needs : detect-changes
@@ -55,13 +29,23 @@ jobs:
5529 matrix :
5630 component : ${{ fromJson(needs.detect-changes.outputs.matrix).component }}
5731 steps :
32+ # Setup
5833 - uses : actions/checkout@v4
5934 - uses : dtolnay/rust-toolchain@nightly
6035 - uses : Swatinem/rust-cache@v2
61- - run : cargo install --locked wkg
36+ - uses : cargo-bins/cargo-binstall@main
37+ - run : cargo binstall --locked cargo-component
38+ - run : cargo binstall --locked wkg
6239
6340 # Build
64- - run : cargo component build -p {{component}} --release
41+ - run : cargo component build -p ${{ matrix.component }} --release
42+
43+ # Authentication
44+ - uses : docker/login-action@v3
45+ with :
46+ registry : ghcr.io
47+ username : ${{ github.actor }}
48+ password : ${{ secrets.GITHUB_TOKEN }}
6549
6650 # Publish
67- - run : wkg oci push ghcr.io/wassemble/{{ component}}:latest target/wasm32-wasip1/release/$(echo {{ component}} | tr '-' '_').wasm
51+ - run : wkg oci push ghcr.io/wassemble/${{ matrix. component }}:latest target/wasm32-wasip1/release/$(echo ${{ matrix. component }} | tr '-' '_').wasm
0 commit comments