all repos — litestore @ fa2d583d1b9511fc6db5e47cff0f425d611ed682

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
 129
 130
 131
 132
 133
 134
 135
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
                  echo $GITHUB_WORKSPACE >> $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
                  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 (macOS/Linux)
            - name: Install HastyScribe (macOS/Linux)
              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
              if: matrix.os == 'macos-latest' || matrix.os == 'ubuntu-latest'
                 
            # Install HastyScribe (Windows)
            - name: Install HastyScribe (Windows)
              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
                  Expand-Archive -Path hastyscribe.zip -DestinationPath .
              if: matrix.os == 'windows-latest'
            
            - name: Install cert (temporary fix, windows only)
              run: |
                  curl https://curl.se/ca/cacert.pem -L -o cacert.pem 
                  move cacert.pem "${HOME}\.nimble\bin\cacert.pem"
              if: matrix.os == 'windows-latest'

            # Build for Linux
            - name: Build (Linux)
              run: nimble build -v -y -d:release --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --gc:orc --opt:size litestore
              if: matrix.os == 'ubuntu-latest'

            # Build for macOS/Windows
            - name: Build (macOS, Windows)
              run: nimble build -v -y -d:release --gc:orc --opt:size 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-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 litestore_${{steps.current-release.outputs.tag_name}}_${{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.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: "litestore_v*.zip"
                  overwrite: true
                  tag_name: ${{steps.current-release.outputs.tag_name}}
                  release_id: ${{steps.current-release.outputs.id }}
                  verbose: true