From 92d412135da3ac3f6ffca7ac6bdacefd5a6c7eb4 Mon Sep 17 00:00:00 2001 From: Mehul Prajapati Date: Sat, 14 Dec 2024 19:36:49 -0500 Subject: [PATCH] feat: migrate to gh-workflow-tailcall (#10) --- .github/workflows/autofix.yml | 53 ++++++++++++++++++++++++++ .github/workflows/ci.yml | 72 ++++++++++++++++++++++++++++++++--- Cargo.lock | 29 ++++++++++++-- Cargo.toml | 2 +- tests/ci.rs | 52 ++----------------------- 5 files changed, 151 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/autofix.yml diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml new file mode 100644 index 0000000..d6f1ee1 --- /dev/null +++ b/.github/workflows/autofix.yml @@ -0,0 +1,53 @@ +# ------------------------------------------------------------------- +# ------------------------------- WARNING --------------------------- +# ------------------------------------------------------------------- +# +# This file was automatically generated by gh-workflows using the +# gh-workflow-gen bin. You should add and commit this file to your +# git repository. **DO NOT EDIT THIS FILE BY HAND!** Any manual changes +# will be lost if the file is regenerated. +# +# To make modifications, update your `build.rs` configuration to adjust +# the workflow description as needed, then regenerate this file to apply +# those changes. +# +# ------------------------------------------------------------------- +# ----------------------------- END WARNING ------------------------- +# ------------------------------------------------------------------- + +name: autofix.ci +env: + RUSTFLAGS: -Dwarnings +on: + pull_request: + types: + - opened + - synchronize + - reopened + branches: + - main + push: + branches: + - main +jobs: + lint: + name: Lint Fix + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Rust Toolchain + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: nightly + components: clippy, rustfmt + - name: Cargo Fmt + run: cargo +nightly fmt --all + - name: Cargo Clippy + run: cargo +nightly clippy --fix --allow-dirty --all-features --workspace -- -D warnings + - uses: autofix-ci/action@ff86a557419858bb967097bfc916833f5647fa8c + concurrency: + group: autofix-${{github.ref}} + cancel-in-progress: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f78dc28..fd5d472 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ # ----------------------------- END WARNING ------------------------- # ------------------------------------------------------------------- -name: Build and Test +name: ci env: RUSTFLAGS: -Dwarnings on: @@ -33,19 +33,81 @@ jobs: build: name: Build and Test runs-on: ubuntu-latest + permissions: + contents: read steps: - name: Checkout Code uses: actions/checkout@v4 - name: Setup Rust Toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: - toolchain: stable, nightly - components: clippy, rustfmt + toolchain: stable - name: Cargo Test run: cargo test --all-features --workspace - name: Cargo Bench - run: cargo bench + run: cargo bench --workspace + lint: + name: Lint + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Setup Rust Toolchain + uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + toolchain: nightly + components: clippy, rustfmt - name: Cargo Fmt - run: cargo +nightly fmt --check + run: cargo +nightly fmt --all --check - name: Cargo Clippy run: cargo +nightly clippy --all-features --workspace -- -D warnings + release: + needs: + - build + - lint + if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }} + name: Release + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + packages: write + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Release Plz + uses: release-plz/action@v0.5 + with: + command: release + concurrency: + group: release-${{github.ref}} + cancel-in-progress: false + release-pr: + needs: + - build + - lint + if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }} + name: Release Pr + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + packages: write + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Release Plz + uses: release-plz/action@v0.5 + with: + command: release-pr + concurrency: + group: release-${{github.ref}} + cancel-in-progress: false diff --git a/Cargo.lock b/Cargo.lock index edea211..1b4e4ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -580,13 +580,14 @@ dependencies = [ [[package]] name = "gh-workflow" -version = "0.4.1" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1ad3bcceabc26816ce586fece0653c5253300dcfa66c0a62efed1ccb5f745d" +checksum = "6ea61127f989ca4a152b22b48bb712e012a332f5720ebffb79d36b5f17d21db4" dependencies = [ "async-trait", "derive_more", "derive_setters", + "gh-workflow-macros", "indexmap", "merge", "serde", @@ -595,6 +596,28 @@ dependencies = [ "strum_macros", ] +[[package]] +name = "gh-workflow-macros" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3415ff89464a801cd240df6035bbd203960cdb6618f7de68c9e38eeadd8a0cf6" +dependencies = [ + "heck", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "gh-workflow-tailcall" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f01a60e065d545d613b0ac1a22f8310308d608354bcafa81cb53a2f5746869" +dependencies = [ + "derive_setters", + "gh-workflow", + "heck", +] + [[package]] name = "half" version = "2.4.1" @@ -749,7 +772,7 @@ name = "jq" version = "0.1.0" dependencies = [ "criterion", - "gh-workflow", + "gh-workflow-tailcall", "jaq-core", "jaq-json", "jaq-std", diff --git a/Cargo.toml b/Cargo.toml index dc16900..70df3ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ jaq-std = { workspace = true } jaq-json = { workspace = true } [dev-dependencies] -gh-workflow = "0.4.1" +gh-workflow-tailcall = "0.2.0" pest = "2.7.14" pest_derive = {version = "2.7.14"} criterion = "0.5.1" diff --git a/tests/ci.rs b/tests/ci.rs index abcc146..3e4b7c6 100644 --- a/tests/ci.rs +++ b/tests/ci.rs @@ -1,52 +1,8 @@ -use gh_workflow::toolchain::Toolchain; -use gh_workflow::*; +use gh_workflow_tailcall::*; #[test] -fn generate() { - let flags = RustFlags::deny("warnings"); +fn generate_ci_workflow() { + let workflow = Workflow::default().auto_release(true).benchmarks(true); - let build = Job::new("Build and Test") - .add_step(Step::checkout()) - .add_step( - Toolchain::default() - .add_stable() - .add_nightly() - .add_clippy() - .add_fmt(), - ) - .add_step( - Cargo::new("test") - .args("--all-features --workspace") - .name("Cargo Test"), - ) - .add_step(Cargo::new("bench").name("Cargo Bench")) - .add_step( - Cargo::new("fmt") - .nightly() - .args("--check") - .name("Cargo Fmt"), - ) - .add_step( - Cargo::new("clippy") - .nightly() - .args("--all-features --workspace -- -D warnings") - .name("Cargo Clippy"), - ); - - let event = Event::default() - .push(Push::default().add_branch("main")) - .pull_request( - PullRequest::default() - .add_type(PullRequestType::Opened) - .add_type(PullRequestType::Synchronize) - .add_type(PullRequestType::Reopened) - .add_branch("main"), - ); - - Workflow::new("Build and Test") - .add_env(flags) - .on(event) - .add_job("build", build) - .generate() - .unwrap(); + workflow.generate().unwrap(); }