| name: Build Release |
| |
| # Trigger whenever a release is created |
| on: |
| release: |
| types: |
| - created |
| |
| jobs: |
| build: |
| name: build |
| runs-on: ${{ matrix.os }} |
| strategy: |
| matrix: |
| os: [macos-latest, windows-latest] |
| defaults: |
| run: |
| shell: bash |
| steps: |
| - uses: actions/setup-python@v1 |
| with: |
| python-version: '3.x' |
| - uses: actions/checkout@v1 |
| with: |
| submodules: true |
| |
| - name: install ninja (macos) |
| run: brew install ninja |
| if: matrix.os == 'macos-latest' |
| |
| - name: install ninja (win) |
| run: choco install ninja |
| if: matrix.os == 'windows-latest' |
| |
| - name: mkdir |
| run: mkdir -p out |
| |
| - name: cmake (macos) |
| run: cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out/install |
| if: matrix.os == 'macos-latest' |
| |
| - name: cmake (win) |
| # -G "Visual Studio 15 2017" |
| run: cmake -S . -B out -DCMAKE_INSTALL_PREFIX=out/install |
| if: matrix.os == 'windows-latest' |
| |
| - name: build |
| run: cmake --build out --config Release --target install |
| |
| - name: strip |
| run: find out/install/ -type f -perm -u=x -exec strip -x {} + |
| if: matrix.os != 'windows-latest' |
| |
| - name: archive |
| id: archive |
| run: | |
| OSNAME=$(echo ${{ matrix.os }} | sed 's/-latest//') |
| VERSION=${{ github.event.release.tag_name }} |
| PKGNAME="binaryen-$VERSION-x86_64-$OSNAME" |
| TARBALL=$PKGNAME.tar.gz |
| SHASUM=$PKGNAME.tar.gz.sha256 |
| mv out/install binaryen-$VERSION |
| tar -czf $TARBALL binaryen-$VERSION |
| echo "::set-output name=tarball::$TARBALL" |
| echo "::set-output name=shasum::$SHASUM" |
| |
| - name: upload tarball |
| uses: actions/upload-release-asset@v1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ github.event.release.upload_url }} |
| asset_path: ./${{ steps.archive.outputs.tarball }} |
| asset_name: ${{ steps.archive.outputs.tarball }} |
| asset_content_type: application/gzip |
| |
| # We do the shasum as a seprate step because this tool doesn't |
| # exist on windows. |
| - name: shasum |
| id: shasum |
| run: shasum -a 256 ${{ steps.archive.outputs.tarball }} > ${{ steps.archive.outputs.shasum }} |
| if: matrix.os != 'windows-latest' |
| |
| - name: upload shasum |
| uses: actions/upload-release-asset@v1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ github.event.release.upload_url }} |
| asset_path: ./${{ steps.archive.outputs.shasum }} |
| asset_name: ${{ steps.archive.outputs.shasum }} |
| asset_content_type: text/plain |
| if: matrix.os != 'windows-latest' |
| |
| # Build with gcc 6.3 and run tests on Alpine Linux (inside chroot). |
| # Note: Alpine uses musl libc. |
| build-alpine: |
| name: alpine |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/setup-python@v1 |
| with: |
| python-version: '3.x' |
| - uses: actions/checkout@v1 |
| - name: start docker |
| run: | |
| docker run -w /src -dit --name alpine -v $PWD:/src node:lts-alpine |
| echo 'docker exec alpine "$@";' > ./alpine.sh |
| chmod +x ./alpine.sh |
| |
| - name: install packages |
| run: | |
| ./alpine.sh apk update |
| ./alpine.sh apk add build-base cmake git python3 clang ninja |
| |
| - name: install python dev dependencies |
| run: ./alpine.sh pip3 install -r requirements-dev.txt |
| |
| - name: cmake |
| run: | |
| ./alpine.sh cmake . -G Ninja -DCMAKE_CXX_FLAGS="-static" -DCMAKE_C_FLAGS="-static" -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC_LIB=ON -DCMAKE_INSTALL_PREFIX=install |
| |
| - name: build |
| run: | |
| ./alpine.sh ninja install |
| |
| - name: test |
| run: ./alpine.sh python3 ./check.py |
| |
| - name: archive |
| id: archive |
| run: | |
| VERSION=${{ github.event.release.tag_name }} |
| PKGNAME="binaryen-$VERSION-x86_64-linux" |
| TARBALL=$PKGNAME.tar.gz |
| SHASUM=$PKGNAME.tar.gz.sha256 |
| ./alpine.sh find install/ -type f -perm -u=x -exec strip {} + |
| mv install binaryen-$VERSION |
| tar -czf $TARBALL binaryen-$VERSION |
| shasum -a 256 $TARBALL > $SHASUM |
| echo "::set-output name=tarball::$TARBALL" |
| echo "::set-output name=shasum::$SHASUM" |
| |
| - name: upload tarball |
| uses: actions/upload-release-asset@v1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ github.event.release.upload_url }} |
| asset_path: ./${{ steps.archive.outputs.tarball }} |
| asset_name: ${{ steps.archive.outputs.tarball }} |
| asset_content_type: application/gzip |
| |
| - name: upload shasum |
| uses: actions/upload-release-asset@v1 |
| env: |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| with: |
| upload_url: ${{ github.event.release.upload_url }} |
| asset_path: ./${{ steps.archive.outputs.shasum }} |
| asset_name: ${{ steps.archive.outputs.shasum }} |
| asset_content_type: text/plain |