Skip to content

Treats compiler as Nim #458

Treats compiler as Nim

Treats compiler as Nim #458

Workflow file for this run

on:
push:
tags:
- "v*" # "v1.2.3"
branches:
- master
paths-ignore: ["nimble-guide/**", "**/*.md"]
pull_request:
paths-ignore: ["nimble-guide/**", "**/*.md"]
workflow_dispatch:
jobs:
build:
strategy:
fail-fast: false
matrix:
target:
- os: linux
triple: x86_64-linux-musl
name: linux_x64
- os: linux
triple: i686-linux-musl
name: linux_x32
- os: linux
triple: aarch64-linux-musl
name: linux_aarch64
- os: linux
triple: armv7l-linux-musleabihf
name: linux_armv7l
- os: macosx
triple: x86_64-apple-darwin14
name: macosx_x64
- os: windows
triple: x86_64-w64-mingw32
name: windows_x64
- os: windows
triple: i686-w64-mingw32
name: windows_x32
include:
- target:
os: linux
builder: ubuntu-20.04
- target:
os: macosx
builder: macos-14
- target:
os: windows
builder: windows-2019
defaults:
run:
shell: bash
name: "${{ matrix.target.triple }}"
runs-on: ${{ matrix.builder }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- uses: jiro4989/setup-nim-action@v2
with:
nim-version: "stable"
yes: true
- name: Install dependencies
run: nimble install -y
- name: Install zip
if: matrix.target.os == 'windows'
run: choco install zip
- name: build nimble
run: |
if [[ "${{ matrix.target.triple }}" == "x86_64-apple-darwin14" ]]; then
nim c -d:release \
-d:zippyNoSimd \
--passL:"-target x86_64-apple-macos10.15" \
--passC:"-target x86_64-apple-macos10.15" \
src/nimble.nim;
else
nim -d:release c src/nimble.nim;
fi
- name: Compress binaries
run: |
cd src
if [[ "${{ matrix.target.os }}" == "windows" ]]; then
# Create both formats for Windows
tar -c -z -v -f ../nimble-${{ matrix.target.name }}.tar.gz nimble.exe
zip ../nimble-${{ matrix.target.name }}.zip nimble.exe
else
tar -c -z -v -f ../nimble-${{ matrix.target.name }}.tar.gz nimble
fi
- name: Upload tar.gz artifact
uses: actions/upload-artifact@v4
with:
name: nimble-${{ matrix.target.name }}.tar.gz
path: nimble-${{ matrix.target.name }}.tar.gz
- name: Upload zip artifact (Windows only)
if: matrix.target.os == 'windows'
uses: actions/upload-artifact@v4
with:
name: nimble-${{ matrix.target.name }}.zip
path: nimble-${{ matrix.target.name }}.zip
create-github-release:
if: github.event_name != 'pull_request'
name: Create GitHub Release
needs: [build]
runs-on: ubuntu-latest
permissions:
contents: write
actions: write
steps:
- name: Download artefacts
uses: actions/download-artifact@v4
# Create/update the "latest" release
- uses: ncipollo/release-action@v1
with:
name: Latest Nimble Binaries
artifacts: "*/*"
allowUpdates: true
makeLatest: true
prerelease: true
tag: latest
# Create a versioned release if this is a tag push
- if: startsWith(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
name: Nimble ${{ github.ref_name }}
artifacts: "*/*"
allowUpdates: true
makeLatest: true
prerelease: false
tag: ${{ github.ref_name }}
- name: Delete artefacts
uses: geekyeggo/delete-artifact@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
failOnError: false
name: "nimble-*"