all repos — litestore @ fc786deb6da899ead577caec14c3621e04a25562

A minimalist nosql document store.

.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
 120
 121
 122
 123
 124
 125
 126
 127
 128
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
        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 --opt:size -d:ssl 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 --opt:size -d:ssl 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-relese
        uses: pozetroninc/github-action-get-latest-release@master
        with:
          repository: h3rald/litestore

      # Package the resulting Linux/macOS binary
      - name: Create artifact (Linux, macOS)
        shell: bash
        run: zip litestore_${{steps.current-release.outputs.release}}_${{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.release}}_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.release}}
          release_id: ${{steps.current-release.outputs.id }}
          verbose: true