-
Notifications
You must be signed in to change notification settings - Fork 0
89 lines (86 loc) · 3.15 KB
/
Copy pathpublish-crates.yml
File metadata and controls
89 lines (86 loc) · 3.15 KB
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
name: Publish crates
on:
push:
tags:
- 'v*'
- '[0-9]*'
- 'yank-pd-host-function-*'
- 'unyank-pd-host-function-*'
- 'publish-crates-*-host-*'
workflow_dispatch:
inputs:
version:
description: 'Version to publish. Tag pushes use the tag name without leading v.'
required: true
type: string
pd_host_function_version:
description: 'Compatible pd-host-function version. Defaults to 0.22.7.'
required: false
type: string
yank_pd_host_function_version:
description: 'Optional pd-host-function version to yank before publishing.'
required: false
type: string
concurrency:
group: publish-crates-${{ github.ref }}
cancel-in-progress: false
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
env:
PACKAGE_ORDER: pd-host-function pd-vm pd-vm-nostd rustscript
steps:
- name: Checkout rustscript
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
with:
path: rustscript
- name: Setup Rust
uses: dtolnay/rust-toolchain@4be7066ada62dd38de10e7b70166bc74ed198c30
- name: Verify crate publish order
working-directory: rustscript
run: python3 scripts/verify_publish_order.py $PACKAGE_ORDER
- name: Publish crates
working-directory: rustscript
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
INPUT_VERSION: ${{ inputs.version }}
INPUT_HOST_VERSION: ${{ inputs.pd_host_function_version }}
INPUT_YANK_HOST_VERSION: ${{ inputs.yank_pd_host_function_version }}
run: |
set -euo pipefail
if [[ "$GITHUB_REF_NAME" == yank-pd-host-function-* ]]; then
host_version="${GITHUB_REF_NAME#yank-pd-host-function-}"
cargo yank --vers "$host_version" pd-host-function
exit 0
fi
if [[ "$GITHUB_REF_NAME" == unyank-pd-host-function-* ]]; then
host_version="${GITHUB_REF_NAME#unyank-pd-host-function-}"
cargo yank --undo --vers "$host_version" pd-host-function
exit 0
fi
if [[ "$GITHUB_REF_NAME" == publish-crates-*-host-* ]]; then
publish_spec="${GITHUB_REF_NAME#publish-crates-}"
version="${publish_spec%%-host-*}"
host_version="${publish_spec#*-host-}"
if [[ -z "$version" || -z "$host_version" || "$version" == "$publish_spec" ]]; then
echo "invalid publish recovery tag: $GITHUB_REF_NAME" >&2
exit 1
fi
INPUT_VERSION="$version"
INPUT_HOST_VERSION="$host_version"
fi
version="${INPUT_VERSION:-${GITHUB_REF_NAME#v}}"
if [[ -z "$version" ]]; then
echo "version is required" >&2
exit 1
fi
args=(
--version "$version"
--host-version "${INPUT_HOST_VERSION:-0.22.7}"
)
if [[ -n "${INPUT_YANK_HOST_VERSION:-}" ]]; then
args+=(--yank-host-version "$INPUT_YANK_HOST_VERSION")
fi
python3 scripts/publish_crates.py "${args[@]}"