Skip to content

Commit ce9fe80

Browse files
feat: migrate to gh-workflow-tailcall (#30)
1 parent aca4e85 commit ce9fe80

File tree

4 files changed

+64
-72
lines changed

4 files changed

+64
-72
lines changed

.github/workflows/ci.yml

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ name: Build and Test
1919
env:
2020
RUSTFLAGS: -Dwarnings
2121
on:
22-
pull_request_target:
22+
pull_request:
2323
types:
2424
- opened
2525
- synchronize
@@ -33,6 +33,8 @@ jobs:
3333
build:
3434
name: Build and Test
3535
runs-on: ubuntu-latest
36+
permissions:
37+
contents: read
3638
steps:
3739
- name: Checkout Code
3840
uses: actions/checkout@v4
@@ -48,7 +50,9 @@ jobs:
4850
- name: Cargo Clippy
4951
run: cargo +nightly clippy --all-features --workspace -- -D warnings
5052
release:
51-
needs: build
53+
needs:
54+
- build
55+
if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
5256
name: Release
5357
runs-on: ubuntu-latest
5458
permissions:
@@ -62,4 +66,29 @@ jobs:
6266
- name: Checkout Code
6367
uses: actions/checkout@v4
6468
- name: Release Plz
65-
uses: MarcoIeni/[email protected]
69+
uses: release-plz/[email protected]
70+
with:
71+
command: release
72+
release-pr:
73+
needs:
74+
- build
75+
if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
76+
name: Release PR
77+
runs-on: ubuntu-latest
78+
permissions:
79+
contents: write
80+
pull-requests: write
81+
packages: write
82+
env:
83+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
84+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
85+
steps:
86+
- name: Checkout Code
87+
uses: actions/checkout@v4
88+
- name: Release Plz
89+
uses: release-plz/[email protected]
90+
with:
91+
command: release-pr
92+
concurrency:
93+
group: release-${{github.ref}}
94+
cancel-in-progress: false

Cargo.lock

Lines changed: 25 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ wasm-bindgen = "0.2.92"
2121
[dev-dependencies]
2222
pretty_assertions = "1.4.1"
2323
stripmargin = "0.1.1"
24-
gh-workflow = { version = "0" }
24+
gh-workflow-tailcall = "0.1.3"
2525

2626
[features]
2727
default = []

tests/ci.rs

Lines changed: 6 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,10 @@
1-
use gh_workflow::*;
2-
use release_plz::Release;
3-
use toolchain::Toolchain;
1+
use gh_workflow_tailcall::*;
42

53
#[test]
6-
fn ci() {
7-
let flags = RustFlags::deny("warnings");
4+
fn generate_ci_workflow() {
5+
let workflow = Workflow::default()
6+
.auto_release(true)
7+
.name("Build and Test".into());
88

9-
let build = Job::new("Build and Test")
10-
.add_step(Step::checkout())
11-
.add_step(
12-
Toolchain::default()
13-
.add_stable()
14-
.add_nightly()
15-
.add_clippy()
16-
.add_fmt(),
17-
)
18-
.add_step(
19-
Cargo::new("test")
20-
.args("--all-features --workspace")
21-
.name("Cargo Test"),
22-
)
23-
.add_step(
24-
Cargo::new("fmt")
25-
.nightly()
26-
.args("--check")
27-
.name("Cargo Fmt"),
28-
)
29-
.add_step(
30-
Cargo::new("clippy")
31-
.nightly()
32-
.args("--all-features --workspace -- -D warnings")
33-
.name("Cargo Clippy"),
34-
);
35-
36-
let event = Event::default()
37-
.push(Push::default().add_branch("main"))
38-
.pull_request_target(
39-
PullRequestTarget::default()
40-
.add_type(PullRequestType::Opened)
41-
.add_type(PullRequestType::Synchronize)
42-
.add_type(PullRequestType::Reopened)
43-
.add_branch("main"),
44-
);
45-
46-
let permissions = Permissions::default()
47-
.pull_requests(Level::Write)
48-
.packages(Level::Write)
49-
.contents(Level::Write);
50-
51-
let release = Job::new("Release")
52-
.needs("build")
53-
.add_env(Env::github())
54-
.add_env(Env::new(
55-
"CARGO_REGISTRY_TOKEN",
56-
"${{ secrets.CARGO_REGISTRY_TOKEN }}",
57-
))
58-
.permissions(permissions)
59-
.add_step(Step::checkout())
60-
.add_step(Release::default());
61-
62-
Workflow::new("Build and Test")
63-
.add_env(flags)
64-
.on(event)
65-
.add_job("build", build)
66-
.add_job("release", release)
67-
.generate()
68-
.unwrap();
9+
workflow.generate().unwrap();
6910
}

0 commit comments

Comments
 (0)