Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

First see Adding Github Actions to a repo

If you have a repo or a job that is inappropriate to run on a shared resource, you may contact it@tufts.edu and request ESCP to create a custom private runner. For their convenience, include a link to this page in your request.

For ESCP:

If the runner is only needed by a single repo:

...

On the system where you want the runner to run, add the gitrunner1 service account, then login and sudo su - gitrunner1 become that user.

...

Browse (or have the user browse) to the repo in the GitHub web interface. Click Settings > Actions > Runners. Create a new runner. This will only be accessible by this repo.

They give you some instructions to install and configure the runner, but you need a few modifications:

...

You will need an on-prem machine and service account to run the runner. Please contact escp-ticket@tufts.edu to create these.

After you’re able to login to the machine, and become the service account (i.e. sudo su - gitrunner1), open a web browser and browse to your repository.

  • In your web browser, browse to your repository.

  • Go to Settings > Actions > Runners > New Self-Hosted Runner.

  • It will give you a series of commands to paste into the terminal.

    Code Block
    $ ./config.sh --url [...]
    # !!!!
    # !!!! When prompted for name of runner group, just press enter for default.
    # !!!! When prompted for name of runner, use hostname_username, for example, myhost-dev-01_gitrunner1
    # !!!! When prompted for additional labels, just press enter 
    "rhel-8" or whatever
    for default.
    # !!!! When prompted for work folder, press Enter for default _work
    # !!!!
    
    # !!!!!! DON'T DO THIS! This will launch the runner once in the terminal,
    # !!!!!! and it will die when you logout. Instead, see below
    # Last step, run it!
    $ ./run.sh
    
    # (Yes, do this). To run as a service:
    # as root:
    # In the following, Don't just copy and paste. Edit before doing it.
    #     runasuser=gitrunnerX
    #     cd /home/${runasuser}/actions-runner
    #     ./svc.sh install ${runasuser}
    #         It will create a service, and display the service name. You can start, such as:
    #         systemctl enable --now actions.runner.Tufts-Technology-Services.myhost-dev-01_${runasuser}
    
    # TODO!!
    # selinux will block the runner.
    # Going to have to do some of this:
    # https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/sect-security-enhanced_linux-working_with_selinux-selinux_contexts_labeling_files#sect-Security-Enhanced_Linux-SELinux_Contexts_Labeling_Files-Persistent_Changes_semanage_fcontext

    If the runner could be used by multiple repositories, create a restricted access Runner Group:

  • Go to the Organization. Settings > Actions > Runner groups.

  • Create a new runner group.

  • Edit the group properties, and select which permissions to apply. (Which repos are allowed to use this runner group)

  • Install the runner as described in the section above for a single runner, BUT when prompted for name of runner group, specify your new runner group.

  • After the runner has started, return to the web interface. Under “Runners,” ensure the Runner Group of the specific runner.