GithubHelp home page GithubHelp logo

dolphin-emu / sadm Goto Github PK

View Code? Open in Web Editor NEW
35.0 35.0 43.0 1011 KB

Scripts and configurations for the Dolphin Emulator infrastructure

License: MIT License

Python 37.34% Shell 0.67% Nix 56.87% Dockerfile 2.63% Ruby 0.03% Go 2.47%

sadm's People

Contributors

admiralcurtiss avatar degasus avatar delroth avatar josjuice avatar oatmealdome avatar shuffle2 avatar t895 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sadm's Issues

msbuild: use native x64 toolchain

Currently dolphin uses the 32bit toolchain to make 64bit binaries. The main advantages of using the 64bit toolchain is just that it can use more memory. Someone should experiment on the buildbot and see if it helps build times.

You can tell msbuild to use 64bit toolchain with /p:PreferredToolArchitecture=x64.

Remove *-steam-* builders ?

Is this builder really helpful?
AFAIK The only differences from normal build are that AUTOUPDATE is not defined and STEAM is defined.
STEAM macro is never used in the source code (appears to only be used in some cmake stuff). Probably this should be reworked and not exposed as a macro, anyway.

cc @OatmealDome

symstore improvements

storesymbols.bat calls

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64\symstore.exe"

Should be 8.1 version instead of 8.0 (it shouldn't matter, but still better form...).

Secure the Central<->Buildbot change submission path

Currently the change submission path via the Buildbot webhook API is not properly authenticated, and this could be an abusable flaw. Once Buildbot is moved to altair and modernized, add a new webhook parser plugin which supports some kind of HMAC signature, or at the very least something like HTTP basic auth.

(I think we might actually be able to do HTTP basic auth already as a stopgap, but haven't tried.)

Deprecate old changes poller

Replace with some new code in central to send release changes via the webhook API (instead of the PB API which changes currently uses). Main complexity is that we need to have a local repo clone to run git describe and to find what branch commits are on (replicating the basic features of the git-what-branch Perl script we're currently using).

  • central Git repo management
  • git-what-branch basic reimplementation
  • Wiki client to update the latest build revision there (currently broken since the mediawiki upgrade)
  • Figure out some central API to trigger build re-submission

Android updater fails to promote build to production track if artifact was already uploaded

Feb 13 00:00:00 altair systemd[1]: Starting Android Play Store updater (beta -> production)...
Feb 13 00:00:07 altair android-updater[2768075]: Traceback (most recent call last):
Feb 13 00:00:07 altair android-updater[2768075]:   File "/nix/store/phb42swrq1fd2phpz3bfl9jzkqfj932z-android-updater/bin/.android-updater-wrapped", line 93, in <module>
Feb 13 00:00:07 altair android-updater[2768075]:     _upload_new_playstore_apk(play, args.package_name, args.playstore_track,
Feb 13 00:00:07 altair android-updater[2768075]:   File "/nix/store/phb42swrq1fd2phpz3bfl9jzkqfj932z-android-updater/bin/.android-updater-wrapped", line 51, in _upload_new_playstore_apk
Feb 13 00:00:07 altair android-updater[2768075]:     mimetype=_APK_MIME)).execute()
Feb 13 00:00:07 altair android-updater[2768075]:   File "/nix/store/9bkjan3wm2jk1sqx3r6dq60895ddcg31-python3.10-google-api-python-client-2.61.0/lib/python3.10/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
Feb 13 00:00:07 altair android-updater[2768075]:     return wrapped(*args, **kwargs)
Feb 13 00:00:07 altair android-updater[2768075]:   File "/nix/store/9bkjan3wm2jk1sqx3r6dq60895ddcg31-python3.10-google-api-python-client-2.61.0/lib/python3.10/site-packages/googleapiclient/http.py", line 938, in execute
Feb 13 00:00:07 altair android-updater[2768075]:     raise HttpError(resp, content, uri=self.uri)
Feb 13 00:00:07 altair android-updater[2768075]: googleapiclient.errors.HttpError: <HttpError 403 when requesting https://androidpublisher.googleapis.com/upload/androidpublisher/v3/applications/org.dolphinemu.dolphinemu/edits/10547343839644832876/apks?alt=json&uploadType=media returned "APK specifies a version code that has already been used.". Details: "APK specifies a version code that has already been used.">
Feb 13 00:00:07 altair systemd[1]: android-updater-release.service: Main process exited, code=exited, status=1/FAILURE
Feb 13 00:00:07 altair systemd[1]: android-updater-release.service: Failed with result 'exit-code'.
Feb 13 00:00:07 altair systemd[1]: Failed to start Android Play Store updater (beta -> production).

Add FifoCI results submission API

Currently FifoCI can only submit results by running a manage.py command on the server side, and only as the user running the backend service. The buildbot master happens to run on the same machine and uses sudo -u fifoci to run that script, but this has several issues:

  1. It's ugly and terrible privsep.
  2. It means we can't run the FifoCI backend and the Buildbot master on separate machines, which hinders the hive->altair migration.

Ideally this is replaced with an API call and a client that can be called by the Buildbot (either as a Python library, or a separate binary -- separate binary might be easier for now).

Generated .app file is not capitalized

This is very minor, but recently with the removal of DolphinWx.app from the generated .dmg file, the .app file for Dolphin is no longer capitalized.

To be consistent with how the Windows executable is generated it should probably be capitalized.

Nixify Buildbot master

  • #169
  • Move Buildbot config to its own repo and modernize (poetry, poetry2nix, etc.)
  • Convert some misc helpers (manifest generation, website notifier) to libraries and/or properly packaged scripts.
  • Add a standalone runner instead of using the "standard" buildbot startup script and sourcing the config.
  • Add a Nix role to run the Buildbot.

Let's Encrypt automation

9:12 PM <•Helios747> hey delroth, can you fix the expired cert on dolp.in links?
...
9:13 PM <•delroth> Helios747: yeah... I should do that
9:13 PM <•delroth> need to figure out what's the recommended option nowadays for fetching LE certs
9:13 PM <•Helios747> I just cronjob it myself
9:14 PM <•Helios747> ubuntu has "certbot" which I throw into a weekly cronjob
...
9:14 PM <•delroth> yeah but certbot is annoying with how it changes your nginx configs
9:15 PM <•Helios747> Doesn't it have a "standalone" switch?
9:15 PM <•Helios747> which just spins up a python webserver
9:15 PM <•delroth> maybe
9:15 PM <•delroth> anyway, we've got a wildcard cert for *.dolphin-emu.org anyway, so it's really only dolp.in
9:15 PM <•delroth> I'll just do a DNS verification or something

You don't want to use standalone, you want to use the webroot option plus certonly. Webroot (for http-01) just drops the files in a folder you specify, I use /tmp/letsencrypt then tell the web server to serve anything matching /.well-known/acme-challenge/ out of /tmp/letsencrypt/.well-known/acme-challenge.

certonly doesn't attempt to install the certificate; instead, provide an "install hook" that tells nginx to reload the certs.

Git Tags and Tarballs

I'm trying to automate beta releases for the flathub build.
Currently it downloads a specified commit from the dolphin git repo that's updated manually whenever there's a new blog post.
The tool to automate this process, flatpak-external-data-checker, requires either a branch or tag to update the commit.

I've tried pulling the commit hash from https://dolphin-emu.org/update/latest/beta and downloading the source from https://github.com/dolphin-emu/dolphin/archive/{commit}.zip but as the repo uses submodules this fails to build.

Would it be possible to get any one of these:

  • A tag per release: 5.0-16793
  • A branch that follows beta releases: beta
  • A tarball (or 7z) artefact that includes submodules (this function but without the build step)

Duplicate buildbot releases causing hash failures

It seems like Buildbot is building Windows x64 (and possibly more) releases twice and racing to replace the released artifact. If a user or automated system downloads the first build artifact and compares it to a user who downloaded it a few minutes later, the two files differ.

An example of the duplicate builds:
Original: https://dolphin.ci/#/builders/6/builds/2486
Duplicate: https://dolphin.ci/#/builders/6/builds/2488
The only difference I can see between the builds (besides timestamp) is that the second build only marks @delroth as "Responsible", while the first build has 4 users marked.

This causes issues with package managers like Scoop, which download build artifacts and validate their hash. The automated commit Calinou/scoop-games@15cf5b5 claims the artifact from the duplicated build 18271 has SHA256 e0cc4e6e4da497736b2e0ca6088700ab037848866083d851b984b012151da185, when the file hosted on the website as "build 18271" has hash 738d372ff81527a7c37a58aa62d9abc2efc68cfb7b8a689e5081829857d08210.

The Scoop code that computes the hash is located here: https://github.com/ScoopInstaller/Scoop/blob/f93028001fbe5c78cc41f59e3814d2ac8e595724/lib/autoupdate.ps1#L277-L278, and the "Computed hash:" message is printed in this log (use the log search instead of Ctrl+F): https://github.com/Calinou/scoop-games/actions/runs/3954168346/jobs/6771222872

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.