[GH-ISSUE #1473] GITHUB_JOB should be the id not the name #757

Open
opened 2026-03-01 21:46:08 +03:00 by kerem · 1 comment
Owner

Originally created by @jsoref on GitHub (Nov 27, 2022).
Original GitHub issue: https://github.com/nektos/act/issues/1473

Bug report info

act version:            0.2.33
GOOS:                   darwin
GOARCH:                 arm64
NumCPU:                 10
Docker host:            DOCKER_HOST environment variable is unset/empty.
Sockets found:
	/var/run/docker.sock
	/Users/jsoref/.docker/run/docker.sock
Config files:           
	/Users/jsoref/.actrc:
		-P ubuntu-latest=catthehacker/ubuntu:act-latest
		-P ubuntu-20.04=catthehacker/ubuntu:act-20.04
		-P ubuntu-18.04=catthehacker/ubuntu:act-18.04
		-P ubuntu-16.04=catthehacker/ubuntu:act-16.04
		-P self-hosted=catthehacker/ubuntu:act-latest
Build info:
	Go version:            go1.19.2
	Module path:           command-line-arguments
	Main version:          
	Main path:             
	Main checksum:         
	Build settings:
		-compiler:            gc
		-ldflags:             -X main.version=0.2.33
		CGO_ENABLED:          1
		CGO_CFLAGS:           
		CGO_CPPFLAGS:         
		CGO_CXXFLAGS:         
		CGO_LDFLAGS:          
		GOARCH:               arm64
		GOOS:                 darwin
Docker Engine:
	Engine version:        20.10.18
	Engine runtime:        runc
	Cgroup version:        1
	Cgroup driver:         cgroupfs
	Storage driver:        overlay2
	Registry URI:          https://index.docker.io/v1/
	OS:                    Alpine Linux v3.16
	OS type:               linux
	OS version:            3.16.2
	OS arch:               aarch64
	OS kernel:             5.15.64-0-virt
	OS CPU:                2
	OS memory:             7938 MB
	Security options:
		name=seccomp,profile=default

Command used with act

act -W .github/workflows/spelling.yml

Describe issue

Per https://docs.github.com/en/actions/learn-github-actions/environment-variables#naming-conventions-for-environment-variables

Environment variable Description
GITHUB_JOB The job_id of the current job. For example, greeting_job.

GITHUB_JOB should be the job id, not the job name.

I have some code which tries to identify the workflow based on this variable, and at least, the documentation says that what I'm doing is correct:
github.com/check-spelling/check-spelling@2edd26d0ad/unknown-words.sh (L353)

(I'm going to add some code to tolerate this behavior as well as I'm trying to ship...)

https://github.com/check-spelling/pleroma/blob/spell-check-with-spelling/.github/workflows/spelling.yml

Workflow content

# this is slightly different from what's in the repository as I need some bits to make act more or less work...

name: Check Spelling

# Comment management is handled through a secondary job, for details see:
# https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions
#
# `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment
#   (in odd cases, it might actually run just to collapse a commment, but that's fairly rare)
#   it needs `contents: write` in order to add a comment.
#
# `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment
#   or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment)
#   it needs `pull-requests: write` in order to manipulate those comments.

# Updating pull request branches is managed via comment handling.
# For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list
#
# These elements work together to make it happen:
#
# `on.issue_comment`
#   This event listens to comments by users asking to update the metadata.
#
# `jobs.update`
#   This job runs in response to an issue_comment and will push a new commit
#   to update the spelling metadata.
#
# `with.experimental_apply_changes_via_bot`
#   Tells the action to support and generate messages that enable it
#   to make a commit to update the spelling metadata.
#
# `with.ssh_key`
#   In order to trigger workflows when the commit is made, you can provide a
#   secret (typically, a write-enabled github deploy key).
#
#   For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key

on:
  push:
    branches:
    - "**"
    tags-ignore:
    - "**"
  pull_request_target:
    branches:
    - "**"
    tags-ignore:
    - "**"
    types:
    - 'opened'
    - 'reopened'
    - 'synchronize'
  issue_comment:
    types:
    - 'created'

jobs:
  spelling:
    name: Check Spelling
    permissions:
      contents: read
      pull-requests: read
      actions: read
      security-events: write
    outputs:
      followup: ${{ steps.spelling.outputs.followup }}
      internal_state_directory: ${{ steps.spelling.outputs.internal_state_directory }}
      docker_container: ${{ steps.spelling.outputs.docker_container }}
    runs-on: ubuntu-latest
    if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'"
    concurrency:
      group: spelling-${{ github.event.pull_request.number || github.ref }}
      # note: If you use only_check_changed_files, you do not want cancel-in-progress
      cancel-in-progress: true
    steps:
    - name: check-spelling
      id: spelling
      uses: check-spelling/check-spelling@prerelease
      with:
        suppress_push_for_open_pull_request: 1
        checkout: true
        spell_check_this: check-spelling/spell-check-this@prerelease
        post_comment: 0
        use_magic_file: 1
        experimental_apply_changes_via_bot: 1
        use_sarif: 1
        extra_dictionary_limit: 10
        extra_dictionaries:
          cspell:software-terms/src/software-terms.txt
          cspell:node/node.txt
          cspell:html/html.txt
          cspell:npm/npm.txt
          cspell:elixir/elixir.txt
          cspell:fullstack/fullstack.txt
          cspell:aws/aws.txt
          cspell:cpp/src/stdlib-cerrno.txt
          cspell:filetypes/filetypes.txt
          cspell:python/src/common/extra.txt
          cspell:python/src/python/python.txt
          cspell:css/css.txt
          cspell:lorem-ipsum/dictionary.txt
          cspell:cpp/src/ecosystem.txt
          cspell:django/django.txt
        check_extra_dictionaries: ''

  comment-push:
    name: Report (Push)
    # If your workflow isn't running on push, you can remove this job
    runs-on: ubuntu-latest
    needs: spelling
    permissions:
      contents: write
    if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push'
    steps:
    - name: comment
      uses: check-spelling/check-spelling@prerelease
      with:
        checkout: true
        spell_check_this: check-spelling/spell-check-this@prerelease
        task: ${{ needs.spelling.outputs.followup }}
        internal_state_directory: ${{ needs.spelling.outputs.internal_state_directory }}
        caller_container: ${{ needs.spelling.outputs.docker_container }}
        debug: 1

  comment-pr:
    name: Report (PR)
    # If you workflow isn't running on pull_request*, you can remove this job
    runs-on: ubuntu-latest
    needs: spelling
    permissions:
      pull-requests: write
    if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request')
    steps:
    - name: comment
      uses: check-spelling/check-spelling@prerelease
      with:
        checkout: true
        spell_check_this: check-spelling/spell-check-this@prerelease
        task: ${{ needs.spelling.outputs.followup }}
        experimental_apply_changes_via_bot: 1

  update:
    name: Update PR
    permissions:
      contents: write
      pull-requests: write
      actions: read
    runs-on: ubuntu-latest
    if: ${{
        github.event_name == 'issue_comment' &&
        github.event.issue.pull_request &&
        contains(github.event.comment.body, '@check-spelling-bot apply')
      }}
    concurrency:
      group: spelling-update-${{ github.event.issue.number }}
      cancel-in-progress: false
    steps:
    - name: apply spelling updates
      uses: check-spelling/check-spelling@prerelease
      with:
        experimental_apply_changes_via_bot: 1
        checkout: true
        ssh_key: "${{ secrets.CHECK_SPELLING }}"

Relevant log output

[Check Spelling/Report (Push) ]   | + echo env:
[Check Spelling/Report (Push) ]   | env:
[Check Spelling/Report (Push) ]   | + env
[Check Spelling/Report (Push) ]   | + sort
...
[Check Spelling/Report (Push) ]   | ACT=true
...
[Check Spelling/Report (Push) ]   | GITHUB_ACTION_REF=
[Check Spelling/Report (Push) ]   | GITHUB_ACTION_REPOSITORY=
...
[Check Spelling/Report (Push) ]   | GITHUB_JOB=Report (Push)

Additional information

I don't think #1458 is particularly relevant, although it may be adjacent.

I've included GITHUB_ACTION_REF and GITHUB_ACTION_REPOSITORY which should also be set, but aren't. They're technically out of scope, and I'm in the middle of adding additional code to work around their empty values.

To make the run faster, you can add:

.github/actions/spelling/only.txt:

CHANGELOG.md
Originally created by @jsoref on GitHub (Nov 27, 2022). Original GitHub issue: https://github.com/nektos/act/issues/1473 ### Bug report info ```plain text act version: 0.2.33 GOOS: darwin GOARCH: arm64 NumCPU: 10 Docker host: DOCKER_HOST environment variable is unset/empty. Sockets found: /var/run/docker.sock /Users/jsoref/.docker/run/docker.sock Config files: /Users/jsoref/.actrc: -P ubuntu-latest=catthehacker/ubuntu:act-latest -P ubuntu-20.04=catthehacker/ubuntu:act-20.04 -P ubuntu-18.04=catthehacker/ubuntu:act-18.04 -P ubuntu-16.04=catthehacker/ubuntu:act-16.04 -P self-hosted=catthehacker/ubuntu:act-latest Build info: Go version: go1.19.2 Module path: command-line-arguments Main version: Main path: Main checksum: Build settings: -compiler: gc -ldflags: -X main.version=0.2.33 CGO_ENABLED: 1 CGO_CFLAGS: CGO_CPPFLAGS: CGO_CXXFLAGS: CGO_LDFLAGS: GOARCH: arm64 GOOS: darwin Docker Engine: Engine version: 20.10.18 Engine runtime: runc Cgroup version: 1 Cgroup driver: cgroupfs Storage driver: overlay2 Registry URI: https://index.docker.io/v1/ OS: Alpine Linux v3.16 OS type: linux OS version: 3.16.2 OS arch: aarch64 OS kernel: 5.15.64-0-virt OS CPU: 2 OS memory: 7938 MB Security options: name=seccomp,profile=default ``` ### Command used with act ```sh act -W .github/workflows/spelling.yml ``` ### Describe issue Per https://docs.github.com/en/actions/learn-github-actions/environment-variables#naming-conventions-for-environment-variables Environment variable | Description -- | -- GITHUB_JOB | The [job_id](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_id) of the current job. For example, greeting_job. `GITHUB_JOB` should be the _job id_, not the _job name_. I have some code which tries to identify the workflow based on this variable, and at least, the documentation says that what I'm doing is correct: https://github.com/check-spelling/check-spelling/blob/2edd26d0adeaa4e72bfd30e4873855ecb6ba4390/unknown-words.sh#L353 (I'm going to add some code to tolerate this behavior as well as I'm trying to ship...) ### Link to GitHub repository https://github.com/check-spelling/pleroma/blob/spell-check-with-spelling/.github/workflows/spelling.yml ### Workflow content ```yml # this is slightly different from what's in the repository as I need some bits to make act more or less work... name: Check Spelling # Comment management is handled through a secondary job, for details see: # https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions # # `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment # (in odd cases, it might actually run just to collapse a commment, but that's fairly rare) # it needs `contents: write` in order to add a comment. # # `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment # or collapse a comment (in the case where it had previously made a comment and now no longer needs to show a comment) # it needs `pull-requests: write` in order to manipulate those comments. # Updating pull request branches is managed via comment handling. # For details, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-expect-list # # These elements work together to make it happen: # # `on.issue_comment` # This event listens to comments by users asking to update the metadata. # # `jobs.update` # This job runs in response to an issue_comment and will push a new commit # to update the spelling metadata. # # `with.experimental_apply_changes_via_bot` # Tells the action to support and generate messages that enable it # to make a commit to update the spelling metadata. # # `with.ssh_key` # In order to trigger workflows when the commit is made, you can provide a # secret (typically, a write-enabled github deploy key). # # For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key on: push: branches: - "**" tags-ignore: - "**" pull_request_target: branches: - "**" tags-ignore: - "**" types: - 'opened' - 'reopened' - 'synchronize' issue_comment: types: - 'created' jobs: spelling: name: Check Spelling permissions: contents: read pull-requests: read actions: read security-events: write outputs: followup: ${{ steps.spelling.outputs.followup }} internal_state_directory: ${{ steps.spelling.outputs.internal_state_directory }} docker_container: ${{ steps.spelling.outputs.docker_container }} runs-on: ubuntu-latest if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'" concurrency: group: spelling-${{ github.event.pull_request.number || github.ref }} # note: If you use only_check_changed_files, you do not want cancel-in-progress cancel-in-progress: true steps: - name: check-spelling id: spelling uses: check-spelling/check-spelling@prerelease with: suppress_push_for_open_pull_request: 1 checkout: true spell_check_this: check-spelling/spell-check-this@prerelease post_comment: 0 use_magic_file: 1 experimental_apply_changes_via_bot: 1 use_sarif: 1 extra_dictionary_limit: 10 extra_dictionaries: cspell:software-terms/src/software-terms.txt cspell:node/node.txt cspell:html/html.txt cspell:npm/npm.txt cspell:elixir/elixir.txt cspell:fullstack/fullstack.txt cspell:aws/aws.txt cspell:cpp/src/stdlib-cerrno.txt cspell:filetypes/filetypes.txt cspell:python/src/common/extra.txt cspell:python/src/python/python.txt cspell:css/css.txt cspell:lorem-ipsum/dictionary.txt cspell:cpp/src/ecosystem.txt cspell:django/django.txt check_extra_dictionaries: '' comment-push: name: Report (Push) # If your workflow isn't running on push, you can remove this job runs-on: ubuntu-latest needs: spelling permissions: contents: write if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push' steps: - name: comment uses: check-spelling/check-spelling@prerelease with: checkout: true spell_check_this: check-spelling/spell-check-this@prerelease task: ${{ needs.spelling.outputs.followup }} internal_state_directory: ${{ needs.spelling.outputs.internal_state_directory }} caller_container: ${{ needs.spelling.outputs.docker_container }} debug: 1 comment-pr: name: Report (PR) # If you workflow isn't running on pull_request*, you can remove this job runs-on: ubuntu-latest needs: spelling permissions: pull-requests: write if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request') steps: - name: comment uses: check-spelling/check-spelling@prerelease with: checkout: true spell_check_this: check-spelling/spell-check-this@prerelease task: ${{ needs.spelling.outputs.followup }} experimental_apply_changes_via_bot: 1 update: name: Update PR permissions: contents: write pull-requests: write actions: read runs-on: ubuntu-latest if: ${{ github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '@check-spelling-bot apply') }} concurrency: group: spelling-update-${{ github.event.issue.number }} cancel-in-progress: false steps: - name: apply spelling updates uses: check-spelling/check-spelling@prerelease with: experimental_apply_changes_via_bot: 1 checkout: true ssh_key: "${{ secrets.CHECK_SPELLING }}" ``` ### Relevant log output ```sh [Check Spelling/Report (Push) ] | + echo env: [Check Spelling/Report (Push) ] | env: [Check Spelling/Report (Push) ] | + env [Check Spelling/Report (Push) ] | + sort ... [Check Spelling/Report (Push) ] | ACT=true ... [Check Spelling/Report (Push) ] | GITHUB_ACTION_REF= [Check Spelling/Report (Push) ] | GITHUB_ACTION_REPOSITORY= ... [Check Spelling/Report (Push) ] | GITHUB_JOB=Report (Push) ``` ### Additional information I don't think #1458 is particularly relevant, although it may be adjacent. I've included `GITHUB_ACTION_REF` and `GITHUB_ACTION_REPOSITORY` which should also be set, but aren't. They're technically out of scope, and I'm in the middle of adding additional code to work around their empty values. To make the run faster, you can add: `.github/actions/spelling/only.txt`: ``` CHANGELOG.md ```
Author
Owner

@jsoref commented on GitHub (Dec 28, 2022):

Sigh

<!-- gh-comment-id:1366282300 --> @jsoref commented on GitHub (Dec 28, 2022): Sigh
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/act#757
No description provided.