-
Notifications
You must be signed in to change notification settings - Fork 1
109 lines (88 loc) · 2.75 KB
/
publish-crate-after-release.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
name: Publish crate
env: {}
concurrency:
group: "${{ github.workflow }}"
cancel-in-progress: false # last one must win in case of multiple releases
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
permissions:
contents: read
jobs:
repo-has-crate:
name: Repo publishes crate?
runs-on: ubuntu-latest
outputs:
has_crate: ${{ steps.determine.outputs.has_crate }}
steps:
- name: Repo has crate?
id: determine
shell: bash
run: |
HAS_CRATE="${{ vars.HAS_CRATE }}"
echo "has_crate=${HAS_CRATE:-false}" >> ${GITHUB_OUTPUT}
publish-crate:
name: Publish crate
runs-on: ubuntu-latest
needs:
- repo-has-crate
if: |
fromJSON(needs.repo-has-crate.outputs.has_crate) == true
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
show-progress: false
- name: Cache dependencies
uses: actions/cache@0c907a75c2c80ebcb7f088228285e798b750cf8f # v4.2.1
env:
CACHE_NAME: cargo-cache-dependencies
with:
path: |
~/.cargo
./target
key: ${{ runner.os }}-build-${{ env.CACHE_NAME }}-${{ hashFiles('Cargo.lock') }}-test
restore-keys: |
${{ runner.os }}-build-${{ env.CACHE_NAME }}-${{ hashFiles('Cargo.lock') }}-
${{ runner.os }}-build-${{ env.CACHE_NAME }}-
- name: Set up mold
uses: rui314/setup-mold@f80524ca6eeaa76759b57fb78ddce5d87a20c720 # v1
- name: Set up toolchain
shell: bash
run: |
rm ${HOME}/.cargo/bin/cargo-fmt
rm ${HOME}/.cargo/bin/rust-analyzer
rm ${HOME}/.cargo/bin/rustfmt
rustup update
cargo --version
- name: Get binstall
shell: bash
run: |
archive="cargo-binstall-x86_64-unknown-linux-musl.tgz"
wget "https://github.com/cargo-bins/cargo-binstall/releases/latest/download/${archive}"
tar -xvf "./${archive}"
rm "./${archive}"
mv ./cargo-binstall ~/.cargo/bin/
- name: Install binstall to do set-version
shell: bash
run: |
cargo binstall cargo-edit
- name: Set version in Cargo.toml / Cargo.lock
shell: bash
id: version
run: |
VERSION="${{ github.ref_name }}"
# remove v
VERSION="${VERSION//v/}"
# store
cargo set-version ${VERSION}
# debug
cat Cargo.toml
- name: Publish
shell: bash
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |
# we don't commit the version number in our codebase
cargo publish --allow-dirty