.github/workflows/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 |
name: Release # Controls when the action will run. on: # Run only when a new tag is pushed push: tags: - 'test-**' # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: # First, build and package our different assets package: name: "Package" # Set up a matrix of different configurations: # for now Linux and MacOS (Windows can obviously be added as well) # Here, we could also add flags - under a different matrix key - # for different builds: e.g. lite vs non-lite runs-on: ${{ matrix.os }} strategy: matrix: os: - ubuntu-latest - macos-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 }} # Checks out the repository - uses: actions/checkout@v2 # Install libraries - name: install musl-gcc run: sudo apt-get install -y musl-tools if: matrix.os == 'ubuntu-latest' # Set path - name: Update $PATH run: echo "$HOME/.nimble/bin" >> $GITHUB_PATH # Install the compiler - name: Install Nim run: | curl https://nim-lang.org/choosenim/init.sh -sSf > init.sh sh init.sh -y # Install dependencies - name: Install nifty run: nimble install -y nifty - name: Install deps run: nifty install # Build for linux - name: Build (Linux) run: nim c -d:release -d:ssl --gcc.exe:musl-gcc --gcc.linkerexe:musl-gcc --cpu:amd64 --os:linux -o:min min if: matrix.os == 'ubuntu-latest' # Build for MacOS - name: Build (MacOS) run: nim c -d:release -d:ssl -o:min min if: matrix.os == 'macos-latest' # Package the resulting binary (along with the license and readme file) - name: Create artifact run: | install -m 0755 ./min . tar czf min-${{runner.os}}.tar.gz min README.md LICENSE # And upload it, so that we can reuse all of them later as release assets - name: Upload Artifact uses: 'actions/upload-artifact@v1' with: name: min-${{runner.os}}.tar.gz path: min-${{runner.os}}.tar.gz # Then, let's prepare our new release and upload the assets above upload: name: "Upload" runs-on: ubuntu-latest if: ${{ always() }} # This should run after all matrix job (for linux, mac, etc) above have finished needs: [package] steps: - name: "Cancel similar actions in progress" uses: styfle/cancel-workflow-action@0.6.0 with: access_token: ${{ github.token }} # Download all of the previously created assets # and put them in an ./assets folder - uses: actions/download-artifact@v2 with: path: ./assets # That's just for debugging to make sure everything is in place - name: Display structure of downloaded files run: ls -R # Create a new release - name: Create Release id: create-release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: ${{ github.ref }} release_name: ${{ github.ref }} body: | ${{ github.ref }} draft: false prerelease: false # Post all of the above assets (under ./assets) # as part of the newly created release - name: Upload Release Assets id: upload-release-assets uses: dwenegar/upload-release-assets@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: release_id: ${{ steps.create-release.outputs.id }} assets_path: ./assets # Celebrate! :) |