how to run a command in host before entering docker container in github ci

Viewed 481

Im trying to install a package on the host system i.e (ubuntu-latest) before entering the docker container (arch linux)

I tried a lot of syntax but Im getting it wrong

on: [push]
jobs:
  update-aur:
    runs-on: ubuntu-latest
    steps:
      - run : sudo apt-get install runc
    container: archlinux
    steps:
      - run: |
          pacman --noconfirm -Syu 
          pacman --noconfirm -S base-devel 

this gives an error of steps is already defined

2 Answers

If the running machine configuration is important for the build, try using self-hosted runner.

  1. You can create VM in some of the cloud providers (ex. AWS, Azure, etc.) and register it with GitHub-CI.
  2. Install the GitHub-CI service
  3. Install all the utilities you need
  4. Register the runner to the repository
  5. Change the build script for run-on to point to the self-hoster runner

You can find more information in the GitHub-CI Docs

You could run only a step in the container instead of the whole job. Something like:

on: [push]
jobs:
  update-aur:
    runs-on: ubuntu-latest
    steps:
      - run: sudo apt-get install ...
      - uses: docker://archlinux
        with:
          entrypoint: /usr/bin/bash
          args: -c 'pacman --noconfirm -Syu && pacman --noconfirm -S base-devel'

I don't know if it's practical in your case since you probably want to run a bunch of steps afterward in the same container. In any case you can find more info on the running steps in containers here and the different options available here

Related