forked from txpipe/oura
-
Notifications
You must be signed in to change notification settings - Fork 0
145 lines (122 loc) · 4.21 KB
/
release.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
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
name: Release
on:
release:
types: [published]
jobs:
binary_build:
name: Build release binaries
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
name: oura-x86_64-unknown-linux-gnu.tar.gz
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
name: oura-x86_64-unknown-linux-musl.tar.gz
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
name: oura-aarch64-unknown-linux-musl.tar.gz
- target: arm-unknown-linux-musleabihf
os: ubuntu-latest
name: oura-arm-unknown-linux-musleabihf.tar.gz
- target: x86_64-apple-darwin
os: macOS-latest
name: oura-x86_64-apple-darwin.tar.gz
- target: aarch64-apple-darwin
os: macOS-latest
name: oura-aarch64-apple-darwin.tar.gz
- target: x86_64-pc-windows-msvc
os: windows-latest
name: oura-x86_64-pc-windows-msvc.zip
runs-on: ${{ matrix.os }}
continue-on-error: true
steps:
- name: Prev Build | Get Dependencies [Ubuntu]
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get install pkg-config libssl-dev
- name: Prev Build | Get Dependencies [MacOS]
if: matrix.os == 'macOS-latest'
run: |
brew install openssl@1.1
- name: Setup | Checkout
uses: actions/checkout@v3
# Cache files between builds
- name: Setup | Cache Cargo
uses: actions/cache@v3.3.1
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Setup | Rust
uses: actions-rs/toolchain@v1.0.7
with:
toolchain: stable
override: true
profile: minimal
target: ${{ matrix.target }}
- name: Build | Build
uses: actions-rs/cargo@v1.0.3
with:
command: build
args: --release --all-features --target ${{ matrix.target }}
use-cross: ${{ matrix.os == 'ubuntu-latest' }}
- name: Post Build | Prepare artifacts [Windows]
if: matrix.os == 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
strip oura.exe
7z a ../../../${{ matrix.name }} oura.exe
cd -
- name: Post Build | Prepare artifacts [-nix]
if: matrix.os != 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
# TODO: investigate better cross platform stripping
strip oura || true
tar czvf ../../../${{ matrix.name }} oura
cd -
- name: Deploy | Upload artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.name }}
path: ${{ matrix.name }}
github_release:
name: Create GitHub Release
needs: [binary_build]
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup | Go
uses: actions/setup-go@v4
with:
go-version: "1.16"
- name: Setup | Artifacts
uses: actions/download-artifact@v3
- name: Setup | Checksums
run: for file in oura-*/oura-*; do openssl dgst -sha256 -r "$file" | awk '{print $1}' > "${file}.sha256"; done
- name: Setup | Release notes
run: |
go install github.com/git-chglog/git-chglog/cmd/git-chglog@v0.15.0
git-chglog -c .github/chglog/release.yml $(git describe --tags) > RELEASE.md
- name: Build | Publish
uses: softprops/action-gh-release@v1
with:
files: oura-*/oura-*
body_path: RELEASE.md
draft: true
- name: Deploying to Amazon S3
uses: dvelasquez/deploy-s3-action@main
with:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_REGION }}
AWS_BUCKET_NAME: ${{ secrets.AWS_BUCKET_NAME }}
BUCKET_PATH: "/"
DIST_LOCATION_CODE: ./