act icon indicating copy to clipboard operation
act copied to clipboard

Services not working

Open fgimenez opened this issue 4 years ago • 20 comments

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 :)

fgimenez avatar Mar 28 '20 14:03 fgimenez

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!

thatdoogieguy avatar May 01 '20 03:05 thatdoogieguy

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

github-actions[bot] avatar Jul 01 '20 00:07 github-actions[bot]

shiiiiiiiiiiiiit

mossad-zika avatar Aug 31 '20 14:08 mossad-zika

Same here. Services not working. Any workaround for the same?

jadhavmanoj avatar Oct 15 '20 07:10 jadhavmanoj

@jadhavmanoj workaround is to use docker-compose

mossad-zika avatar Oct 15 '20 10:10 mossad-zika

I have the same problem while using services of mysql and redis in action

chenxilinsidney avatar Nov 21 '20 07:11 chenxilinsidney

Any updates? It's been another month

theoparis avatar Dec 28 '20 11:12 theoparis

Hello, any update on this?

My code:

jobs:
  test:
    runs-on: ubuntu-latest

    services:
      mongodb:
        image: mongo:4.0
        ports:
          - 27017/tcp
# ...etc

In the env section of my job I have: MONGO_URI_TESTS: localhost:${{ job.services.mongodb.ports[27017] }}/dbtest

The error: ERRO[0082] Unable to interpolate string 'localhost:${{ job.services.mongodb.ports[27017] }}/dbtest' - [TypeError: Cannot access member 'ports' of undefined]

Thank you!

Lzok avatar Jan 25 '21 03:01 Lzok

@thatdoogieguy Could you provide a snippet of the step you wrote tha install & start postgresql ? I have a feeling that is a simple one but since you have experience about it let's ensure there is no nasty corner case :)

Systho avatar Feb 04 '21 08:02 Systho

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"

loklaan avatar Feb 17 '21 22:02 loklaan

BUMP

amacgregorhumi avatar Feb 24 '21 19:02 amacgregorhumi

BUMP

moki9 avatar Mar 01 '21 06:03 moki9

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

github-actions[bot] avatar Apr 01 '21 00:04 github-actions[bot]

The bot closing issues after 14 days is pretty aggressive. :/

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

elitan avatar Jul 14 '21 12:07 elitan

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

catthehacker avatar Jul 14 '21 13:07 catthehacker

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

catthehacker avatar Aug 11 '21 03:08 catthehacker

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';"

techpeace avatar Aug 24 '21 15:08 techpeace

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

neongreen avatar Mar 15 '22 13:03 neongreen

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';"

thanks for providing this workaround. but installing everything every time is quite annoying, is any way to make act connect host service? e.g make act connect PostgreSQL that runs in the host.

kent-avl avatar Nov 08 '22 16:11 kent-avl

You can probably use host.docker.internal on osx.

till avatar Nov 08 '22 17:11 till

Getting this working would be AMAZING - our company heavily uses GitHub actions and act (mostly for debugging - makes it a breeze), but getting services running locally would dramatically cut our build times (as they could be done locally) and make debugging complex actions possible.

edmundsj avatar Jan 15 '23 00:01 edmundsj

thanks for providing this workaround. but installing everything every time is quite annoying, is any way to make act connect host service? e.g make act connect PostgreSQL that runs in the host.

Yea it is annoying, but connecting to host will likely restrict you to only 1 runner. Probably makes more sense to have database as part of the image, but I'm still researching how that can be done, i.e. where are they pulling unbuntu-latest from

bilogic avatar Mar 31 '23 02:03 bilogic

+1

tarikhagustia avatar Apr 17 '23 04:04 tarikhagustia

@catthehacker Are you aware of any active development efforts? Last I've seen is #775 and would love to help get it over the finish line

GuessWhoSamFoo avatar Jul 10 '23 05:07 GuessWhoSamFoo

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.

ChristopherHX avatar Jul 10 '23 07:07 ChristopherHX