-
Notifications
You must be signed in to change notification settings - Fork 0
101 lines (83 loc) · 2.94 KB
/
cd.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
name: CD
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened, closed]
branches:
- main
workflow_dispatch: {}
env:
CARGO_TERM_COLOR: always
jobs:
deploy:
strategy:
fail-fast: true
matrix:
os: [macos-latest, ubuntu-latest]
runs-on: ${{ matrix.os }}
continue-on-error: false
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install MacOS dependencies
if: matrix.os == 'macos-latest'
run: brew install jq
- name: Install Ubuntu dependencies
if: matrix.os == 'ubuntu-latest'
run: sudo apt-get install jq
- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Install cargo-bump
run: cargo install cargo-bump
- name: Previous version
id: prev_version
run: echo "::set-output name=version::$(./scripts/current-version)"
shell: bash
- name: Bump version using cargo-bump
run: cargo bump patch
- name: Next version
id: next_version
run: echo "::set-output name=version::$(./scripts/current-version)"
shell: bash
- name: Check that version number was bumped
if: ${{ steps.prev_version.outputs.version == steps.next_version.outputs.version }}
run: exit 1
- name: Run integration tests
run: |
cargo build --release
cargo test --release
cargo fmt -- --check
cargo clippy -- -D warnings
./tools/test.sh
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
- name: Update dependencies & ensure version changed
if: ${{ github.event.pull_request.merged == true }}
run: cargo update --aggressive
- name: Commit changes and tag release
run: |
git add Cargo.lock Cargo.toml
git commit -m "Update dependencies for version ${{ steps.next_version.outputs.version }}"
git tag -a "v${{ steps.next_version.outputs.version }}" -m "Release v${{ steps.next_version.outputs.version }}"
- name: Publish to crates.io (Dry Run)
if: ${{ github.event.pull_request.merged != true }}
run: |
echo "Dry run: would publish to crates.io but skipping because this is a dry run."
- name: Push changes to main
if: ${{ github.event.pull_request.merged == true }}
run: |
git push origin main
git push origin "v${{ steps.next_version.outputs.version }}"
- name: Publish to crates.io (Actual Run)
if: ${{ github.event.pull_request.merged == true }}
uses: katyo/publish-crates@v2
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
- name: Success message
if: ${{ github.event.pull_request.merged == true }}
run: echo "Successfully published version ${{ steps.next_version.outputs.version }}"