-
Notifications
You must be signed in to change notification settings - Fork 9
130 lines (110 loc) · 4.42 KB
/
add-artifacts-to-current-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
name: Add Artifacts to Current Release
# Controls when the action will run.
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
release:
name: 'Build and upload artifacts'
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
env:
CHOOSENIM_CHOOSE_VERSION: stable
CHOOSENIM_NO_ANALYTICS: 1
steps:
# Cancel other actions of the same type that might be already running
- name: 'Cancel similar actions in progress'
uses: styfle/cancel-workflow-action@0.6.0
with:
access_token: ${{ github.token }}
# Detects OS and provide Nim-friendly OS identifiers
- name: Detect current OS
id: os
run: echo "::set-output name=id::${{matrix.os == 'ubuntu-latest' && 'linux' || matrix.os == 'macos-latest' && 'macosx' || matrix.os == 'windows-latest' && 'windows'}}"
# Checks out the repository
- uses: actions/checkout@v2
# Installs libraries
- name: install musl-gcc
run: sudo apt-get install -y musl-tools
if: matrix.os == 'ubuntu-latest'
# Sets path (Linux, macOS)
- name: Update $PATH
shell: bash
run: |
echo "$HOME/.nimble/bin" >> $GITHUB_PATH
echo $GITHUB_WORKSPACE >> $GITHUB_PATH
# Sets path (Windows)
- name: Update %PATH%
run: |
echo "${HOME}/.nimble/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
echo "${GITHUB_WORKSPACE}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
if: matrix.os == 'windows-latest'
# Install the Nim compiler
- name: Install Nim
run: |
curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh
sh init.sh -y
# Install HastyScribe
- name: Install HastyScribe (macOS/Linux)
shell: bash
run: |
curl https://github.com/h3rald/hastyscribe/releases/download/v1.12.3/hastyscribe_v1.12.3_${{steps.os.outputs.id}}_x64.zip -L -o hastyscribe.zip
unzip hastyscribe.zip
mv src/hastyscribe .
# Temporary Windows-specific fix (missing certificates for nimble)
- name: Install cert (temporary fix, windows only)
run: |
curl https://curl.se/ca/cacert.pem -L -o cacert.pem
if: matrix.os == 'windows-latest'
# Build for Linux
- name: Build (Linux)
run: nimble build -v -y --passL:-static -d:release --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --mm:refc --opt:size -d:ssl litestore
if: matrix.os == 'ubuntu-latest'
# Build for macOS/Windows
- name: Build (macOS, Windows)
shell: bash
run: nimble build -v -y -d:release --mm:refc --opt:size -d:ssl litestore
if: matrix.os == 'macos-latest' || matrix.os == 'windows-latest'
# Import admin directory and create default db
- name: Import Admin
shell: bash
run: |
cp -r src/admin/ admin/
litestore -d:admin import
# Build guide
- name: Build guide
shell: bash
run: build_guide
# Retrieve ID and Name of the current (draft) release
- name: "Get current release"
id: release
uses: InsonusK/get-latest-release@v1.0.1
with:
myToken: ${{ github.token }}
exclude_types: "release"
view_top: 1
# Package the resulting Linux/macOS binary
- name: Create artifact (Linux, macOS)
shell: bash
run: zip litestore_${{steps.release.outputs.tag_name}}_${{steps.os.outputs.id}}_x64.zip litestore data.db LiteStore_UserGuide.htm
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'
# Package the resulting Windows binary
- name: Create artifact (Windows)
run: Compress-Archive -Path litestore.exe, data.db, LiteStore_UserGuide.htm -DestinationPath litestore_${{steps.release.outputs.tag_name}}_windows_x64.zip
if: matrix.os == 'windows-latest'
# Upload artifacts to current draft release
- name: 'Upload to current release'
uses: xresloader/upload-to-github-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
file: 'litestore_v*.zip'
overwrite: true
tag_name: ${{steps.release.outputs.tag_name}}
release_id: ${{steps.release.outputs.id }}
verbose: true