.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 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
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' - name: Setup Msys2 if: matrix.os == 'windows-latest' uses: msys2/setup-msys2@v2 with: msystem: MINGW64 release: true update: true path-type: inherit install: >- base-devel autotools mingw-w64-x86_64-perl-locale-maketext mingw-w64-x86_64-toolchain mingw-w64-x86_64-autotools # 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 - name: Build (macOS) shell: bash run: nimble build -v -y -d:release --mm:refc --opt:size -d:ssl litestore if: matrix.os == 'macos-latest' # Build for Windows - name: Build (Windows) shell: msys2 {0} run: nimble build -v -y -d:release --mm:refc --opt:size -d:ssl --gcc.exe:x86_64-w64-mingw32-gcc --gcc.linkerexe:x86_64-w64-mingw32-gcc litestore if: 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: 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.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.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.release.outputs.tag_name}} release_id: ${{steps.release.outputs.id }} verbose: true |