-
-
Notifications
You must be signed in to change notification settings - Fork 29
181 lines (162 loc) · 5.85 KB
/
release-cli.yaml
File metadata and controls
181 lines (162 loc) · 5.85 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
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
name: Release CLI
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
create-release:
name: Create Release
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6.0.2
- name: Read CLI version
uses: SebRollen/toml-action@v1.2.0
id: read_cli_version
with:
file: './cli/Cargo.toml'
field: 'package.version'
- name: Check Release Version is Same as CLI Version
if: ${{ !endsWith(github.ref, steps.read_cli_version.outputs.value) }}
run: |
echo "Tag version ${{ github.ref }} doesn't match Cargo.toml version ${{ steps.read_cli_version.outputs.value }}";
echo "Did you forget to update version in Cargo.toml?"
exit 1
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
body: |
TODO: Write release notes
draft: false
prerelease: false
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
build-linux:
name: Release Artifacts on Linux
needs:
- create-release
strategy:
matrix:
box:
- { runner: ubuntu-24.04, arch: amd64 }
- { runner: arm-runner, arch: arm64 }
runs-on: ${{ matrix.box.runner }}
timeout-minutes: 45
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends curl build-essential libssl-dev pkg-config
- name: Install Rust Toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- uses: actions/checkout@v6.0.2
- name: Build and Package
run: |
cd cli
cargo build --release
# Build gzip package
cd ./target/release && tar -czvf dbdev.tar.gz ./dbdev
cd ../..
# Build debian package
package_dir="dbdev-${{ github.ref_name }}-linux-${{ matrix.box.arch }}"
mkdir -p "${package_dir}/usr/local/bin"
cp ./target/release/dbdev "${package_dir}/usr/local/bin/dbdev"
extension_version="${{ github.ref_name }}"
# strip the leading v
deb_version="${extension_version:1}"
mkdir -p "${package_dir}/DEBIAN"
touch "${package_dir}/DEBIAN/control"
echo 'Package: dbdev' >> ${package_dir}/DEBIAN/control
echo 'Version:' ${deb_version} >> ${package_dir}/DEBIAN/control
echo 'Architecture: ${{ matrix.box.arch }}' >> ${package_dir}/DEBIAN/control
echo 'Maintainer: supabase' >> ${package_dir}/DEBIAN/control
echo 'Description: CLI for publishing to database.dev' >> ${package_dir}/DEBIAN/control
# Create deb package
sudo chmod -R 00755 "${package_dir}"
sudo dpkg-deb --build "${package_dir}"
- name: Upload gzip Package
uses: actions/upload-release-asset@v1
env:
UPLOAD_URL: ${{ needs.create-release.outputs.upload_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ./cli/target/release/dbdev.tar.gz
asset_name: dbdev-${{ github.ref_name }}-linux-${{ matrix.box.arch }}.tar.gz
asset_content_type: application/gzip
- name: Upload Debian Package
uses: actions/upload-release-asset@v1
env:
UPLOAD_URL: ${{ needs.create-release.outputs.upload_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ./cli/dbdev-${{ github.ref_name }}-linux-${{ matrix.box.arch }}.deb
asset_name: dbdev-${{ github.ref_name }}-linux-${{ matrix.box.arch }}.deb
asset_content_type: application/vnd.debian.binary-package
build-macos:
name: Release Artifacts on macOS
needs:
- create-release
runs-on: macos-15
timeout-minutes: 45
steps:
- name: Install Rust Toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- uses: actions/checkout@v6.0.2
- name: Build and Package
run: |
cd cli
cargo build --release
cd ./target/release && tar -czvf dbdev.tar.gz ./dbdev
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
UPLOAD_URL: ${{ needs.create-release.outputs.upload_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ./cli/target/release/dbdev.tar.gz
asset_name: dbdev-${{ github.ref_name }}-macos-arm64.tar.gz
asset_content_type: application/${{ matrix.box.content-type }}
build-windows:
name: Release Artifacts on Windows
needs:
- create-release
runs-on: windows-2022
timeout-minutes: 45
steps:
- name: Install Rust Toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
- uses: actions/checkout@v6.0.2
- name: Build and Package
run: |
cd cli
cargo build --release
cd ./target/release && Compress-Archive -Path ./dbdev.exe -Destination dbdev.zip
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
UPLOAD_URL: ${{ needs.create-release.outputs.upload_url }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ env.UPLOAD_URL }}
asset_path: ./cli/target/release/dbdev.zip
asset_name: dbdev-${{ github.ref_name }}-windows-amd64.zip
asset_content_type: application/zip