Skip to content Skip to sidebar Skip to footer

How to Upload Unity Game to Itchio

Automatically edifice and deploying Unity applications to crawling.io

When doing game jams, you can hands waste a lot of time fixing one bug, manually build for iv or more than platforms, upload each to itch only to detect in that location is another critical bug and you lot have to first all over once more. In this post, I'll explain how to prepare up continuous deployment so all of this will exist done automatically when you push to your git master branch.

At first glance, it seemed like Unity Cloud build would be the obvious solution… However information technology costs $ix a month, and I but do this equally a hobby and I don't like depending paid services if I don't take to. Also I oasis't checked if information technology would integrate well with Itch.

I decided to go for a docker-based solution, and started looking for images. Later a quick search it seemed pretty articulate that gitlab.com/gableroux/unity3d was the most well-maintained and pop solution.

At that place seems to be two common ways to set it upwardly, either using gitlab-ci, which is what the official example does, or using Travis and GitHub as explained by Carlos Castro on his blog.

I wanted to exercise it the most official way to minimize the amount of corner-cases and workaround I would come across, so I went with gitlab-ci, which means you lot should host your repo on gitlab.com or another GitLab instance.

While the official documentation for setting upward was good plenty, I found it a bit scattered (i.east. some steps are in the output log of a docker container etc. and some info was in the instance readme and some in gitlab issues and some in the gitlab docker epitome readme. Besides I was unfamiliar with GitLab CI, which meant I had to look up a lot of things along the mode.

This is why I decided to write this guide, and then y'all (and time to come me) don't have to search all over the place, when all you want to do is apace automate deployment for a new jam game.

Without farther ado, here are the steps:

Building and testing with GitLab

Add configuration files to your repo

  1. Clone https://gitlab.com/gableroux/unity3d-gitlab-ci-instance.git and re-create these files over to your project
    • The entire ./ci folder
    • .gitlab-ci.yml
    • Assets/Scripts/Editor/BuildCommand.cs (needs to be at this particular path in your repo also)
  2. Open up .gitlab-ci.yml and brand the modifications you need. Yous might want to:
    • Change BUILD_NAME to something sensible.
    • Edit the image: field at the summit to fix the unity version you want. I left it at paradigm: gableroux/unity3d:2019.3.7f1 every bit that was the version I was on.
    • Disable the targets you lot don't need, either by deleting or commenting them out, or you can add together a new belongings when: manual and so they don't trigger automatically. I disabled pages (deploy WebGL build as GitLab page), build-ios-xcode, build-and-deploy-ios, build-android, deploy-android, build-StandaloneLinux64-il2cpp, build-StandaloneOSXUniversal. This left me with just tests, Windows, MacOS, Linux and WebGL beingness built automatically.
  3. Commit your changes and push to your GitLab repo.

Now you should be able to go to your project's pipeline overview to view your new gitlab-ci jobs that are existence run. Find information technology past going to CI/CD->Pipelines. You should meet a line there for you newly pushed commit.

GitLab CI Pipelines

Click where it says running to run into the details of the individual jobs.

GitLab CI Jobs

You lot should now see a graph of all your configured jobs. They should all fail considering nosotros haven't withal configured the unity license. This is what we're going to do side by side. :)

Unity activation

Unity activation is a chip of a hassle, and information technology's different depending on whether you're running the pro or gratuitous edition. Here I'll assume you're a hobbyist/indie and is using the free version.

Commencement yous need to go the the license activation file: unity-*.ulf

  1. Become to your GitLab project'due south home page and then Settings->CI / CD-> Variables) and add the following variables:

    • UNITY_USERNAME with contents set to your email
    • UNITY_PASSWORD with your password Marking both as masked and protected.

    GitLab CI Variables

  2. Go dorsum to the CI pipeline chore overview and run go-activation-file the footstep by pressing the play push.

  3. Download the chore artifact, a zip-file with unity-*.alf inside 10 minutes (later that it will automatically exist deleted from GitLab)

  4. Become to https://license.unity3d.com/manual and upload your Unity-*.alf file.

    unity license activation web page

  5. Afterward following the steps, you should exist able to download your unity-*.ulf file. Keep this file, and go on it safe. Yous tin reuse it for other projects with a unity version from the same twelvemonth (and so you don't accept to practise all these steps each time.

Finally, paste the contents of your unity-*.ulf file into a new CI variable (not file), UNITY_LICENSE_CONTENT.

Your project should now exist ready to be congenital and tested. Attempt committing and pushing again, your builds should pass at present. You can download the artifacts from the job details and verify that everything worked.

Deploying to itch.io

Go Butler credentials

  1. Download butler
  2. Run butler login from the command line, and authorize information technology in the browser.
  3. Copy the contents of ~/.config/itch/butler_creds to a new GitLab CI variable, BUTLER_API_KEY, mask and protect information technology.

Add an Itch deployment job

In one case once again, open your .gitlab-ci.yml. We're going to add a new job for deploying to itch.io.

At the starting time of the file, in the variables section, add together the following variables:

                          variables              :              BUILD_NAME              :              ExampleProjectName              UNITY_ACTIVATION_FILE              :              ./unity3d.alf              ITCH_USER              :              your_itch_user              ITCH_PROJECT              :              your_game_name                      

At the end of your file, add the following to create a new deploy task:

                          itch              :              image              :              dosowisko/butler              stage              :              deploy              script              :              -              VERSION=$CI_COMMIT_SHORT_SHA              -              butler push "./Builds/WebGL/${BUILD_NAME}" "${ITCH_USER}/${ITCH_PROJECT}:web" --userversion $VERSION              -              butler push "./Builds/StandaloneLinux64" "${ITCH_USER}/${ITCH_PROJECT}:linux" --userversion $VERSION              -              butler button "./Builds/StandaloneWindows64" "${ITCH_USER}/${ITCH_PROJECT}:windows" --userversion $VERSION              -              butler push "./Builds/StandaloneOSX" "${ITCH_USER}/${ITCH_PROJECT}:mac" --userversion $VERSION              only              :              -              chief                      

That's information technology. Commit and push to GitLab, and you should hopefully get a mail from itch.io afterwards a while saying the builds are available :)

gitlab ci all builds succeeded

Nicer versions

Equally a bonus: if you lot don't like having only the git sha1 as the version and want to have something based on the latest git tag (you lot need to accept at to the lowest degree one tagged commit), you tin add a new versioning job:

                          version              :              epitome              :              name              :              alpine/git:latest              entrypoint              :              [              "              "              ]              stage              :              build_and_test              script              :              -              git describe --tag > ./version.txt              # will generate something like "1.0.0-32-g040c782"              artifacts              :              paths              :              -              ./version.txt                      

And alter your itch task in .gitlab-ci.yml equally follows to use ./version.txt instead:

                          itch              :              image              :              dosowisko/butler              stage              :              deploy              script              :              -              butler push "./Builds/WebGL/${BUILD_NAME}" "${ITCH_USER}/${ITCH_PROJECT}:spider web" --userversion-file ./version.txt              -              butler button "./Builds/StandaloneLinux64" "${ITCH_USER}/${ITCH_PROJECT}:linux" --userversion-file ./version.txt              -              butler push button "./Builds/StandaloneWindows64" "${ITCH_USER}/${ITCH_PROJECT}:windows" --userversion-file ./version.txt              -              butler push "./Builds/StandaloneOSX" "${ITCH_USER}/${ITCH_PROJECT}:mac" --userversion-file ./version.txt              but              :              -              master                      

At present you should take nicer versions, just maybe a convoluted in order just to call git describe --tag. If you accept a better proffer, please permit me know in the comments :)

Comments

elliscoich1962.blogspot.com

Source: https://johanhelsing.studio/posts/gitlab-docker-itch-deploy

Publicar un comentario for "How to Upload Unity Game to Itchio"