all repos — nimhttpd @ 00ec471c8d29f93463d3606180ae37075489b6e0

A useful static file web server.

.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
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
            run: echo "$HOME/.nimble/bin" >> $GITHUB_PATH
            if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'

            # Sets path (Windows)
          - name: Update %PATH%
            run: echo "${HOME}/.nimble/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

              # Build for Linux
          - name: Build (Linux)
            run: nimble build -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)
            run: nimble build c -d:release --gc:orc --deepcopy:on --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)
            run: zip nimhttpd_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.id}}_x64.zip nimhttpd
            if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest'

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