Skip to content

Commit 0d3ca36

Browse files
committed
ci: add lockfile and use rust-bitcoin-maintainer-tools CI setup
Copied from hal-simplicity and tweaked a bit with guidance from the rust-bitcoin setup. Commented out the fmt check since this crate currently is totally unformatted.
1 parent 58db4c4 commit 0d3ca36

File tree

9 files changed

+1137
-96
lines changed

9 files changed

+1137
-96
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Checkout Maintainer Tools
2+
description: Checks out the rust-bitcoin maintainer tools repo
3+
runs:
4+
using: "composite"
5+
steps:
6+
- name: Checkout maintainer tools
7+
uses: actions/checkout@v4
8+
with:
9+
repository: rust-bitcoin/rust-bitcoin-maintainer-tools
10+
ref: f92b2766865ce5327eca5cf72f86ceaa6be58ca4
11+
path: maintainer-tools
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Update Nightly rustc
2+
on:
3+
schedule:
4+
- cron: "5 0 * * 1,4" # runs every Monday and Thursday at 00:05 UTC
5+
workflow_dispatch: # allows manual triggering
6+
jobs:
7+
format:
8+
name: Update nightly rustc
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: actions/checkout@v4
12+
- uses: dtolnay/rust-toolchain@nightly
13+
- name: Update rust.yml to use latest nightly
14+
run: |
15+
set -x
16+
# Not every night has a nightly, so extract the date from whatever
17+
# version of the compiler dtolnay/rust-toolchain gives us.
18+
NIGHTLY_DATE=$(rustc +nightly --verbose --version | sed -ne 's/^commit-date: //p')
19+
# Update the nightly version in the reference file.
20+
echo "nightly-${NIGHTLY_DATE}" > nightly-version
21+
echo "nightly_date=${NIGHTLY_DATE}" >> $GITHUB_ENV
22+
# Some days there is no new nightly. In this case don't make an empty PR.
23+
if ! git diff --exit-code > /dev/null; then
24+
echo "Updated nightly. Opening PR."
25+
echo "changes_made=true" >> $GITHUB_ENV
26+
else
27+
echo "Attempted to update nightly but the latest-nightly date did not change. Not opening any PR."
28+
echo "changes_made=false" >> $GITHUB_ENV
29+
fi
30+
- name: Create Pull Request
31+
if: env.changes_made == 'true'
32+
uses: peter-evans/create-pull-request@v6
33+
with:
34+
token: ${{ secrets.APOELSTRA_CREATE_PR_TOKEN }}
35+
author: Update Nightly Rustc Bot <[email protected]>
36+
committer: Update Nightly Rustc Bot <[email protected]>
37+
title: Automated daily update to rustc (to nightly-${{ env.nightly_date }})
38+
body: |
39+
Automated update to Github CI workflow `rust.yml` by [create-pull-request](https://github.com/peter-evans/create-pull-request) GitHub action
40+
commit-message: Automated update to Github CI to rustc nightly-${{ env.nightly_date }}
41+
branch: create-pull-request/daily-nightly-update

.github/workflows/rust.yml

Lines changed: 138 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,179 @@
1-
on:
1+
on: # yamllint disable-line rule:truthy
2+
pull_request:
23
push:
34
branches:
45
- master
5-
pull_request: {}
6+
- 'test-ci/**'
67

78
name: Continuous integration
89

910
jobs:
11+
Prepare:
12+
runs-on: ubuntu-latest
13+
outputs:
14+
nightly_version: ${{ steps.read_toolchain.outputs.nightly_version }}
15+
msrv_version: ${{ steps.read_msrv.outputs.msrv_version }}
16+
steps:
17+
- name: "Checkout repo"
18+
uses: actions/checkout@v4
19+
- name: "Read nightly version"
20+
id: read_toolchain
21+
run: |
22+
set -euo pipefail
23+
version=$(cat nightly-version)
24+
echo "nightly_version=$version" >> $GITHUB_OUTPUT
25+
- name: Read MSRV from clippy.toml
26+
id: read_msrv
27+
run: |
28+
set -euo pipefail
29+
msrv=$(grep '^msrv *= *"' clippy.toml | sed -E 's/.*"([^"]+)".*/\1/')
30+
echo "msrv_version=$msrv" >> "$GITHUB_OUTPUT"
31+
1032
Stable:
1133
name: Test - stable toolchain
1234
runs-on: ubuntu-latest
1335
strategy:
1436
fail-fast: false
37+
matrix:
38+
dep: [minimal, recent]
1539
steps:
16-
- name: Checkout Crate
17-
uses: actions/checkout@v3
18-
- name: Checkout Toolchain
19-
# https://github.com/dtolnay/rust-toolchain
40+
- name: "Checkout repo"
41+
uses: actions/checkout@v4
42+
- name: "Checkout maintainer tools"
43+
uses: ./.github/actions/checkout-maintainer-tools
44+
- name: "Select toolchain"
2045
uses: dtolnay/rust-toolchain@stable
21-
- name: Running test script
22-
env:
23-
DO_DOCS: true
24-
DO_DOCSRS: false
25-
DO_FUZZ: false
26-
DO_INTEGRATION: false
27-
DO_LINT: true
28-
DO_FEATURE_MATRIX: true
29-
run: ./contrib/test.sh
46+
- name: "Set dependencies"
47+
run: cp Cargo-latest.lock Cargo.lock
48+
- name: "Run test script"
49+
run: ./maintainer-tools/ci/run_task.sh stable
3050

3151
Nightly:
3252
name: Test - nightly toolchain
53+
needs: Prepare
3354
runs-on: ubuntu-latest
3455
strategy:
3556
fail-fast: false
57+
matrix:
58+
dep: [minimal, recent]
3659
steps:
37-
- name: Checkout Crate
38-
uses: actions/checkout@v3
39-
- name: Checkout Toolchain
40-
uses: dtolnay/rust-toolchain@nightly
41-
- name: Running test script
42-
env:
43-
DO_DOCS: true
44-
DO_DOCSRS: true
45-
DO_FUZZ: false
46-
DO_INTEGRATION: false
47-
DO_LINT: false
48-
DO_FEATURE_MATRIX: true
49-
run: ./contrib/test.sh
60+
- name: "Checkout repo"
61+
uses: actions/checkout@v4
62+
- name: "Checkout maintainer tools"
63+
uses: ./.github/actions/checkout-maintainer-tools
64+
- name: "Select toolchain"
65+
uses: dtolnay/rust-toolchain@v1
66+
with:
67+
toolchain: ${{ needs.Prepare.outputs.nightly_version }}
68+
- name: "Set dependencies"
69+
run: cp Cargo-latest.lock Cargo.lock
70+
- name: "Run test script"
71+
run: ./maintainer-tools/ci/run_task.sh nightly
5072

5173
MSRV:
52-
name: Test - 1.63.0 toolchain
74+
name: Test - MSRV
75+
needs: Prepare
5376
runs-on: ubuntu-latest
5477
strategy:
5578
fail-fast: false
79+
matrix:
80+
dep: [minimal, recent]
5681
steps:
57-
- name: Checkout Crate
58-
uses: actions/checkout@v3
59-
- name: Checkout Toolchain
60-
uses: dtolnay/[email protected]
61-
- name: Running test script
62-
env:
63-
DO_DOCS: false
64-
DO_DOCSRS: false
65-
DO_FUZZ: false
66-
DO_INTEGRATION: false
67-
DO_LINT: false
68-
DO_FEATURE_MATRIX: true
69-
run: ./contrib/test.sh
82+
- name: "Checkout repo"
83+
uses: actions/checkout@v4
84+
- name: "Checkout maintainer tools"
85+
uses: ./.github/actions/checkout-maintainer-tools
86+
- name: "Select toolchain"
87+
uses: dtolnay/rust-toolchain@stable
88+
with:
89+
toolchain: ${{ needs.Prepare.outputs.msrv_version }}
90+
- name: "Set dependencies"
91+
run: cp Cargo-latest.lock Cargo.lock
92+
- name: "Run test script"
93+
run: ./maintainer-tools/ci/run_task.sh msrv
7094

71-
Fuzz:
72-
name: Fuzztests - 1.63.0 toolchain
95+
Lint:
96+
name: Lint - nightly toolchain
97+
needs: Prepare
7398
runs-on: ubuntu-latest
7499
strategy:
75100
fail-fast: false
101+
matrix:
102+
dep: [recent]
76103
steps:
77-
- name: Checkout Crate
78-
uses: actions/checkout@v3
79-
- name: Checkout Toolchain
80-
uses: dtolnay/[email protected]
81-
- name: Install test dependencies
82-
run: sudo apt-get update -y && sudo apt-get install -y binutils-dev libunwind8-dev libcurl4-openssl-dev libelf-dev libdw-dev cmake gcc libiberty-dev
83-
- name: Running test script
84-
env:
85-
DO_DOCS: false
86-
DO_DOCSRS: false
87-
DO_FUZZ: true
88-
DO_INTEGRATION: false
89-
DO_LINT: false
90-
DO_FEATURE_MATRIX: false
91-
run: ./contrib/test.sh
104+
- name: "Checkout repo"
105+
uses: actions/checkout@v4
106+
- name: "Checkout maintainer tools"
107+
uses: ./.github/actions/checkout-maintainer-tools
108+
- name: "Select toolchain"
109+
uses: dtolnay/rust-toolchain@v1
110+
with:
111+
toolchain: ${{ needs.Prepare.outputs.nightly_version }}
112+
- name: Install clippy
113+
run: rustup component add clippy
114+
- name: "Set dependencies"
115+
run: cp Cargo-latest.lock Cargo.lock
116+
- name: "Run test script"
117+
run: ./maintainer-tools/ci/run_task.sh lint
92118

93-
Integration:
94-
name: Integration tests - stable
119+
Docs:
120+
name: Docs - stable toolchain
95121
runs-on: ubuntu-latest
96122
strategy:
97123
fail-fast: false
124+
matrix:
125+
dep: [recent]
98126
steps:
99-
- name: Checkout Crate
100-
uses: actions/checkout@v3
101-
- name: Checkout Toolchain
127+
- name: "Checkout repo"
128+
uses: actions/checkout@v4
129+
- name: "Checkout maintainer tools"
130+
uses: ./.github/actions/checkout-maintainer-tools
131+
- name: "Select toolchain"
102132
uses: dtolnay/rust-toolchain@stable
103-
- name: Running test script
104-
env:
105-
DO_DOCS: false
106-
DO_DOCSRS: false
107-
DO_FUZZ: false
108-
DO_INTEGRATION: true
109-
DO_LINT: false
110-
DO_FEATURE_MATRIX: false
111-
run: ./contrib/test.sh
133+
- name: "Set dependencies"
134+
run: cp Cargo-latest.lock Cargo.lock
135+
- name: "Run test script"
136+
run: ./maintainer-tools/ci/run_task.sh docs
137+
138+
Docsrs:
139+
name: Docs - nightly toolchain
140+
needs: Prepare
141+
runs-on: ubuntu-latest
142+
strategy:
143+
fail-fast: false
144+
matrix:
145+
dep: [recent]
146+
steps:
147+
- name: "Checkout repo"
148+
uses: actions/checkout@v4
149+
- name: "Checkout maintainer tools"
150+
uses: ./.github/actions/checkout-maintainer-tools
151+
- name: "Select toolchain"
152+
uses: dtolnay/rust-toolchain@v1
153+
with:
154+
toolchain: ${{ needs.Prepare.outputs.nightly_version }}
155+
- name: "Set dependencies"
156+
run: cp Cargo-latest.lock Cargo.lock
157+
- name: "Run test script"
158+
run: ./maintainer-tools/ci/run_task.sh docsrs
159+
160+
# Format:
161+
# name: Format - nightly toolchain
162+
# needs: Prepare
163+
# runs-on: ubuntu-latest
164+
# strategy:
165+
# fail-fast: false
166+
# steps:
167+
# - name: "Checkout repo"
168+
# uses: actions/checkout@v4
169+
# - name: "Select toolchain"
170+
# uses: dtolnay/rust-toolchain@v1
171+
# with:
172+
# toolchain: ${{ needs.Prepare.outputs.nightly_version }}
173+
# - name: "Install rustfmt"
174+
# run: rustup component add rustfmt
175+
# - name: "Check formatting"
176+
# run: cargo fmt --all -- --check
112177

113178
Wasm:
114179
name: Check WASM

0 commit comments

Comments
 (0)