Skip to content

Commit

Permalink
silly what gha makes me do
Browse files Browse the repository at this point in the history
  • Loading branch information
dsherret committed Jan 6, 2025
1 parent 1a77501 commit 731e770
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 25 deletions.
23 changes: 19 additions & 4 deletions .github/workflows/ci.generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ enum Runner {
Windows = "windows-latest",
// uses an older version of ubuntu because of issue dprint/#483
Linux = "ubuntu-20.04",
LinuxArm = "buildjet-2vcpu-ubuntu-2204-arm",
LinuxArm =
"(github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) && 'buildjet-2vcpu-ubuntu-2204-arm' || 'ubuntu-latest'",
}

interface ProfileData {
Expand All @@ -18,6 +19,16 @@ interface ProfileData {
cross?: boolean;
}

function withCondition(
step: Record<string, unknown>,
condition: string,
): Record<string, unknown> {
return {
...step,
if: "if" in step ? `${condition} && (${step.if})` : condition,
};
}

const profileDataItems: ProfileData[] = [{
runner: Runner.Mac13,
target: "x86_64-apple-darwin",
Expand Down Expand Up @@ -73,8 +84,6 @@ const ci = {
})),
},
},
if:
`matrix.config.os != '${Runner.LinuxArm}' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')`,
outputs: Object.fromEntries(
profiles.map((profile) => [
profile.zipChecksumEnvVarName,
Expand Down Expand Up @@ -205,7 +214,13 @@ const ci = {
},
};
}),
],
].map((step) =>
withCondition(
step,
// only run arm64 linux on main or tags
"matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'",
)
),
},
draft_release: {
name: "draft_release",
Expand Down
47 changes: 26 additions & 21 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,10 @@ jobs:
run_tests: "true"
cross: "false"
target: x86_64-unknown-linux-gnu
- os: buildjet-2vcpu-ubuntu-2204-arm
- os: "(github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')) && 'buildjet-2vcpu-ubuntu-2204-arm' || 'ubuntu-latest'"
run_tests: "true"
cross: "false"
target: aarch64-unknown-linux-gnu
if: "matrix.config.os != 'buildjet-2vcpu-ubuntu-2204-arm' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/')"
outputs:
ZIP_CHECKSUM_X86_64_APPLE_DARWIN: "${{steps.pre_release_x86_64_apple_darwin.outputs.ZIP_CHECKSUM}}"
ZIP_CHECKSUM_AARCH64_APPLE_DARWIN: "${{steps.pre_release_aarch64_apple_darwin.outputs.ZIP_CHECKSUM}}"
Expand All @@ -52,107 +51,113 @@ jobs:
RUST_BACKTRACE: full
steps:
- uses: actions/checkout@v4
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'"
- uses: dsherret/rust-toolchain-file@v1
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'"
- name: Cache cargo
uses: Swatinem/rust-cache@v2
with:
prefix-key: "v3-${{matrix.config.target}}"
save-if: "${{ github.ref == 'refs/heads/main' }}"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'"
- name: Setup Rust (aarch64-apple-darwin)
if: matrix.config.target == 'aarch64-apple-darwin'
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'aarch64-apple-darwin')"
run: rustup target add aarch64-apple-darwin
- uses: denoland/setup-deno@v2
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'"
- uses: actions/setup-node@v4
with:
node-version: 21
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'"
- name: npm install
run: cd js/node && npm ci
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/'"
- name: Setup cross
if: matrix.config.cross == 'true'
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.cross == 'true')"
run: |-
cd js/node && npm run build:script
cargo install cross --locked --git https://github.com/cross-rs/cross --rev 4090beca3cfffa44371a5bba524de3a578aa46c3
- name: Build (Debug)
if: "matrix.config.cross != 'true' && !startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.cross != 'true' && !startsWith(github.ref, 'refs/tags/'))"
run: "cargo build --locked --all-targets --target ${{matrix.config.target}}"
- name: Build release
if: "matrix.config.cross != 'true' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.cross != 'true' && startsWith(github.ref, 'refs/tags/'))"
run: "cargo build --locked --all-targets --target ${{matrix.config.target}} --release"
- name: Build cross (Debug)
if: "matrix.config.cross == 'true' && !startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.cross == 'true' && !startsWith(github.ref, 'refs/tags/'))"
run: "cross build --locked --target ${{matrix.config.target}}"
- name: Build cross (Release)
if: "matrix.config.cross == 'true' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.cross == 'true' && startsWith(github.ref, 'refs/tags/'))"
run: "cross build --locked --target ${{matrix.config.target}} --release"
- name: Lint
if: "!startsWith(github.ref, 'refs/tags/') && matrix.config.target == 'x86_64-unknown-linux-gnu'"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (!startsWith(github.ref, 'refs/tags/') && matrix.config.target == 'x86_64-unknown-linux-gnu')"
run: cargo clippy
- name: Test (Debug)
if: "matrix.config.run_tests == 'true' && !startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.run_tests == 'true' && !startsWith(github.ref, 'refs/tags/'))"
run: cargo test --locked --all-features
- name: Test (Release)
if: "matrix.config.run_tests == 'true' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.run_tests == 'true' && startsWith(github.ref, 'refs/tags/'))"
run: cargo test --locked --all-features --release
- name: Pre-release (x86_64-apple-darwin)
id: pre_release_x86_64_apple_darwin
if: "matrix.config.target == 'x86_64-apple-darwin' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'x86_64-apple-darwin' && startsWith(github.ref, 'refs/tags/'))"
run: |-
cd target/x86_64-apple-darwin/release
zip -r dprint-plugin-prettier-x86_64-apple-darwin.zip dprint-plugin-prettier
echo "ZIP_CHECKSUM=$(shasum -a 256 dprint-plugin-prettier-x86_64-apple-darwin.zip | awk '{print $1}')" >> $GITHUB_OUTPUT
- name: Pre-release (aarch64-apple-darwin)
id: pre_release_aarch64_apple_darwin
if: "matrix.config.target == 'aarch64-apple-darwin' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'aarch64-apple-darwin' && startsWith(github.ref, 'refs/tags/'))"
run: |-
cd target/aarch64-apple-darwin/release
zip -r dprint-plugin-prettier-aarch64-apple-darwin.zip dprint-plugin-prettier
echo "ZIP_CHECKSUM=$(shasum -a 256 dprint-plugin-prettier-aarch64-apple-darwin.zip | awk '{print $1}')" >> $GITHUB_OUTPUT
- name: Pre-release (x86_64-pc-windows-msvc)
id: pre_release_x86_64_pc_windows_msvc
if: "matrix.config.target == 'x86_64-pc-windows-msvc' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'x86_64-pc-windows-msvc' && startsWith(github.ref, 'refs/tags/'))"
run: |-
Compress-Archive -CompressionLevel Optimal -Force -Path target/x86_64-pc-windows-msvc/release/dprint-plugin-prettier.exe -DestinationPath target/x86_64-pc-windows-msvc/release/dprint-plugin-prettier-x86_64-pc-windows-msvc.zip
echo "ZIP_CHECKSUM=$(shasum -a 256 target/x86_64-pc-windows-msvc/release/dprint-plugin-prettier-x86_64-pc-windows-msvc.zip | awk '{print $1}')" >> $GITHUB_OUTPUT
- name: Pre-release (x86_64-unknown-linux-gnu)
id: pre_release_x86_64_unknown_linux_gnu
if: "matrix.config.target == 'x86_64-unknown-linux-gnu' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'x86_64-unknown-linux-gnu' && startsWith(github.ref, 'refs/tags/'))"
run: |-
cd target/x86_64-unknown-linux-gnu/release
zip -r dprint-plugin-prettier-x86_64-unknown-linux-gnu.zip dprint-plugin-prettier
echo "ZIP_CHECKSUM=$(shasum -a 256 dprint-plugin-prettier-x86_64-unknown-linux-gnu.zip | awk '{print $1}')" >> $GITHUB_OUTPUT
- name: Pre-release (aarch64-unknown-linux-gnu)
id: pre_release_aarch64_unknown_linux_gnu
if: "matrix.config.target == 'aarch64-unknown-linux-gnu' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'aarch64-unknown-linux-gnu' && startsWith(github.ref, 'refs/tags/'))"
run: |-
cd target/aarch64-unknown-linux-gnu/release
zip -r dprint-plugin-prettier-aarch64-unknown-linux-gnu.zip dprint-plugin-prettier
echo "ZIP_CHECKSUM=$(shasum -a 256 dprint-plugin-prettier-aarch64-unknown-linux-gnu.zip | awk '{print $1}')" >> $GITHUB_OUTPUT
- name: Upload artifacts (x86_64-apple-darwin)
if: "matrix.config.target == 'x86_64-apple-darwin' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'x86_64-apple-darwin' && startsWith(github.ref, 'refs/tags/'))"
uses: actions/upload-artifact@v4
with:
name: x86_64-apple-darwin-artifacts
path: target/x86_64-apple-darwin/release/dprint-plugin-prettier-x86_64-apple-darwin.zip
- name: Upload artifacts (aarch64-apple-darwin)
if: "matrix.config.target == 'aarch64-apple-darwin' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'aarch64-apple-darwin' && startsWith(github.ref, 'refs/tags/'))"
uses: actions/upload-artifact@v4
with:
name: aarch64-apple-darwin-artifacts
path: target/aarch64-apple-darwin/release/dprint-plugin-prettier-aarch64-apple-darwin.zip
- name: Upload artifacts (x86_64-pc-windows-msvc)
if: "matrix.config.target == 'x86_64-pc-windows-msvc' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'x86_64-pc-windows-msvc' && startsWith(github.ref, 'refs/tags/'))"
uses: actions/upload-artifact@v4
with:
name: x86_64-pc-windows-msvc-artifacts
path: target/x86_64-pc-windows-msvc/release/dprint-plugin-prettier-x86_64-pc-windows-msvc.zip
- name: Upload artifacts (x86_64-unknown-linux-gnu)
if: "matrix.config.target == 'x86_64-unknown-linux-gnu' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'x86_64-unknown-linux-gnu' && startsWith(github.ref, 'refs/tags/'))"
uses: actions/upload-artifact@v4
with:
name: x86_64-unknown-linux-gnu-artifacts
path: target/x86_64-unknown-linux-gnu/release/dprint-plugin-prettier-x86_64-unknown-linux-gnu.zip
- name: Upload artifacts (aarch64-unknown-linux-gnu)
if: "matrix.config.target == 'aarch64-unknown-linux-gnu' && startsWith(github.ref, 'refs/tags/')"
if: "matrix.config.target != 'aarch64-unknown-linux-gnu' || github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/' && (matrix.config.target == 'aarch64-unknown-linux-gnu' && startsWith(github.ref, 'refs/tags/'))"
uses: actions/upload-artifact@v4
with:
name: aarch64-unknown-linux-gnu-artifacts
Expand Down

0 comments on commit 731e770

Please sign in to comment.