Workflow file for this run
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: Build and Publish Geoweaver App | |
on: | |
release: | |
types: | |
- published | |
tags: | |
- '*' | |
workflow_dispatch: | |
jobs: | |
build-jar: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v2 | |
with: | |
java-version: '11' | |
distribution: 'adopt' | |
- name: Build with Maven | |
run: mvn clean install -DskipTests | |
- name: Install XML parsing tools | |
run: sudo apt-get update && sudo apt-get install -y libxml2-utils | |
- name: Extract version from pom.xml | |
run: | | |
VERSION=$(xmllint --xpath "/*[local-name()='project']/*[local-name()='version']/text()" $GITHUB_WORKSPACE/pom.xml) | |
echo "VERSION=$VERSION" >> $GITHUB_ENV | |
- name: Append version to DEBIAN/control | |
run: | | |
echo "Version: ${{ env.VERSION }}" >> $GITHUB_WORKSPACE/linux-deployment/DEBIAN/control | |
- name: Set execute permissions for postinst script | |
run: chmod 755 $GITHUB_WORKSPACE/linux-deployment/DEBIAN/postinst | |
- name: Copy geoweaver.jar to linux-deployment directory | |
run: cp $GITHUB_WORKSPACE/target/geoweaver.jar $GITHUB_WORKSPACE/linux-deployment/usr/local/bin/ | |
- name: Make geoweaver.sh executable | |
run: chmod +x $GITHUB_WORKSPACE/linux-deployment/usr/local/bin/geoweaver.sh | |
- name: Build deb package | |
run: | | |
cd $GITHUB_WORKSPACE/linux-deployment | |
dpkg-deb --build . geoweaver.deb | |
- name: Upload Geoweaver Artifacts | |
uses: actions/upload-artifact@v2 | |
with: | |
name: geoweaver-artifacts | |
path: | | |
target/*.jar | |
pom.xml | |
linux-deployment/*.deb | |
build-windows: | |
needs: build-jar | |
runs-on: windows-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Download Geoweaver Artifacts | |
uses: actions/download-artifact@v2 | |
with: | |
name: geoweaver-artifacts | |
path: artifact | |
- name: Prepare Deployment Directory | |
run: | | |
cp artifact/target/geoweaver.jar windows-deployment/geoweaver.jar | |
- name: Install NSIS | |
run: choco install nsis | |
- name: Install PyInstaller | |
run: pip install pyinstaller | |
- name: Build Executable with PyInstaller | |
run: pyinstaller windows-deployment/pyinstaller.spec | |
- name: Build NSIS Installer | |
run: '& "C:\Program Files (x86)\NSIS\makensis.exe" windows-deployment/installer.nsi' | |
- name: Upload Windows Installer to Release | |
uses: actions/upload-artifact@v2 | |
with: | |
name: geoweaver-windows-installer | |
path: D:\a\Geoweaver\Geoweaver\windows-deployment\GeoweaverInstaller.exe | |
build-macos: | |
needs: build-jar | |
runs-on: macos-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v2 | |
- name: Download Geoweaver Artifacts | |
uses: actions/download-artifact@v2 | |
with: | |
name: geoweaver-artifacts | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v2 | |
with: | |
java-version: '11' | |
distribution: 'adopt' | |
- name: Build .app file | |
run: | | |
chmod +x ${GITHUB_WORKSPACE}/macos-deployment/make-app.sh | |
${GITHUB_WORKSPACE}/macos-deployment/make-app.sh | |
- name: Create .dmg file with Applications shortcut | |
run: | | |
APP_NAME="Geoweaver" | |
DMG_TEMP_DIR="${GITHUB_WORKSPACE}/dmg_temp" | |
mkdir -p "${DMG_TEMP_DIR}" | |
cp -r "${GITHUB_WORKSPACE}/geoweaver.app" "${DMG_TEMP_DIR}" | |
ln -s /Applications "${DMG_TEMP_DIR}/Applications" | |
hdiutil create -volname "$APP_NAME" -srcfolder "${DMG_TEMP_DIR}" -ov -format UDZO "${GITHUB_WORKSPACE}/${APP_NAME}.dmg" | |
- name: Upload .dmg file as an artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: geoweaver-dmg | |
path: /Users/runner/work/Geoweaver/Geoweaver/Geoweaver.dmg | |
release: | |
needs: [build-jar, build-macos, build-windows] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install XML parsing tools | |
run: sudo apt install libxml2-utils | |
- name: Install jq | |
run: sudo apt-get install jq | |
- name: Download Geoweaver Artifacts | |
uses: actions/download-artifact@v2 | |
with: | |
name: geoweaver-artifacts | |
- name: Download .dmg file | |
uses: actions/download-artifact@v2 | |
with: | |
name: geoweaver-dmg | |
- name: Download Windows Installer Artifact | |
uses: actions/download-artifact@v2 | |
with: | |
name: geoweaver-windows-installer | |
- name: Get ID and upload URL of the latest release | |
run: | | |
RESPONSE=$(curl -s -H "Authorization: token ${{ secrets.PAT }}" "https://api.github.com/repos/${{ github.repository }}/releases/latest") | |
UPLOAD_URL=$(echo "$RESPONSE" | jq -r .upload_url) | |
RELEASE_ID=$(echo "$RESPONSE" | jq -r .id) | |
echo "UPLOAD_URL=$UPLOAD_URL" >> $GITHUB_ENV | |
echo "RELEASE_ID=$RELEASE_ID" >> $GITHUB_ENV | |
- name: Set release title to version | |
run: | | |
curl -X PATCH \ | |
-H "Authorization: token ${{ secrets.PAT }}" \ | |
-H "Accept: application/vnd.github.v3+json" \ | |
https://api.github.com/repos/${{ github.repository }}/releases/${{ env.RELEASE_ID }} \ | |
-d '{"name": "${{ env.VERSION }}"}' | |
- name: Upload JAR Asset | |
uses: actions/upload-release-asset@v1 | |
with: | |
upload_url: ${{ env.UPLOAD_URL }} | |
asset_path: /home/runner/work/Geoweaver/Geoweaver/target/geoweaver.jar | |
asset_name: geoweaver.jar | |
asset_content_type: application/java-archive | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
- name: Upload DEB Asset | |
uses: actions/upload-release-asset@v1 | |
with: | |
upload_url: ${{ env.UPLOAD_URL }} | |
asset_path: /home/runner/work/Geoweaver/Geoweaver/linux-deployment/geoweaver.deb | |
asset_name: geoweaver.deb | |
asset_content_type: application/vnd.debian.binary-package | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} | |
- name: Upload .dmg file to Release | |
uses: actions/upload-release-asset@v1 | |
with: | |
upload_url: ${{ env.UPLOAD_URL }} | |
asset_path: Geoweaver.dmg | |
asset_name: Geoweaver.dmg | |
asset_content_type: application/x-diskcopy | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Upload Windows Installer to Release | |
uses: actions/upload-release-asset@v1 | |
with: | |
upload_url: ${{ env.UPLOAD_URL }} | |
asset_path: GeoweaverInstaller.exe | |
asset_name: GeoweaverInstaller.exe | |
asset_content_type: application/vnd.microsoft.portable-executable | |
env: | |
GITHUB_TOKEN: ${{ secrets.PAT }} |