Add Artifacts to Current Release #39
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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/[email protected] | |
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 --dynLibOverride:sqlite3 --opt:size 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 --dynLibOverride:sqlite3 --opt:size 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: current-release | |
uses: InsonusK/[email protected] | |
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.current-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.current-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.current-release.outputs.tag_name}} | |
release_id: ${{steps.current-release.outputs.id }} | |
verbose: true |