File: build.yml

package info (click to toggle)
turtlefmt 0.1.2-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 300 kB
  • sloc: javascript: 68; makefile: 24; sh: 1
file content (214 lines) | stat: -rw-r--r-- 5,856 bytes parent folder | download | duplicates (2)
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
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
name: build

on:
  pull_request:
    branches:
      - main
  push:
    branches:
      - main
  release:
    types:
      - published

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  fmt:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: cargo fmt -- --check

  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - run: cargo clippy --all-targets -- -D warnings -D clippy::all

  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - uses: actions/cache@v4
        with:
          path: tests/cache
          key: tests-cache
      - run: cargo test

  test_msv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup override set 1.81.0
      - uses: Swatinem/rust-cache@v2
      - uses: actions/cache@v4
        with:
          path: tests/cache
          key: tests-cache
      - run: cargo test

  test_tree_sitter:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - uses: taiki-e/install-action@v2
        with: { tool: tree-sitter-cli }
      - run: tree-sitter generate
        working-directory: tree-sitter
      - run: tree-sitter test
        working-directory: tree-sitter
      - run: tree-sitter fuzz
        working-directory: tree-sitter


  rustdoc:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - run: cargo doc --no-deps
        env:
          RUSTDOCFLAGS: -D warnings

  typos:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: taiki-e/install-action@v2
        with: { tool: typos-cli }
      - run: typos

  python_sdist:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install maturin
      - run: maturin sdist
      - uses: actions/upload-artifact@v4
        with:
          name: wheels
          path: target/wheels/*.tar.gz

  wheel_linux:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        architecture: [ "x86_64", "aarch64" ]
    continue-on-error: true
    steps:
      - uses: actions/checkout@v4
      - uses: docker/setup-qemu-action@v3
        with:
          platforms: linux/${{ matrix.architecture }}
        if: matrix.architecture != 'x86_64'
      - uses: Swatinem/rust-cache@v2
      - run: docker run -v "$(pwd)":/workdir --platform linux/${{ matrix.architecture }} quay.io/pypa/manylinux_2_28_${{ matrix.architecture }} /bin/bash /workdir/.github/workflows/manylinux_build.sh
      - uses: actions/upload-artifact@v4
        with:
          name: wheels_${{ matrix.architecture }}_linux
          path: target/wheels/*.whl

  wheel_linux_musl:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        architecture: [ "x86_64" ] # TODO: aarch64 seems to fail for some reason
    continue-on-error: true
    steps:
      - uses: actions/checkout@v4
      - uses: docker/setup-qemu-action@v3
        with:
          platforms: linux/${{ matrix.architecture }}
        if: matrix.architecture != 'x86_64'
      - uses: Swatinem/rust-cache@v2
      - run: docker run -v "$(pwd)":/workdir --platform linux/${{ matrix.architecture }} quay.io/pypa/musllinux_1_2_${{ matrix.architecture }} /bin/bash /workdir/.github/workflows/musllinux_build.sh
      - uses: actions/upload-artifact@v4
        with:
          name: wheels_${{ matrix.architecture }}_linux_musl
          path: target/wheels/*.whl

  wheel_mac:
    runs-on: macos-latest
    strategy:
      matrix:
        architecture: [ "x86_64", "aarch64" ]
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - run: rustup target add ${{ matrix.architecture }}-apple-darwin
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install maturin
      - run: maturin build --release --target ${{ matrix.architecture }}-apple-darwin
      - uses: actions/upload-artifact@v4
        with:
          name: wheels_${{ matrix.architecture }}_macos
          path: target/wheels/*.whl

  wheel_windows:
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: Swatinem/rust-cache@v2
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: Remove-Item -LiteralPath "C:\msys64\" -Force -Recurse
      - run: pip install maturin
      - run: maturin build --release
      - uses: actions/upload-artifact@v4
        with:
          name: wheels_x86_64_windows
          path: target/wheels/*.whl

  publish_pypi:
    if: github.event_name == 'release'
    runs-on: ubuntu-latest
    environment:
      name: pypi
      url: https://pypi.org/p/turtlefmt
    permissions:
      id-token: write
    needs:
      - python_sdist
      - wheel_windows
      - wheel_mac
      - wheel_linux
      - wheel_linux_musl
    steps:
      - uses: actions/download-artifact@v4
        with:
          pattern: wheels_*
          path: dist
          merge-multiple: true
      - uses: pypa/gh-action-pypi-publish@release/v1
        with:
          packages-dir: dist
          skip-existing: true

  python_test:
    runs-on: ubuntu-latest
    needs:
      - wheel_linux
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - uses: actions/download-artifact@v4
        with:
          pattern: wheels_*
          path: dist
          merge-multiple: true
      - run: pip install --no-index --find-links=dist/ turtlefmt
      - run: turtlefmt --check tests/to.simple.ttl