Skip to content

Build Eclipse eMoflon #527

Build Eclipse eMoflon

Build Eclipse eMoflon #527

Workflow file for this run

name: Build Eclipse eMoflon
on:
push:
# Run pipeline for commits on branch 'main' and on 'testing/<stuff>'
branches:
- main
- 'testing/**'
- 'feature/**'
- 'hotfix/**'
# Run pipeline for release tags
tags:
- 'v*.*.*'
schedule:
# Weekly builds on Monday morning 4:42
# Github doc:
# "The schedule event can be delayed during periods of high loads of GitHub Actions workflow runs.
# High load times include the start of every hour.
# To decrease the chance of delay, schedule your workflow to run at a different time of the hour."
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
- cron: '42 4 * * 1'
env:
# Eclipse version to use in this CI
VERSION: "2024-12"
# emoflon-headless source URL (needed by macOS-based runner workaround)
EMOFLON_HEADLESS_SRC: "https://api.github.com/repos/eMoflon/emoflon-headless/releases/latest"
# import plugin URL
IMPORT_PLUGIN_SRC: "https://api.github.com/repos/maxkratz/eclipse-import-projects-plugin/releases/latest"
jobs:
# Get emoflon-headless updatesite release + eclipse import plugin artifacts
# This is necessary because some of the Github-hosted macOS-based runner
# did trigger the API rate limit from time to time.
collect-github-api-artifacts:
runs-on: [ubuntu-20.04]
steps:
- name: Find emoflon-headless updatesite
run: |
RESPONSE=$(curl -s $EMOFLON_HEADLESS_SRC)
echo "curl: $RESPONSE"
EMOFLON_HEADLESS_LATEST_UPDATESITE=$(echo "$RESPONSE" \
| grep "updatesite.*zip" \
| cut -d : -f 2,3 \
| tr -d \")
if [[ -z "${EMOFLON_HEADLESS_LATEST_UPDATESITE// }" ]]; then
log "This runner propably reached it's Github API rate limit. Exit."
exit 1
fi
wget -qi $EMOFLON_HEADLESS_LATEST_UPDATESITE
mv updatesite.zip emoflon-headless-updatesite.zip
- name: Find eclipse import plugin jar
run: |
RESPONSE=$(curl -s $IMPORT_PLUGIN_SRC)
echo "curl: $RESPONSE"
IMPORT_PLUGIN_LATEST_SRC=$(echo "$RESPONSE" \
| grep "/com.seeq.eclipse.importprojects*.*jar" \
| cut -d : -f 2,3 \
| tr -d \")
if [[ -z "${IMPORT_PLUGIN_LATEST_SRC// }" ]]; then
echo "This runner propably reached it's Github API rate limit. Exit."
exit 1
fi
echo "Found URL: $IMPORT_PLUGIN_LATEST_SRC"
wget "${IMPORT_PLUGIN_LATEST_SRC// }"
mv com.seeq.eclipse.importprojects*.jar com.seeq.eclipse.importprojects.jar
- name: Upload emoflon-headless updatesite artifact
uses: actions/upload-artifact@v4
with:
name: emoflon-headless-updatesite.zip
path: emoflon-headless-updatesite.zip
- name: Upload eclipse import plugin artifact
uses: actions/upload-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
path: com.seeq.eclipse.importprojects.jar
# Create splash image
create-splash-image:
runs-on: [ubuntu-20.04]
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Start message
run: echo "Creating splash image for version $VERSION."
- name: Run splash creator script
run: chmod +x splash.sh && ./splash.sh img $VERSION null
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: splash.bmp
path: splash.bmp
# Build Eclipse eMoflon Linux user
build-linux-user:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [ubuntu-20.04]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon Linux user)."
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
chmod +x build.sh && ./build.sh -m user -o linux
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-linux-user
path: eclipse-emoflon-linux-user.zip
# Build Eclipse eMoflon Linux dev
build-linux-dev:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [ubuntu-20.04]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon Linux dev)."
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: chmod +x build.sh && ./build.sh -m dev -o linux
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-linux-dev
path: eclipse-emoflon-linux-dev.zip
# Build Eclipse eMoflon Linux user CI
build-linux-user-ci:
needs: [collect-github-api-artifacts]
runs-on: [ubuntu-20.04]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon Linux user CI)."
- name: Check out repository code
uses: actions/checkout@v4
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: chmod +x build.sh && ./build.sh -m user -o linux --skip-theme
- name: Rename ZIP archive
run: mv eclipse-emoflon-linux-user.zip eclipse-emoflon-linux-user-ci.zip
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-linux-user-ci
path: eclipse-emoflon-linux-user-ci.zip
# Build Eclipse eMoflon Linux dev CI
build-linux-dev-ci:
needs: [collect-github-api-artifacts]
runs-on: [ubuntu-20.04]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon Linux dev CI)."
- name: Check out repository code
uses: actions/checkout@v4
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: chmod +x build.sh && ./build.sh -m dev -o linux --skip-theme
- name: Rename ZIP archive
run: mv eclipse-emoflon-linux-dev.zip eclipse-emoflon-linux-dev-ci.zip
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-linux-dev-ci
path: eclipse-emoflon-linux-dev-ci.zip
# Build Eclipse eMoflon Linux dev HiPE
build-linux-dev-hipe:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [ubuntu-20.04]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon Linux dev HiPE)."
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: chmod +x build.sh && ./build.sh -m hipedev -o linux
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-linux-dev-hipe
path: eclipse-emoflon-linux-dev-hipe.zip
# Build Eclipse eMoflon macOS user
build-macos-user:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [macos-14]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon macOS user)."
- name: Install dependencies
run: |
brew install p7zip coreutils grep wget curl gsed
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
chmod +x build.sh && ./build.sh -m user -o macos
- name: Fix permissions
run: sudo xattr -cr ./eclipse/Eclipse.app
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-macos-user
path: eclipse-emoflon-macos-user.zip
# Build Eclipse eMoflon macOS dev
build-macos-dev:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [macos-14]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon macOS dev)."
- name: Install dependencies
run: |
brew install p7zip coreutils grep wget curl gsed
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
chmod +x build.sh && ./build.sh -m dev -o macos
- name: Fix permissions
run: sudo xattr -cr ./eclipse/Eclipse.app
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-macos-dev
path: eclipse-emoflon-macos-dev.zip
# Build Eclipse eMoflon macOS dev HiPE
build-macos-dev-hipe:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [macos-14]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon macOS dev HiPE)."
- name: Install dependencies
run: |
brew install p7zip coreutils grep wget curl gsed
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
chmod +x build.sh && ./build.sh -m hipedev -o macos
- name: Fix permissions
run: sudo xattr -cr ./eclipse/Eclipse.app
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-macos-dev-hipe
path: eclipse-emoflon-macos-dev-hipe.zip
# Build Eclipse eMoflon macOS ARM user
build-macos-arm-user:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [macos-14]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon macOS user)."
- name: Install dependencies
run: |
brew install p7zip coreutils grep wget curl gsed
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
chmod +x build.sh && ./build.sh -m user -o macosarm
- name: Fix permissions
run: sudo xattr -cr ./eclipse/Eclipse.app
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-macos-arm-user
path: eclipse-emoflon-macos-arm-user.zip
# Build Eclipse eMoflon macOS ARM dev
build-macos-arm-dev:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [macos-14]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon macOS dev)."
- name: Install dependencies
run: |
brew install p7zip coreutils grep wget curl gsed
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
chmod +x build.sh && ./build.sh -m dev -o macosarm
- name: Fix permissions
run: sudo xattr -cr ./eclipse/Eclipse.app
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-macos-arm-dev
path: eclipse-emoflon-macos-arm-dev.zip
# Build Eclipse eMoflon macOS ARM dev HiPE
build-macos-arm-dev-hipe:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [macos-14]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon macOS dev HiPE)."
- name: Install dependencies
run: |
brew install p7zip coreutils grep wget curl gsed
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"
chmod +x build.sh && ./build.sh -m hipedev -o macosarm
- name: Fix permissions
run: sudo xattr -cr ./eclipse/Eclipse.app
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-macos-arm-dev-hipe
path: eclipse-emoflon-macos-arm-dev-hipe.zip
# Build Eclipse eMoflon Windows user
build-windows-user:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [windows-2022]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon Windows user)."
- name: Install dependencies
run: |
choco install wget curl unzip zip --no-progress
- name: Install correct Java version
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '16'
- name: Fix Git line endings
run: git config --global core.autocrlf input
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
bash ./build.sh -m user -o windows
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-windows-user
path: eclipse-emoflon-windows-user.zip
# Build Eclipse eMoflon Windows dev
build-windows-dev:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [windows-2022]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon Windows dev)."
- name: Install dependencies
run: |
choco install wget curl unzip zip --no-progress
- name: Install correct Java version
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '16'
- name: Fix Git line endings
run: git config --global core.autocrlf input
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
bash ./build.sh -m dev -o windows
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-windows-dev
path: eclipse-emoflon-windows-dev.zip
# Build Eclipse eMoflon Windows dev HiPE
build-windows-dev-hipe:
needs: [create-splash-image, collect-github-api-artifacts]
runs-on: [windows-2022]
steps:
- name: Start message
run: echo "Started CI build (Eclipse eMoflon Windows dev HiPE)."
- name: Install dependencies
run: |
choco install wget curl unzip zip --no-progress
- name: Install correct Java version
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '16'
- name: Fix Git line endings
run: git config --global core.autocrlf input
- name: Check out repository code
uses: actions/checkout@v4
- name: Download splash image
uses: actions/download-artifact@v4
with:
name: splash.bmp
- name: Download emoflon-headless updatesite
uses: actions/download-artifact@v4
with:
name: emoflon-headless-updatesite.zip
- name: Move emoflon-headless updatesite
run: |
mkdir -p ./tmp/emoflon-headless
mv emoflon-headless-updatesite.zip ./tmp/emoflon-headless/updatesite.zip
- name: Download Eclipse import plugin JAR
uses: actions/download-artifact@v4
with:
name: com.seeq.eclipse.importprojects.jar
- name: Run build script
run: |
bash ./build.sh -m hipedev -o windows
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: eclipse-emoflon-windows-dev-hipe
path: eclipse-emoflon-windows-dev-hipe.zip
# Create a release if running on tag
create-release:
needs: [build-linux-user, build-linux-dev, build-linux-user-ci, build-linux-dev-ci, build-linux-dev-hipe, build-macos-user, build-macos-dev, build-macos-dev-hipe, build-macos-arm-user, build-macos-arm-dev, build-macos-arm-dev-hipe, build-windows-user, build-windows-dev, build-windows-dev-hipe]
runs-on: [ubuntu-20.04]
# Only run on pushed tags (and explicitely ignore scheduled runs)
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') && github.event_name != 'schedule'
steps:
- name: Collect artifacts
uses: actions/download-artifact@master
- name: Release eclipse-emoflon-linux
uses: softprops/action-gh-release@v2
with:
files: |
eclipse-emoflon-linux-user/eclipse-emoflon-linux-user.zip
eclipse-emoflon-linux-dev/eclipse-emoflon-linux-dev.zip
- name: Release eclipse-emoflon-macos
uses: softprops/action-gh-release@v2
with:
files: |
eclipse-emoflon-macos-user/eclipse-emoflon-macos-user.zip
eclipse-emoflon-macos-dev/eclipse-emoflon-macos-dev.zip
- name: Release eclipse-emoflon-macos-arm
uses: softprops/action-gh-release@v2
with:
files: |
eclipse-emoflon-macos-arm-user/eclipse-emoflon-macos-arm-user.zip
eclipse-emoflon-macos-arm-dev/eclipse-emoflon-macos-arm-dev.zip
- name: Release eclipse-emoflon-linux-ci
uses: softprops/action-gh-release@v2
with:
files: |
eclipse-emoflon-linux-user-ci/eclipse-emoflon-linux-user-ci.zip
eclipse-emoflon-linux-dev-ci/eclipse-emoflon-linux-dev-ci.zip
- name: Release eclipse-emoflon-windows
uses: softprops/action-gh-release@v2
with:
files: |
eclipse-emoflon-windows-user/eclipse-emoflon-windows-user.zip
eclipse-emoflon-windows-dev/eclipse-emoflon-windows-dev.zip
- name: Release eclipse-emoflon-dev-hipe-1
uses: softprops/action-gh-release@v2
with:
files: |
eclipse-emoflon-linux-dev-hipe/eclipse-emoflon-linux-dev-hipe.zip
eclipse-emoflon-windows-dev-hipe/eclipse-emoflon-windows-dev-hipe.zip
- name: Release eclipse-emoflon-dev-hipe-2
uses: softprops/action-gh-release@v2
with:
files: |
eclipse-emoflon-macos-dev-hipe/eclipse-emoflon-macos-dev-hipe.zip
eclipse-emoflon-macos-arm-dev-hipe/eclipse-emoflon-macos-arm-dev-hipe.zip