name: Package bygfoot on: push: tags: - '*' branches: - unofficial-trunk pull_request: env: UBUNTU_BUILD_DEPENDENCIES: libglib2.0-dev libgtk2.0-dev libpango1.0-dev libatk1.0-dev libfreetype6-dev ninja-build cmake libjson-c-dev unzip LINUX_BUILD_DEPENDENCIES: libglib2.0-dev libgtk2.0-dev libpango1.0-dev libatk1.0-dev libfreetype6-dev ninja-build cmake jobs: set-variables: runs-on: - ubuntu-latest outputs: is-tag: ${{ steps.vars.outputs.is-tag }} bygfoot-version: ${{ steps.vars.outputs.bygfoot-version }} steps: - id: vars run: | if echo ${{ github.ref }} | grep '^refs/tags'; then is_tag=1 bygfoot_version=`echo ${{ github.ref }} | cut -d / -f 3` else is_tag=0 bygfoot_version=${{ github.head_ref }}-${{ github.sha }} fi tarname=bygfoot-$bygfoot_version-${{ matrix.name }} echo "::set-output name=is-tag::$is_tag" echo "::set-output name=bygfoot-version::$bygfoot_version" package-linux: needs: - set-variables runs-on: - ubuntu-latest container: image: ${{ matrix.container-image }} env: BYGFOOT_VERSION: ${{ needs.set-variables.outputs.bygfoot-version }} strategy: fail-fast: false matrix: include: - name: ubuntu-18.04 container-image: docker.io/ubuntu:18.04 dependencies: "$UBUNTU_BUILD_DEPENDENCIES" test: true - name: ubuntu-20.04 container-image: docker.io/ubuntu:20.04 dependencies: "$UBUNTU_BUILD_DEPENDENCIES" test: true - name: ubuntu-20.10 container-image: docker.io/ubuntu:20.10 dependencies: "$UBUNTU_BUILD_DEPENDENCIES" test: true - name: ubuntu-21.04 container-image: docker.io/ubuntu:21.04 dependencies: "$UBUNTU_BUILD_DEPENDENCIES" test: true - name: linux container-image: docker.io/ubuntu:18.04 dependencies: "$LINUX_BUILD_DEPENDENCIES" test: false steps: - name: Checkout sources uses: actions/checkout@v2 - name: Install dependencies env: DEBIAN_FRONTEND: noninteractive run: | apt-get update apt-get -y install ${{ matrix.dependencies }} - name: Package Bygfoot id: package run: | tarname=bygfoot-${{ env.BYGFOOT_VERSION }}-${{ matrix.name }} echo "::set-output name=tardir::$tarname" echo "::set-output name=tarfile::$tarname.tar.bz2" ./scripts/package.sh . $tarname - name: Upload artifact uses: actions/upload-artifact@v2 with: name: "bygfoot-${{ env.BYGFOOT_VERSION }}-${{ matrix.name }}" path: "${{ steps.package.outputs.tarfile }}" - uses: actions/download-artifact@v2 if: ${{ github.event_name == 'pull_request' && matrix.test }} with: path: tests-${{ matrix.name }} name: "bygfoot-${{ env.BYGFOOT_VERSION }}-${{ matrix.name }}" - name: Run Tests if: ${{ github.event_name == 'pull_request' && matrix.test }} working-directory: tests-${{ matrix.name }} run: | tar -xjf ${{ steps.package.outputs.tarfile }} bash ../test/test-load-save.sh ${{ steps.package.outputs.tardir }}/bygfoot bash ../test/test-country-defs.sh ${{ steps.package.outputs.tardir }}/bygfoot package-windows: needs: - set-variables runs-on: - windows-2016 env: BYGFOOT_VERSION: ${{ needs.set-variables.outputs.bygfoot-version }} steps: - name: Checkout sources uses: actions/checkout@v2 - name: Install ninja run: pip install ninja - name: Download dependencies run: | curl -O -L https://download.gnome.org/binaries/win64/gtk+/2.22/gtk+-bundle_2.22.1-20101229_win64.zip unzip gtk+-bundle_2.22.1-20101229_win64.zip shell: bash - name: Copy dependencies intall package directory shell: bash run: | mkdir -p bygfoot-$BYGFOOT_VERSION cp bin/*.dll bygfoot-$BYGFOOT_VERSION cp ./share/doc/gtk+-2.22.1/COPYING bygfoot-$BYGFOOT_VERSION/COPYING.gtk+ cp ./share/doc/glib-2.26.1/COPYING bygfoot-$BYGFOOT_VERSION/COPYING.glib - name: Package Bygfoot env: CC: gcc CXX: g++ PkgConfig_DIR: ./ run: | export PKG_CONFIG=`pwd`/bin/pkg-config.exe # Add gtk+ directory to PATH so that cmake can find the correct zlib # library. export PATH=`pwd`/bin:$PATH ./scripts/package.sh . bygfoot-${{ env.BYGFOOT_VERSION }}-win64 shell: bash - name: Upload artifact uses: actions/upload-artifact@v2 with: name: "bygfoot-${{ env.BYGFOOT_VERSION }}-win64" path: "*.bz2" create_release: if: ${{ startswith(github.ref, 'refs/tags') }} needs: - package-linux - package-windows runs-on: ubuntu-latest steps: - name: Download artifacts uses: actions/download-artifact@v2 with: path: 'artifacts' - name: Install Dependencies run: pip install PyGithub - name: Create Release shell: python run: | import github import os prerelease = False tag = '${{ github.ref }}'.split('/')[-1] if 'alpha' in tag or 'beta' in tag or 'rc' in tag: prerelease = True context = github.Github('${{ github.token }}') repo = context.get_repo('${{ github.repository }}') release = repo.create_git_release(tag = tag, name = tag, message = tag, prerelease = prerelease) for dir in os.listdir('artifacts'): print(dir) for f in os.listdir('artifacts' + '/' + dir): print(f) release.upload_asset('artifacts' + '/' + dir + '/' + f)