CI #122
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 4 1 * *' | |
jobs: | |
build: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
# don't run pull requests from local branches twice | |
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: macOS | |
os: macos-latest | |
android-dir: Library/Android | |
- name: Linux | |
os: ubuntu-latest | |
android-dir: Android | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install packages | |
run: | | |
if [ "$RUNNER_OS" = "macOS" ]; then | |
brew install cmake autoconf automake libtool pkg-config | |
elif [ "$RUNNER_OS" = "Linux" ]; then | |
sudo apt-get install curl cmake make libtool pkg-config texinfo python3-distutils | |
# install autoconf 2.71 from source (required by libffi, not available via apt-get on Ubuntu focal) | |
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.xz | |
tar -xf autoconf-2.71.tar.xz | |
cd autoconf-2.71 && ./configure --prefix=/usr/ && make && sudo make install | |
autoconf --version | |
wget http://ftp.gnu.org/gnu/automake/automake-1.16.4.tar.xz | |
tar -xf automake-1.16.4.tar.xz | |
cd automake-1.16.4 && ./configure --prefix=/usr/ && make && sudo make install | |
automake --version | |
else | |
echo Unsupported OS $RUNNER_OS | |
exit 1 | |
fi | |
- name: Build toolchain | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
./build.sh --ndk $ANDROID_NDK_LATEST_HOME --dist-root HOME/${{matrix.android-dir}}/GNUstep | |
- name: Package build | |
run: | | |
tar -a -cf GNUstep-Android-${{matrix.name}}.tar.xz -C$HOME/${{matrix.android-dir}} GNUstep | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
path: GNUstep-Android-${{matrix.name}}.tar.xz | |
name: GNUstep-Android-${{matrix.name}} | |
prerelease: | |
needs: build | |
runs-on: ubuntu-latest | |
if: ${{ github.ref == 'refs/heads/master' }} | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
- name: Update GitHub prerelease | |
if: ${{ github.ref == 'refs/heads/master' }} | |
uses: marvinpinto/action-automatic-releases@latest | |
with: | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
automatic_release_tag: latest | |
prerelease: true | |
title: "Latest Build" | |
files: "**/GNUstep-Android-*.tar.xz" |