diff options
author | LKedward <laurence.kedward@bristol.ac.uk> | 2020-11-18 14:51:24 +0000 |
---|---|---|
committer | LKedward <laurence.kedward@bristol.ac.uk> | 2020-11-18 14:51:24 +0000 |
commit | b6e9aef0b482a0e0a2cb557a9415cd7d0e119d1e (patch) | |
tree | b1d85148c86783c94e75299de68bd4767f46c3d3 /.github | |
parent | c68cf2fbdb40c33636bd50b6a729490ae9d61654 (diff) | |
download | fpm-b6e9aef0b482a0e0a2cb557a9415cd7d0e119d1e.tar.gz fpm-b6e9aef0b482a0e0a2cb557a9415cd7d0e119d1e.zip |
Add: CI to upload binaries on release
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/release_binaries.yml | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/.github/workflows/release_binaries.yml b/.github/workflows/release_binaries.yml new file mode 100644 index 0000000..d855c39 --- /dev/null +++ b/.github/workflows/release_binaries.yml @@ -0,0 +1,133 @@ +name: Release binaries + +on: release + +jobs: + Build: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + gcc_v: [9] # Version of GFortran we want to use. + include: + - os: ubuntu-latest + STACK_CACHE: "/home/runner/.stack/" + STACK_CACHE_VERSION: "" + BOOTSTRAP_FILE: "/home/runner/.local/bin/fpm" + - os: macos-latest + STACK_CACHE: | + /Users/runner/.stack/snapshots + /Users/runner/.stack/setup-exe-src + STACK_CACHE_VERSION: "v2" + BOOTSTRAP_FILE: "/Users/runner/.local/bin/fpm" + - os: windows-latest + STACK_CACHE: | + C:\Users\runneradmin\AppData\Roaming\stack + C:\Users\runneradmin\AppData\Local\Programs\stack + STACK_CACHE_VERSION: "v2" + BOOTSTRAP_FILE: C:\Users\runneradmin\AppData\Roaming\local\bin\fpm.exe + + env: + FC: gfortran + GCC_V: ${{ matrix.gcc_v }} + + steps: + - name: Checkout code + uses: actions/checkout@v1 + + - name: Install GFortran macOS + if: contains(matrix.os, 'macos') + run: | + ln -s /usr/local/bin/gfortran-${GCC_V} /usr/local/bin/gfortran + which gfortran-${GCC_V} + which gfortran + + - name: Install GFortran Linux + if: contains(matrix.os, 'ubuntu') + run: | + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_V} 100 \ + --slave /usr/bin/gfortran gfortran /usr/bin/gfortran-${GCC_V} \ + --slave /usr/bingcov gcov /usr/bin/gcov-${GCC_V} + + - name: Get Time + id: time + uses: nanzm/get-time-action@v1.0 + with: + format: 'YYYY-MM' + + - name: Setup github actions cache + id: cache + uses: actions/cache@v2 + with: + path: ${{matrix.STACK_CACHE}} + key: ${{ runner.os }}-${{ steps.time.outputs.time }}${{matrix.STACK_CACHE_VERSION}} + + - name: Build Haskell fpm + run: | + cd bootstrap + stack build + stack install + + - name: put fpm to PATH (macOS) + if: contains(matrix.os, 'macos') + run: | + cp /Users/runner/.local/bin/fpm /usr/local/bin + + - name: put fpm to PATH (Windows) + if: contains(matrix.os, 'windows') + run: | + copy "C:\Users\runneradmin\AppData\Roaming\local\bin\fpm.exe" "C:\Program Files\Git\usr\bin" + + - name: put fpm to PATH (Linux) + if: contains(matrix.os, 'ubuntu') + run: | + sudo cp /home/runner/.local/bin/fpm /usr/local/bin + + - name: Run tests on Haskell fpm + run: | + cd bootstrap + stack test + + - name: Build and run Fortran fpm (Linux / macOS) + if: contains(matrix.os, 'ubuntu') || contains(matrix.os, 'macos') + run: | + ci/run_tests.sh + + - name: Build and run Fortran fpm (Windows) + if: contains(matrix.os, 'windows') + run: | + ci\run_tests.bat + + - name: Check that fpm --version matches release tag + if: contains(matrix.os, 'ubuntu') + run: fpm run -- "--version" | grep $(git ls-remote --tags ./ | cut -d/ -f3) + + - name: Stage file for upload (Linux / macOS) + if: contains(matrix.os, 'ubuntu') || contains(matrix.os, 'macos') + run: fpm run --runner cp -- fpm-${{ matrix.os }}-x86_64-debug + + - name: Stage file for upload (Windows) + if: contains(matrix.os, 'ubuntu') || contains(matrix.os, 'macos') + shell: cmd + run: fpm run --runner copy -- fpm-${{ matrix.os }}-x86_64-debug + + - name: Upload dev trunk binary release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: fpm-${{ matrix.os }}-x86_64-debug + asset_name: fpm-${{ matrix.os }}-x86_64-debug + tag: ${{ github.ref }} + overwrite: true + prerelease: true + + - name: Upload dev trunk binary release (bootstrap fpm) + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ${{ matrix.BOOTSTRAP_FILE }} + asset_name: fpm-bootstrap-${{ matrix.os }}-x86_64-debug + tag: ${{ github.ref }} + overwrite: true + prerelease: true
\ No newline at end of file |