all repos — hastyscribe @ 20374e3e85dac7dbc7df1e8d3b9b09aae6183158

A professional markdown compiler.

.github/workflows/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
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
          echo "C:\msys64\mingw64\bin" | 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

      # 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 install -y nifty
          nifty install
          nifty build discount
          nimble build -v -y --passL:-static -d:release --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --gc:orc --opt:size
        if: matrix.os == 'ubuntu-latest'

      # Build for macOS/Windows
      - name: Build (macOS, Windows)
        shell: bash
        run: |
          nimble install -y nifty
          nifty install
          nifty build discount
          nimble build -v -y -d:release --gc:orc --opt:size
        if: matrix.os == 'macos-latest' || matrix.os == 'windows-latest'

      # Retrieve ID and Name of the current (draft) release
      - name: 'Get current release'
        id: current-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 hastyscribe_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.id}}_x64.zip hastyscribe
        if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'

      # Package the resulting Windows binary
      - name: Create artifact (Windows)
        run: Compress-Archive -Path hastyscribe.exe -DestinationPath hastyscribe_${{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: 'hastyscribe_v*.zip'
          overwrite: true
          tag_name: ${{steps.current-release.outputs.tag_name}}
          release_id: ${{steps.current-release.outputs.id }}
          verbose: true