aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorLKedward <laurence.kedward@bristol.ac.uk>2020-11-18 14:51:24 +0000
committerLKedward <laurence.kedward@bristol.ac.uk>2020-11-18 14:51:24 +0000
commitb6e9aef0b482a0e0a2cb557a9415cd7d0e119d1e (patch)
treeb1d85148c86783c94e75299de68bd4767f46c3d3 /.github
parentc68cf2fbdb40c33636bd50b6a729490ae9d61654 (diff)
downloadfpm-b6e9aef0b482a0e0a2cb557a9415cd7d0e119d1e.tar.gz
fpm-b6e9aef0b482a0e0a2cb557a9415cd7d0e119d1e.zip
Add: CI to upload binaries on release
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/release_binaries.yml133
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