-
Notifications
You must be signed in to change notification settings - Fork 11
138 lines (118 loc) · 3.8 KB
/
Copy pathpublish.yml
File metadata and controls
138 lines (118 loc) · 3.8 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
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
name: Release sql-gen
on:
workflow_dispatch:
inputs:
bump:
description: 'Version bump type: patch, minor, or major'
required: true
default: patch
jobs:
release:
permissions:
contents: write
runs-on: ubuntu-latest
outputs:
new_tag: ${{ steps.get_tag.outputs.new_tag }}
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Rust Cache
uses: Swatinem/rust-cache@v2.7.8
- name: Install cargo-release
run: cargo install cargo-release
- name: Bump version and create tag
run: |
cargo release ${{ github.event.inputs.bump }} --no-confirm --execute
git push --follow-tags
- name: Get new tag
id: get_tag
run: |
NEW_TAG=$(git describe --tags --abbrev=0)
echo "new_tag=$NEW_TAG" >> $GITHUB_OUTPUT
- name: Create GitHub Release
id: create_release
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.get_tag.outputs.new_tag }}
name: "Release ${{ steps.get_tag.outputs.new_tag }}"
body: "Release of sql-gen"
build:
needs: release
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Build sql-gen
run: cargo build --release
- name: Upload binary artifact (Windows)
if: runner.os == 'Windows'
uses: actions/upload-artifact@v3
with:
name: sql-gen-windows
path: target\release\sql-gen.exe
- name: Upload binary artifact (Unix)
if: runner.os != 'Windows'
uses: actions/upload-artifact@v3
with:
name: sql-gen-${{ matrix.os }}
path: target/release/sql-gen
attach_assets:
needs: [release, build]
runs-on: ubuntu-latest
steps:
- name: Download Ubuntu Artifact
uses: actions/download-artifact@v3
with:
name: sql-gen-ubuntu-latest
path: ./ubuntu
- name: Download macOS Artifact
uses: actions/download-artifact@v3
with:
name: sql-gen-macos-latest
path: ./macos
- name: Download Windows Artifact
uses: actions/download-artifact@v3
with:
name: sql-gen-windows
path: ./windows
- name: Upload Ubuntu Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: ./ubuntu/sql-gen
asset_name: sql-gen-linux
asset_content_type: application/octet-stream
- name: Upload macOS Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: ./macos/sql-gen
asset_name: sql-gen-macos
asset_content_type: application/octet-stream
- name: Upload Windows Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.release.outputs.upload_url }}
asset_path: ./windows/sql-gen.exe
asset_name: sql-gen-windows.exe
asset_content_type: application/octet-stream