diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 10c13a6b7..2b40cb16b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,6 +5,9 @@ name: Build on: workflow_dispatch jobs: + # build-release-windows: # LF volunteer; RCs will still be built and signed by hand + # build-release-macos: # LF volunteer + build-ubuntu1804: runs-on: ubuntu-18.04 steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..83d7f78ca --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,84 @@ +# This workflow will create a release and store builds to it when an x.y.z tag is pushed + +name: Release + +on: + push: + tags: + - '*.*.*' + +jobs: + create-release: + runs-on: ubuntu-latest + steps: + - name: Set env + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV # tag x.y.z will become "Archipelago x.y.z" + - name: Create Release + uses: softprops/action-gh-release@b7e450da2a4b4cb4bfbae528f788167786cfcedf + with: + draft: true # don't publish right away, especially since windows build is added by hand + prerelease: false + name: Archipelago ${{ env.RELEASE_VERSION }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # build-release-windows: # this is done by hand because of signing + # build-release-macos: # LF volunteer + + build-release-ubuntu1804: + runs-on: ubuntu-latest + steps: + - name: Set env + run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV + # - code below copied from build.yml - + - uses: actions/checkout@v2 + - name: Install base dependencies + run: | + sudo apt update + sudo apt -y install build-essential p7zip xz-utils wget libglib2.0-0 + sudo apt -y install python3-gi libgirepository1.0-dev # should pull dependencies for gi installation below + - name: Get a recent python + uses: actions/setup-python@v3 + with: + python-version: '3.9' + - name: Install build-time dependencies + run: | + echo "PYTHON=python3.9" >> $GITHUB_ENV + wget -nv https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage + chmod a+rx appimagetool-x86_64.AppImage + ./appimagetool-x86_64.AppImage --appimage-extract + echo -e '#/bin/sh\n./squashfs-root/AppRun "$@"' > appimagetool + chmod a+rx appimagetool + - name: Download run-time dependencies + run: | + wget -nv https://github.com/black-sliver/sni/releases/download/v0.0.78-2/sni-v0.0.78-2-manylinux2014-amd64.tar.xz + tar xf sni-*.tar.xz + rm sni-*.tar.xz + mv sni-* SNI + wget -nv https://github.com/Ijwu/Enemizer/releases/download/6.4/ubuntu.16.04-x64.7z + 7za x -oEnemizerCLI/ ubuntu.16.04-x64.7z + - name: Build + run: | + "${{ env.PYTHON }}" -m pip install --upgrade pip setuptools virtualenv PyGObject # pygobject should probably move to requirements + "${{ env.PYTHON }}" -m venv venv + source venv/bin/activate + pip install -r requirements.txt + python setup.py build --yes bdist_appimage --yes + echo -e "setup.py build output:\n `ls build`" + echo -e "setup.py dist output:\n `ls dist`" + cd dist && export APPIMAGE_NAME="`ls *.AppImage`" && cd .. + export TAR_NAME="${APPIMAGE_NAME%.AppImage}.tar.gz" + (cd build && DIR_NAME="`ls | grep exe`" && mv "$DIR_NAME" Archipelago && tar -czvf ../dist/$TAR_NAME Archipelago && mv Archipelago "$DIR_NAME") + echo "APPIMAGE_NAME=$APPIMAGE_NAME" >> $GITHUB_ENV + echo "TAR_NAME=$TAR_NAME" >> $GITHUB_ENV + # - code above copied from build.yml - + - name: Add to Release + uses: softprops/action-gh-release@b7e450da2a4b4cb4bfbae528f788167786cfcedf + with: + draft: true # see above + prerelease: false + name: Archipelago ${{ env.RELEASE_VERSION }} + files: | + dist/* + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}