.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 |
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 # 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 install -y nifty nifty install nimble build -v -y --passL:-static -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) shell: bash run: | nimble install -y nifty nifty install nimble build -v -y -d:release --gc:orc --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) shell: bash run: zip hastyscribe_${{steps.current-release.outputs.tag_name}}_${{steps.os.outputs.id}}_x64.zip hastyscribe if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' # Package the resulting Windows binary - name: Create artifact (Windows) run: Compress-Archive -Path hastyscribe.exe -DestinationPath hastyscribe_${{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: 'hastyscribe_v*.zip' overwrite: true tag_name: ${{steps.current-release.outputs.tag_name}} release_id: ${{steps.current-release.outputs.id }} verbose: true |