diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 32f49c7..1f0360f 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,18 +1,28 @@ name: release on: push: - branches: - - refs/tags/* + tags: ["v*"] + jobs: - release: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: - - ubuntu-latest - - macOS-latest - env: - CONFIG: "--enable-tests --enable-benchmarks" + create-release: + runs-on: ubuntu-latest + steps: + - id: create-release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref }} + - run: | + echo "${{ steps.create-release.outputs.upload_url }}" > release_url.txt + - uses: actions/upload-artifact@v2.1.3 + with: + name: release_url + path: release_url.txt + + compile-linux-binary: + needs: create-release + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-haskell@v1.1 @@ -25,6 +35,57 @@ jobs: key: ${{ runner.os }}-${{ hashFiles('stack.yaml.lock') }} restore-keys: | ${{ runner.os }}- - - run: | - stack build --system-ghc --split-objs --flag gah:static --copy-bins - # TODO add github release setup + - name: Compile Linux Binary + # Use ghc-musl to build a static binary against musl instead of glibc + # NOTE: ghc883 needs to be changed to the GHC used in each Stack LTS + run: | + stack --docker --docker-image utdemir/ghc-musl:v13-libgmp-ghc883 build --split-objs --flag gah:static --copy-bins + - uses: actions/download-artifact@v2 + with: + name: release_url + - id: get_release_info + run: | + echo "::set-output name=upload_url::$(cat release_url/release_url.txt)" + - name: Upload Linux binary + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ./.stack-work/docker/_home/.local/bin/gah + asset_name: gah-linux-amd64 + asset_content_type: application/octet-stream + + compile-macOS-binary: + needs: create-release + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-haskell@v1.1 + with: + enable-stack: true + - uses: actions/cache@v2 + with: + path: | + ~/.stack + key: ${{ runner.os }}-${{ hashFiles('stack.yaml.lock') }} + restore-keys: | + ${{ runner.os }}- + - name: Compile macOS binary + run: | + stack --system-ghc build --copy-bins + - uses: actions/download-artifact@v2 + with: + name: release_url + - id: get_release_info + run: | + echo "::set-output name=upload_url::$(cat release_url/release_url.txt)" + - name: Upload Linux binary + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ steps.get_release_info.outputs.upload_url }} + asset_path: ~/.local/bin/gah + asset_name: gah-macOS-amd64 + asset_content_type: application/octet-stream diff --git a/package.yaml b/package.yaml index 01b90c8..9c09b68 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: gah -version: 0.1.0 +version: 0.2.0 synopsis: A simple Github Actions cli for the flumoxed developer. github: dogonthehorizon/gah license: MIT @@ -81,10 +81,12 @@ executables: - optparse-applicative when: - condition: flag(static) - ops: - ghc-options: + ghc-options: - -threaded - -static - -O2 - cc-options: -static + - -optl-static + - -optl-pthread + - -fPIC + cc-options: -static ld-options: -static -pthread