Skip to content

Commit bec7bec

Browse files
committed
chore(.github/): Add release workflow
1 parent f9b9556 commit bec7bec

File tree

1 file changed

+196
-0
lines changed

1 file changed

+196
-0
lines changed

.github/workflows/release.yml

Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
on:
2+
push:
3+
# Sequence of patterns matched against refs/tags
4+
tags:
5+
- '*'
6+
7+
name: Release
8+
9+
env:
10+
windows_artifact: clib-win
11+
linux_artifact: clib-linux
12+
macos_artifact: clib-macos
13+
14+
jobs:
15+
linux:
16+
name: Release Linux
17+
runs-on: ubuntu-latest
18+
steps:
19+
- name: Checkout Code
20+
uses: actions/checkout@v2
21+
22+
- name: Get Tag Name
23+
uses: olegtarasov/get-tag@v2
24+
id: tag_name
25+
26+
- name: System Setup
27+
shell: bash
28+
run: |
29+
sudo apt update -y
30+
sudo apt install -qq libcurl4-gnutls-dev
31+
32+
- name: Build Release
33+
run: |
34+
make
35+
36+
- name: Test Release
37+
run: |
38+
sudo make test
39+
40+
- name: Setup Release
41+
run: |
42+
mkdir -p build/bin
43+
PREFIX=build make install
44+
45+
- uses: actions/upload-artifact@v1
46+
with:
47+
name: ${{ env.linux_artifact }}
48+
path: build/bin
49+
50+
macos:
51+
name: Release macOS
52+
runs-on: macos-latest
53+
steps:
54+
- name: Checkout Code
55+
uses: actions/checkout@v2
56+
57+
- name: Get Tag Name
58+
uses: olegtarasov/get-tag@v2
59+
id: tag_name
60+
61+
- name: System Setup
62+
shell: bash
63+
run: |
64+
wget https://curl.haxx.se/download/curl-7.69.1.tar.gz
65+
tar xzf curl-*
66+
cd curl-*
67+
./configure --with-darwinssl
68+
make
69+
sudo make install
70+
71+
- name: Build Release
72+
run: |
73+
make
74+
75+
- name: Test Release
76+
run: |
77+
sudo make test
78+
79+
- name: Setup Release
80+
run: |
81+
mkdir -p build/bin
82+
PREFIX=build make install
83+
84+
- uses: actions/upload-artifact@v1
85+
with:
86+
name: ${{ env.macos_artifact }}
87+
path: build/bin
88+
89+
windows:
90+
name: Release Windows
91+
runs-on: ubuntu-latest
92+
steps:
93+
- name: Checkout Code
94+
uses: actions/checkout@v2
95+
96+
- name: Get Tag Name
97+
uses: olegtarasov/get-tag@v2
98+
id: tag_name
99+
100+
- name: System Setup
101+
shell: bash
102+
run: |
103+
mkdir -p dockcross
104+
sudo docker run --rm dockcross/windows-x64 > dockcross-windows-x64
105+
cat dockcross-windows-x64
106+
chmod +x dockcross-windows-x64
107+
wget https://curl.haxx.se/download/curl-7.69.1.tar.gz
108+
tar xzf curl-*
109+
CURL_SRC=curl-*
110+
./dockcross-windows-x64 bash -c 'cd '"$CURL_SRC"' && ./configure --prefix="/work/deps/curl" --host=x86_64-w64-mingw32.static --with-winssl --disable-dependency-tracking --disable-pthreads --disable-pthreads --enable-threaded-resolver'
111+
./dockcross-windows-x64 bash -c 'cd '"$CURL_SRC"' && make'
112+
./dockcross-windows-x64 bash -c 'cd '"$CURL_SRC"' && make install'
113+
114+
- name: Build Release
115+
run: |
116+
mkdir -p build/bin
117+
./dockcross-windows-x64 make install NO_PTHREADS=1 STATIC=true EXE=true PREFIX=build
118+
119+
- uses: actions/upload-artifact@v1
120+
with:
121+
name: ${{ env.windows_artifact }}
122+
path: build/bin
123+
124+
release:
125+
name: Release
126+
runs-on: ubuntu-latest
127+
needs: [linux, macos, windows]
128+
steps:
129+
- name: Get Tag Name
130+
uses: olegtarasov/get-tag@v2
131+
id: tag_name
132+
133+
- name: Create Release
134+
id: create_release
135+
uses: actions/create-release@v1
136+
env:
137+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
138+
with:
139+
tag_name: ${{ github.ref }}
140+
release_name: Release ${{ github.ref }}
141+
draft: false
142+
prerelease: false
143+
144+
- name: Download Linux Artifact
145+
uses: actions/download-artifact@v1
146+
with:
147+
name: ${{ env.linux_artifact }}
148+
149+
- name: Download macOS Artifact
150+
uses: actions/download-artifact@v1
151+
with:
152+
name: ${{ env.macos_artifact }}
153+
154+
- name: Download Windows Artifact
155+
uses: actions/download-artifact@v1
156+
with:
157+
name: ${{ env.windows_artifact }}
158+
159+
- name: Compress Artifacts
160+
run: |
161+
zip -r ${{ env.linux_artifact }}-${{ steps.tag_name.outputs.tag }}.zip ${{ env.linux_artifact }}/*
162+
zip -r ${{ env.macos_artifact }}-${{ steps.tag_name.outputs.tag }}.zip ${{ env.macos_artifact }}/*
163+
zip -r ${{ env.windows_artifact }}-${{ steps.tag_name.outputs.tag }}.zip ${{ env.windows_artifact }}/*
164+
165+
- name: Upload Linux Release Asset
166+
id: upload-linux-release-asset
167+
uses: actions/upload-release-asset@v1
168+
env:
169+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
170+
with:
171+
upload_url: ${{ steps.create_release.outputs.upload_url }}
172+
asset_path: ${{ env.linux_artifact }}-${{ steps.tag_name.outputs.tag }}.zip
173+
asset_name: ${{ env.linux_artifact }}-${{ steps.tag_name.outputs.tag }}.zip
174+
asset_content_type: application/zip
175+
176+
- name: Upload macOS Release Asset
177+
id: upload-macos-release-asset
178+
uses: actions/upload-release-asset@v1
179+
env:
180+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
181+
with:
182+
upload_url: ${{ steps.create_release.outputs.upload_url }}
183+
asset_path: ${{ env.macos_artifact }}-${{ steps.tag_name.outputs.tag }}.zip
184+
asset_name: ${{ env.macos_artifact }}-${{ steps.tag_name.outputs.tag }}.zip
185+
asset_content_type: application/zip
186+
187+
- name: Upload Windows Release Asset
188+
id: upload-windows-release-asset
189+
uses: actions/upload-release-asset@v1
190+
env:
191+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
192+
with:
193+
upload_url: ${{ steps.create_release.outputs.upload_url }}
194+
asset_path: ${{ env.windows_artifact }}-${{ steps.tag_name.outputs.tag }}.zip
195+
asset_name: ${{ env.windows_artifact }}-${{ steps.tag_name.outputs.tag }}.zip
196+
asset_content_type: application/zip

0 commit comments

Comments
 (0)