-
Notifications
You must be signed in to change notification settings - Fork 10
142 lines (117 loc) · 4.19 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
name: Release
permissions:
contents: write
on:
push:
branches:
- sopell/musl-builds
tags:
- v[0-9]+.*
jobs:
create-release:
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v2
- name: Create GitHub release
uses: taiki-e/create-gh-release-action@v1
with:
changelog: CHANGELOG.md
token: ${{ secrets.GITHUB_TOKEN }}
upload-binaries:
strategy:
matrix:
include:
# Linux Aarch64 cross build.
- target: aarch64-unknown-linux-gnu
os: ubuntu-20.04
cc: 'aarch64-linux-gnu-gcc'
cxx: 'aarch64-linux-gnu-g++'
# Mac M1 cross build. Uses protobuf compiler on the host.
- target: aarch64-apple-darwin
os: macos-latest
cflags: '-target arm64-apple-macos'
cxxflags: '-target arm64-apple-macos'
cc: 'clang'
cxx: 'clang++'
# Normal x86-64 Linux build
- target: x86_64-unknown-linux-gnu
os: ubuntu-20.04
# Musl x86-64
- target: x86_64-unknown-linux-musl
os: ubuntu-20.04
# Musl aarch64
- target: aarch64-unknown-linux-musl
os: ubuntu-20.04
# Normal Intel Mac build
- target: x86_64-apple-darwin
os: macos-latest
# Try to complete every job in the matrix, even if one fails.
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- name: Install protobuf (Apt)
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler
if: matrix.os == 'ubuntu-20.04'
- name: Install protobuf (Brew)
run: brew install protobuf
if: matrix.os == 'macos-latest'
# Install cross compilation rust toolchain for Arm64 Mac
- uses: actions-rust-lang/setup-rust-toolchain@v1.3.7
with:
target: ${{ matrix.target }}
if: matrix.target == 'aarch64-apple-darwin'
# Run linux aarch64 build in a cross-rs qemu environment
- name: Install cross-compilation tools
uses: taiki-e/setup-cross-toolchain-action@v1
with:
target: ${{ matrix.target }}
if: matrix.target == 'aarch64-unknown-linux-gnu'
- name: Check protobuf
run: protoc --version; which protoc; echo "PROTOC IS ${PROTOC}";
# Run the build & upload artifacts
- name: Build and upload lading binaries
uses: taiki-e/upload-rust-binary-action@v1
env:
# Setting CFLAGS or CXXFLAGS will override the default flags provided by the cc crate
CFLAGS: ${{ matrix.cflags }}
CXXFLAGS: ${{ matrix.cxxflags }}
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
with:
bin: lading
no_default_features: true
features: ${{ matrix.features || '' }}
target: ${{ matrix.target }}
checksum: sha256
token: ${{ secrets.GITHUB_TOKEN }}
dry_run: true
# Auth for the S3 upload
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{ secrets.LADING_RELEASE_BOT_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.LADING_RELEASE_BOT_SECRET_ACCESS_KEY }}
aws-region: us-west-2
# Copy from cargo target directory to S3 release bucket
- name: Upload binary to S3
if: startsWith(github.ref, 'refs/tags/v')
run: |
aws s3 cp target/${{ matrix.target }}/release/lading s3://lading-releases/${{ github.ref_name }}/${{ matrix.target }}/lading
crates-io-publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install protobuf
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler
- name: Publish to crates.io
run: |
cargo publish \
--token ${{ secrets.CARGO_REGISTRY_TOKEN }} \
--locked \
--package lading-capture
cargo publish \
--token ${{ secrets.CARGO_REGISTRY_TOKEN }} \
--locked \
--package lading