Comments (29)
Maybe look into this as well: https://github.com/crotwell/gradle-macappbundle
from triplea.
An option, but that would mean Windows/Linux would need to be separately
maintained.
Bernát GÁBOR
On Sun, Aug 2, 2015 at 6:08 PM, Ron [email protected] wrote:
Maybe look into this as well:
https://github.com/crotwell/gradle-macappbundle—
Reply to this email directly or view it on GitHub
#31 (comment)
.
from triplea.
True. It would be best if we can find something that generates all the OS releases so we can avoid maintaining multiple builds. I'm just not that familiar with it as most of my development is web development.
from triplea.
Neither am I,, hence the projects I've enumerated upper.
from triplea.
going with install builder for now.
from triplea.
I'd like to offer help on this effort. Let me know what I can do. I recently spent a year+ using a mac for development and also have access to one on weekends. My fingers are crossed install builder will auto-solve much of this problem for us.
from triplea.
will let you know, for now I'll try to create the installer it has a quite lengthy documentation, should have a initial version to test by end of week, can start out from there
from triplea.
Creating a mac DMG is difficult. Looks like one of the following are required: hdiutil or mkfs.hfsplus + dd (and sudo). hdiutil is a mac only tool. Travis for the moment only allows linux OS builds. Travis does not allow sudo, and the mkdfs.hfsplus looks to eventually require a mount command (which needs sudo). I checked out izpack: it looks like the DMG feature there relies on a person having hdiutil.
For mac releases, either install build is a silver bullet and can be used from Travis, alternatively we drop the DMG format, or last alternative we keep relying on having a Mac around to build the DMG package.
On other fronts, I've got Travis using gradle to build and push the windows installer and all platforms zip releases into github (https://github.com/DanVanAtta/triplea/releases). To get this working some authorization token work was needed, but was not too terrible to set up. Screenshot below of the releases screen:
from triplea.
Making the packages, installers should be easier with the migration to the Installbuilder, see http://installbuilder.bitrock.com/docs/installbuilder-userguide.html. Already in progress this work at https://github.com/gaborbernat/triplea/commits/installer. With this needing multiple platforms for making build/installer should not be required anymore.
from triplea.
Bad news, we'll still need a mac even with install builder:
"If you are building a Mac OS X installer, its name will be sample-1.0-osx-installer.app. The Mac OS X > installer binary will need to be packaged inside an archive file or disk image."
(from: "http://installbuilder.bitrock.com/docs/installbuilder-userguide.html#_packaging_the_installer")
Install builder still has value, but creating a mac DMG is nothing but headaches. Until travis allows open source to user their OS-X VMs, we cannot do it. The DMGs are a pain for testing since we need all of a sudden a Mac OS (and isn't part of the point of java is that you don't need to do any most of this open source specific stuff).
I recently came off using mac at work for about 18 months, I very much miss my old beat up mac laptop right now. But with that experience, the options are:
- rpm
- tar.gz
- dmg
- pkg
- zip
The dmg and pkg require a mac, the others are more advanced, leaving the plain old "zip". The zip takes maybe 30 seconds more work than a DMG. With a simple readme, nobody should be too stumped by the process.
So, I really wonder why we are taking so much cost and pain to support such a small convenience. I suggest we build a windows installer, and an all_platforms.zip only (with perhaps some variations, for all maps or minimal, and with JRE or without).
So rather than having to build to build 12 artifacts, we would be down to 6. Today we are not building the minimal map versions, and still have 5 or 6 artifacts (AFAIK we are skipping the Mac DMG plus bundled java artifact)
from triplea.
Good news, (except for testing) the only OS you do not need today is windows. We can make the windows installer on linux (and thus mac too).
If we get rid of the DMG files, we will have a unified build pipeline where each OS could build in the same way, and each would build the same as Travis.
from triplea.
@gaborbernat The license file will need encryption. Travis has instructions on how to do that: http://docs.travis-ci.com/user/encrypting-files/
from triplea.
@gaborbernat , also please check out: https://github.com/DanVanAtta/triplea/tree/travis_artifact_build
In particular the travis.yaml file, the build scripts inside of .travis, and also the updates to gradlew to build the zip archive. It's quite clean enough for a pull request, but it functions to get artifacts pushed into github releases when you build a tag (tags are built on their own in Travis I learned recently).
One goal I've had with mucking with the build process is to create a folder called "artifacts." I place in this folder everything that needs to be updoaded, so in the before_deploy of travis, you can do a "ls artifacts" and know what should be listed for upload.
Which gets to another point, our artifacts have version names in them. I think what we will need to do is set a "GAME_VERSION" environment variable early in gradle, and try to use that everywhere else. So far I've found that $TRAVIS_TAG is available during the build and our tags match our version numbers exactly so far, which helps avoid putting the version number in a bunch of different places.
from triplea.
@DanVanAtta
From what I see here, http://installbuilder.bitrock.com/docs/installbuilder-userguide.html#_os_x_2, it's possible to create the dmg file :-?
from triplea.
Fantastic news then.
Sounds like we set: <createOsxBundleDmg>1</createOsxBundleDmg>
, and we get a DMG file from any OS.
from triplea.
yup, tried it out :)
On 8/20/15, Dan Van Atta [email protected] wrote:
Fantastic news then.
Sounds like we set:<createOsxBundleDmg>1</createOsxBundleDmg>
, and we
get a DMG file from any OS.
Reply to this email directly or view it on GitHub:
#31 (comment)
Bernát Gábor
Student - Budapest University of Technology and Economics - Computer
Engineering, M.Sc. - Budapest, Hungary
System Integrator - Gravity R&D | Rock Solid Recommendations - Budapest
office | 5-7 Expo ter | H-1101 | Budapest | Hungary
from triplea.
We need a mac to test it on, to make sure the dmg that is created does work.
But great news if it does!
from triplea.
My mac virtual image was accidentally removed, however will definitely
restore to try it out. The windows and Linux installs work fine for now,
those I've tried, built on Linux. Adding the other release types in the
meantime, as part of the Gradle.
Which IRC do we use?
On Aug 20, 2015 6:48 PM, "Chris Duncan" [email protected] wrote:
We need a mac to test it on, to make sure the dmg that is created does
work.
But great news if it does!—
Reply to this email directly or view it on GitHub
#31 (comment)
.
from triplea.
So, also tried it on a Mac, and it seems to work (the installer packed as a dmg)
Now just need to make sure every file is installed as it should be, adding an optional Java component is also another hurdle to tackle (http://installbuilder.bitrock.com/java/). But at the moment all what we aim for seems doable.
from triplea.
What do you guys think about starting to provide Java 8 as the bundled Java version? given that Java 7 is at its end of life.
from triplea.
Yes that is fine. I normally upgrade the bundled java during an unstable release, to whatever is the most recent.
from triplea.
FYI, I'm glad to see movement on bundling Java 8, or at least making the .app bundle more compatible with it. The current mac dmg release from sourceforge gives the problematic 'To open "TripleA" you need to install the legacy Jave SE 6 runtime.' error even though I have Java 8 installed. Running the .jar manually from the all platforms release works fine.
from triplea.
Yup, 👍 in the meantime I'm also evaluating install4j, http://www.ej-technologies.com/download/install4j/files, another propriety install builder, however also offer open source licenses. It seem to have a better integration with Java, and some part of it seem to be more straight forward.
from triplea.
I've been playing around some more, and decided to go for install4j. It has a better bundling and MAC support, plus it's easier to maintain and run. Written to them requesting a license and got it too. Tried out the new installer, started a game, made some moves, on MAC, Linux, Windows. In all those places worked flawlessly, just have one more glitch, on Windows the icon seems invalid. Added Gradle integration.
Now it's possible to generate all releases (3 installers - windows and Mac have JRE bundled, Linux uses the system Java - and zips) in like under 6 minutes from scratch. With the new install system, the initial Gradle patch works flawlessly, no issues, fyi. Will probably polish it just a little more and make the pull request next week sometime. We are not that far away 👍
from triplea.
@gaborbernat How's the install4j stuff going? A move is very disruptive, but it did seem like you were very close.
from triplea.
Hello,
Yes we're quite close. Managed to settle in at the new place. This Sunday
I'll have time to work with this. Sorry for the delays but bear with me a
little more.
Bernát GÁBOR
On Tue, Sep 22, 2015 at 3:58 AM, Dan Van Atta [email protected]
wrote:
@gaborbernat https://github.com/gaborbernat How's the install4j stuff
going? A move is very disruptive, but it did seem like you were very close.—
Reply to this email directly or view it on GitHub
#31 (comment)
.
from triplea.
Some good news and progress made on the other fronts for an automated build and release. The .travis.yml updates needed to automatically push artifacts is well known, #214 has an example and some next steps for setting up a shadow jar deployment. After that we'll need to add a second script command to execute the install4j stuff (and/or install any install4j binaries, .travis.yml supports installation of many apt pacakges). Then last .travis.yml update will be to specify the name of the artifact files to upload.
So modifying the examle in #214, the final .travis.yml should look something like this:
language: java
jdk:
- oraclejdk8
addons:
apt:
packages:
- install4j (?)
install: true
script:
- ./gradlew shadowJar
- install4j <args>
before_deploy:
- git config --global user.email "[email protected]"
- git config --global user.name "tripleabuilderbot"
- export MAP_TAGGED_VERSION="$MAP_VERSION.$TRAVIS_BUILD_NUMBER"
- git tag $MAP_TAGGED_VERSION -a -m "$MAP_TAGGED_VERSION"
- git push -q https://[email protected]/triplea-maps/$REPO_NAME --tags
deploy:
provider: releases
api_key:
secure: sTJxC1pAb5Q+hMTQAAr7BmdDHuUryGil+qgEr6rZkxmOPGqMQzsSemcwmzflR6+IWw6HQvcwJBUwXsItlhuHIGheolW9gKZY4mSc9LqH0z7xF/+YwG74h/2fv7EttQ19f5TLwF25AzgoSexbbuZcWPk4w/Qaewdg4s5qPkHpw8DXmIzjrIcZg+zIUoCJRDDidJ02AlXm4bgDI8upiD34ckjJMIO4z5tkiASvuADpxyqlBmcLinlNnq2gAOQt7gBbBOakz91bUSFxS0V+NtekZauRLel356EibCqe2VHb+PsZ1cblAJ5XhqSpz4NN8ZupRS/kxM0s3ZNP0imX4630cqqZnX20/ZoeADtiRwsau6FZj60uF3WQlqUM5ZzggRTW9oGjwCreaIjyvYbzBsEOrZKiT8vYPrUTufAHEH1LOJlFvKlwBy3Gm/Rk4CSllZ2dj88MNT3GtzdNmNK6IEqBjyZKtrmy9fUxaCihVDrNI2xpAXFDlZMpXrktbEIIL8oYgjl6wj+tWJHKMvhQxKnVRMZoJ9BOrh6rx4b+GYehXWS9/j+ZZl9gt6enE30rTn4K4UmtQ+8Jw1fb3Dx4cyLxw4ummS9nowAZGUx0J/8qasnyy50BxpdqLse9afZHivjqVnTk4kdqeDw2ClKZ9CO6hpf+AkIOefR0H5zxAzgsWX4=
file: "$REPO_NAME.zip"
skip_cleanup: true
prerelease: true
on:
tags: false
all_branches: true
from triplea.
@gaborbernat , shall we close this issue in favor of the PR that is open?
from triplea.
Yes.
Bernát GÁBOR
On Wed, Oct 28, 2015 at 11:34 PM, Dan Van Atta [email protected]
wrote:
@gaborbernat https://github.com/gaborbernat , shall we close this issue
in favor of the PR that is open?—
Reply to this email directly or view it on GitHub
#31 (comment)
.
from triplea.
Related Issues (20)
- 2.6 Combat Move units with a double click - units are truncated & ...
- 2.5.22294: GameData#readObject:107 - java.io.InvalidClassException
- 2.5.22294: ObjectivePanel - objective.properties keys must be 2 parts: <game_name>.TABLEGROUP.<#>;player OR <game_name>.player;atta...
- 2.5.22294: MoveDescription#<init>:29 - java.lang.IllegalArgumentException
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): gas, UnitImageFactory.ImageKey(player=PlayerId named:Neutral, type=...
- 2.5.22294: UnifiedInvocationHandler#invoke:58 - java.lang.reflect.UndeclaredThrowableException
- Can't Install 2.5 on Linux
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): battleship_hit, UnitImageFactory.ImageKey(player=PlayerId named:Can... HOT 1
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): factory1, UnitImageFactory.ImageKey(player=PlayerId named:Neutral_C...
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): factory1, UnitImageFactory.ImageKey(player=PlayerId named:Neutral_C... HOT 1
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): chineseAirfield, UnitImageFactory.ImageKey(player=PlayerId named:Ja... HOT 1
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): chineseAirfield, UnitImageFactory.ImageKey(player=PlayerId named:Ja...
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): chineseAirfield, UnitImageFactory.ImageKey(player=PlayerId named:Ja... HOT 1
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): chineseAirfield, UnitImageFactory.ImageKey(player=PlayerId named:Ja... HOT 1
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): Repair_Heavy_BB, UnitImageFactory.ImageKey(player=PlayerId named:Br... HOT 1
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): Repair_Heavy_BB, UnitImageFactory.ImageKey(player=PlayerId named:Br... HOT 1
- 2.5.22294: OpenFileUtility#openUrl:43 - java.lang.UnsupportedOperationException HOT 2
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): britishAirfield, UnitImageFactory.ImageKey(player=PlayerId named:Sp... HOT 1
- 2.5.22294: UnitsDrawer - MISSING UNIT IMAGE (won't be displayed): Dreadnought_hit, UnitImageFactory.ImageKey(player=PlayerId named:Ot... HOT 1
- 2.5.22294: ContentDownloader#downloadWithSingleRetryOnError:81 - sun.security.validator.ValidatorException HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from triplea.