all repos — mn @ fdeaa949bccf9e29bcbe0d85aec4d087177c93e7

A truly minimal concatenative programming language.

.github/workflows/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
name: Release

# Controls when the action will run.
on:
    # Allows you to run this workflow manually from the Actions tab
    workflow_dispatch:

jobs:
    release:
        name: "Release"

        # Set up a matrix of different configurations:
        # for now Linux, MacOS and Windows
        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 }}

            # Checks out the repository
            - uses: actions/checkout@v2

            # Install libraries
            - name: install musl-gcc
              run: sudo apt-get install -y musl-tools
              if: matrix.os == 'ubuntu-latest'

            # Set path
            - name: Update $PATH
              run: echo "$HOME/.nimble/bin" >> $GITHUB_PATH
              if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'

            - name: Update %PATH%
              run: echo "${HOME}/.nimble/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
              if: matrix.os == 'windows-latest'

            # Install the compiler
            - name: Install Nim
              run: |
                  curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh
                  sh init.sh -y

            # Build for linux
            - name: Build (Linux)
              run: nim c -d:release --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --gc:orc --deepcopy:on --opt:size mn
              if: matrix.os == 'ubuntu-latest'

            # Build for MacOS
            - name: Build (MacOS)
              run: nim c -d:release --gc:orc --deepcopy:on --opt:size mn
              if: matrix.os == 'macos-latest'

            # Build for Windows
            - name: Build (Windows)
              run: nim c -d:release --gc:orc --deepcopy:on --opt:size mn
              if: matrix.os == 'windows-latest'

            - name: Get Version (Linux, MacOS)
              id: version-nix
              run: echo "::set-output name=id::$(./mn mntool info:version)"
              if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'

            - name: Get Version (Windows)
              id: version-win
              run: echo "::set-output name=id::$(mn mntool info:version)"
              if: matrix.os == 'windows-latest'

            # Package the resulting Linux binary
            - name: Create artifact (Linux)
              run: zip mn_v${{steps.version-nix.outputs.id}}_linux_x64.zip mn
              if: matrix.os == 'ubuntu-latest'

            # Package the resulting MacOS binary
            - name: Create artifact (MacOS)
              run: zip mn_v${{steps.version-nix.outputs.id}}_macosx_x64.zip mn
              if: matrix.os == 'macosx-latest'

            # Package the resulting Windows binary
            - name: Create artifact (Windows)
              run: 7zip a -tzip mn_v${{steps.version-win.outputs.id}}_windows_x64.zip mn.exe
              if: matrix.os == 'windows-latest'

            - 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

            # Upload artifacts
            - name: "Upload to release"
              uses: xresloader/upload-to-github-release@v1
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              with:
                  file: "mn_v*.zip"
                  overwrite: true
                  release_id: ${{steps.current-release.outputs.id }}
                  verbose: true