act: Services not working

Hello! I have this workflow:

on: [push]

jobs:
  tests:
    runs-on: ubuntu-latest
    container: node:12.16.1-stretch
    services:
      mongodb:
        image: "mongo:4.0.17"
    steps:
      - uses: actions/checkout@v2
      - run: yarn
      - run: yarn test

The yarn test command expects to find a mongodb service listening on 27017, but running act the command fails with MongooseServerSelectionError: getaddrinfo ENOTFOUND mongodb. The same workflow succeeds on GitHub.

I’ve also tried -P ubuntu-latest=nektos/act-environments-ubuntu:18.04, any help is very appreciated 😃

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 123
  • Comments: 25 (7 by maintainers)

Commits related to this issue

Most upvoted comments

It would be great if the readme mentioned that services isn’t supported.

I added the following steps to my workflow in order to get the actions for my Rails app running locally:

# Install local deps if this action is being run locally
- name: Install local dependencies
  if: ${{ env.ACT }}
  run: |
    npm i -g yarn
    sudo apt-get update
    sudo apt-get -yqq install libgconf-2-4 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm-dev libnss3-dev libxss-dev libasound2 libxshmfence-dev postgresql postgresql-contrib redis-server

- name: Boot local dependencies
  if: ${{ env.ACT }}
  run: |
    sudo service postgresql start
    sudo service redis-server start

- name: Configure local dependencies
  if: ${{ env.ACT }}
  run: |
    sudo -u postgres psql -U postgres -d postgres -c "alter user postgres with password 'password';"

Edit: I thought this was a bug, but in fact support for services aren’t implemented yet in act, so for those shouting BUMP please consider contributing instead if you can! 🙌

@Systho A small reproduction is:

  1. Create .github/workflows/repro.yml
name: "Reproduction"

on:
  push:

jobs:
  repro:
    name: Reproduction of failing Services interpolation
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:12
        env:
          POSTGRES_USER: runner
          POSTGRES_PASSWORD: mysecretdbpass
          POSTGRES_DB: mydb
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
        ports:
          - 5432:5432
    steps:
      - name: Echo the Postgres service ID / Network / Ports
        run: |
          echo "id: ${{ job.services.postgres.id }}"
          echo "network: ${{ job.services.postgres.network }}"
          echo "ports: ${{ job.services.postgres.ports }}"
  1. Run act "push" --job "repro"

shiiiiiiiiiiiiit

Issue is stale and will be closed in 14 days unless there is new activity

Services were drafted in https://github.com/nektos/act/pull/638 but author stopped responding, it works but it also breaks easily thus it wasn’t merged

This is finished in a fork https://gitea.com/gitea/act. Maybe this can be backported by someone.

There aren’t any active development efforts for this in nektos/act.

Notification for people subscribed to this thread, please see latest PR mentioned. artefacts: https://github.com/nektos/act/actions/runs/1118549374

BUMP

Issue is stale and will be closed in 7 days unless there is new activity

I was having a similar problem, especially when i was trying to combine rails caching with postgresql and redis. In the end i created a seperate workflow file called ci-local.yml based off of the production Github Actions file i had created and manually defined the services by calling apt-get then service %service_name% start.

Massive PITA but for localised testing this was the only way i could thoroughly test the functional parts of GitHub Actions where multiple parts are as yet unsupported.

Not a fix, just a hacky workaround to get myself out of trouble!

The bot closing issues after 14 days is pretty aggressive. 😕

(I too have this issue locally. Works on GitHub)