summaryrefslogtreecommitdiffstats
path: root/.github/workflows/rust.yml
blob: 2a0029f22521cdb151a6af8ee68eaeb6e5e7ed44 (plain)
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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
name: Rust

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Install rust
      uses: dtolnay/rust-toolchain@master
      with:
          toolchain: stable

    - uses: actions/cache@v3
      with:
        path: |
          ~/.cargo/registry
          ~/.cargo/git
          target
        key: ${{ runner.os }}-cargo-release-${{ hashFiles('**/Cargo.lock') }}

    - name: Run cargo build common
      run: cargo build -p atuin-common --locked --release

    - name: Run cargo build client
      run: cargo build -p atuin-client --locked --release

    - name: Run cargo build server
      run: cargo build -p atuin-server --locked --release

    - name: Run cargo build main
      run: cargo build --all --locked --release && strip target/release/atuin

  unit-test:
    runs-on: [self-hosted, ARM64, macOS]

    steps:
    - uses: actions/checkout@v3

    - name: Install rust
      uses: dtolnay/rust-toolchain@master
      with:
          toolchain: stable

#     - uses: actions/cache@v3
#       with:
#         path: |
#          ~/.cargo/registry
#           ~/.cargo/git
#           target
#         key: ${ runner.os }-cargo-debug-${{ hashFiles('**/Cargo.lock') }}

    - name: Run cargo test
      run: cargo test --lib --bins

    - name: Run cargo check (all features)
      run: cargo check --all-features --workspace

    - name: Run cargo check (no features)
      run: cargo check --no-default-features --workspace

    - name: Run cargo check (sync)
      run: cargo check --no-default-features --features sync --workspace

    - name: Run cargo check (server)
      run: cargo check --no-default-features --features server --workspace

  integration-test:
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres
        env:
          POSTGRES_USER: atuin
          POSTGRES_PASSWORD: pass
          POSTGRES_DB: atuin
        ports:
          - 5432:5432

    steps:
    - uses: actions/checkout@v3

    - name: Install rust
      uses: dtolnay/rust-toolchain@master
      with:
          toolchain: stable

    - uses: actions/cache@v3
      with:
        path: |
         ~/.cargo/registry
          ~/.cargo/git
          target
        key: ${ runner.os }-cargo-debug-${{ hashFiles('**/Cargo.lock') }}

    - name: Run cargo test
      run: cargo test --test '*'
      env:
        ATUIN_DB_URI: postgres://atuin:pass@localhost:5432/atuin

  clippy:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Install latest rust
      uses: dtolnay/rust-toolchain@master
      with:
          toolchain: stable
          components: clippy

    - uses: actions/cache@v3
      with:
        path: |
          ~/.cargo/registry
          ~/.cargo/git
          target
        key: ${{ runner.os }}-cargo-debug-${{ hashFiles('**/Cargo.lock') }}

    - name: Run clippy
      run: cargo clippy -- -D warnings
        
  format:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3

    - name: Install latest rust
      uses: dtolnay/rust-toolchain@master
      with:
          toolchain: stable
          components: rustfmt

    - name: Format
      run: cargo fmt -- --check