Update images, fix extrapath (#723)

* fix: typo

* fix: remove debug for git references

it generates a massive amount of logs

* feat: read values from env

allows to test act on GHA when it's not a main repo

* fix: merge extrapath with PATH

* fix(tests): add additional shells for testing

* fix(image): update images

pin node to major version only, current node version: 12.22.1
replace most images with `node:12-buster-slim` to prevent
errors on macOS runner due to DockerHub pull limit
replace ocaml image

Co-authored-by: Casey Lee <cplee@nektos.com>
This commit is contained in:
Ryan (hackercat)
2021-06-10 23:12:05 +00:00
committed by GitHub
parent a9295c9db2
commit a9fe038347
23 changed files with 121 additions and 68 deletions

View File

@@ -308,13 +308,28 @@ func TestGetGitHubContext(t *testing.T) {
log.Debugf("%v", ghc)
actor := "nektos/act"
if a := os.Getenv("ACT_ACTOR"); a != "" {
actor = a
}
repo := "nektos/act"
if r := os.Getenv("ACT_REPOSITORY"); r != "" {
repo = r
}
owner := "nektos"
if o := os.Getenv("ACT_OWNER"); o != "" {
owner = o
}
assert.Equal(t, ghc.RunID, "1")
assert.Equal(t, ghc.Workspace, rc.Config.containerPath(cwd))
assert.Equal(t, ghc.RunNumber, "1")
assert.Equal(t, ghc.RetentionDays, "0")
assert.Equal(t, ghc.Actor, "nektos/act")
assert.Equal(t, ghc.Repository, "nektos/act")
assert.Equal(t, ghc.RepositoryOwner, "nektos")
assert.Equal(t, ghc.Actor, actor)
assert.Equal(t, ghc.Repository, repo)
assert.Equal(t, ghc.RepositoryOwner, owner)
assert.Equal(t, ghc.RunnerPerflog, "/dev/null")
assert.Equal(t, ghc.EventPath, ActPath+"/workflow/event.json")
assert.Equal(t, ghc.Token, rc.Config.Secrets["GITHUB_TOKEN"])

View File

@@ -16,6 +16,14 @@ import (
"github.com/nektos/act/pkg/model"
)
var baseImage string = "node:12-buster-slim"
func init() {
if p := os.Getenv("ACT_TEST_IMAGE"); p != "" {
baseImage = p
}
}
func TestGraphEvent(t *testing.T) {
planner, err := model.NewWorkflowPlanner("testdata/basic", true)
assert.Nil(t, err)
@@ -81,7 +89,7 @@ func TestRunEvent(t *testing.T) {
}
platforms := map[string]string{
"ubuntu-latest": "node:12.20.1-buster-slim",
"ubuntu-latest": baseImage,
}
tables := []TestJobFileInfo{
@@ -89,8 +97,10 @@ func TestRunEvent(t *testing.T) {
{"testdata", "fail", "push", "exit with `FAILURE`: 1", platforms, ""},
{"testdata", "runs-on", "push", "", platforms, ""},
{"testdata", "checkout", "push", "", platforms, ""},
// Pwsh is not available in default worker (yet) so we use a separate image for testing
{"testdata", "powershell", "push", "", map[string]string{"ubuntu-latest": "ghcr.io/justingrote/act-pwsh:latest"}, ""},
{"testdata", "shells/pwsh", "push", "", map[string]string{"ubuntu-latest": "ghcr.io/justingrote/act-pwsh:latest"}, ""}, // custom image with pwsh
{"testdata", "shells/bash", "push", "", platforms, ""},
{"testdata", "shells/python", "push", "", map[string]string{"ubuntu-latest": "node:12-buster"}, ""}, // slim doesn't have python
{"testdata", "shells/sh", "push", "", platforms, ""},
{"testdata", "job-container", "push", "", platforms, ""},
{"testdata", "job-container-non-root", "push", "", platforms, ""},
{"testdata", "uses-docker-url", "push", "", platforms, ""},
@@ -131,7 +141,7 @@ func TestRunEventSecrets(t *testing.T) {
ctx := context.Background()
platforms := map[string]string{
"ubuntu-latest": "node:12.20.1-buster-slim",
"ubuntu-latest": baseImage,
}
workflowPath := "secrets"
@@ -172,7 +182,7 @@ func TestRunEventPullRequest(t *testing.T) {
ctx := context.Background()
platforms := map[string]string{
"ubuntu-latest": "node:12.20.1-buster-slim",
"ubuntu-latest": baseImage,
}
workflowPath := "pull-request"

View File

@@ -125,9 +125,13 @@ func (sc *StepContext) mergeEnv() map[string]string {
env = mergeMaps(rc.GetEnv(), step.GetEnv())
}
env["PATH"] = `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`
if (rc.ExtraPath != nil) && (len(rc.ExtraPath) > 0) {
if env["PATH"] == "" {
env["PATH"] = `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin`
}
if rc.ExtraPath != nil && len(rc.ExtraPath) > 0 {
p := env["PATH"]
env["PATH"] = strings.Join(rc.ExtraPath, `:`)
env["PATH"] += `:` + p
}
sc.Env = rc.withGithubEnv(env)

View File

@@ -9,7 +9,7 @@ import (
func TestStepContextExecutor(t *testing.T) {
platforms := map[string]string{
"ubuntu-latest": "node:12.20.1-buster-slim",
"ubuntu-latest": baseImage,
}
tables := []TestJobFileInfo{
{"testdata", "uses-and-run-in-one-step", "push", "Invalid run/uses syntax for job:test step:Test", platforms, ""},

View File

@@ -1,5 +1,5 @@
# Container image that runs your code
FROM alpine:3.13
FROM node:12-buster-slim
# Copies your code file from your action repository to the filesystem path `/` of the container
COPY entrypoint.sh /entrypoint.sh

View File

@@ -8,9 +8,8 @@ inputs:
default: World
runs:
using: docker
#image: docker://alpine:3.13
image: docker://node:12-alpine
image: docker://node:12-buster-slim
env:
TEST: enabled
args:
- env
args:
- env

View File

@@ -10,12 +10,12 @@ jobs:
steps:
- run: echo ${{ env.TEST }} | grep value
- run: env
- uses: docker://alpine:3.13
- uses: docker://node:12-buster-slim
with:
somekey: ${{ env.TEST }}
args: echo ${INPUT_SOMEKEY} | grep somevalue
- run: ls
- run: echo 'hello world'
- run: echo 'hello world'
- run: echo ${GITHUB_SHA} >> $(dirname "${GITHUB_WORKSPACE}")/sha.txt
- run: cat $(dirname "${GITHUB_WORKSPACE}")/sha.txt | grep ${GITHUB_SHA}
build:
@@ -29,10 +29,10 @@ jobs:
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: docker://ubuntu:18.04
- uses: docker://node:12-buster-slim
with:
args: env
- uses: docker://ubuntu:18.04
- uses: docker://node:12-buster-slim
with:
entrypoint: /bin/echo
args: ${{github.event_name}}

View File

@@ -14,8 +14,8 @@ jobs:
id: set_output
run: echo "::set-output name=zoo::zar"
#- run: echo "::add-path::/zip"
#- run: echo $PATH | grep /zip
- run: echo "::add-path::/zip"
- run: echo $PATH | grep /zip
- name: TEST conditional
if: steps.set_output.outputs.zoo

View File

@@ -4,8 +4,8 @@ on: push
jobs:
build:
runs-on: ubuntu-latest
container:
image: node:12.20.1-buster
container:
image: node:12-buster-slim
env:
TEST_ENV: test-value
steps:

View File

@@ -4,7 +4,7 @@ on: push
jobs:
test:
runs-on: ubuntu-latest
container:
image: ocaml/opam2:debian-9-opam
container:
image: ghcr.io/catthehacker/ubuntu:runner-latest # image with user 'runner:runner' built on tag 'act-latest'
steps:
- run: echo PASS

View File

@@ -4,8 +4,8 @@ on: push
jobs:
test:
runs-on: ubuntu-latest
container:
image: node:12.20.1-buster
container:
image: node:12-buster-slim
env:
TEST_ENV: test-value
steps:
@@ -13,7 +13,7 @@ jobs:
test2:
runs-on: ubuntu-latest
container: node:12.20.1-buster
container: node:12-buster-slim
steps:
- run: echo ${TEST_ENV} | grep test-value
env:

View File

@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: docker://ubuntu:18.04
- uses: docker://node:12-buster-slim
with:
args: echo ${GITHUB_REF} | grep nektos/act
- uses: ./actions/docker-url

View File

@@ -0,0 +1,10 @@
on: push
jobs:
check:
runs-on: ubuntu-latest
steps:
- shell: bash
run: |
if [[ -n "$PATH" ]] ; then
echo "I'm Bash!"
fi

View File

@@ -1,12 +1,8 @@
name: powershell
on: push
env:
TEST: value
jobs:
check:
runs-on: ubuntu-latest
steps:
- shell: pwsh
run: |
echo "hello test"
$PSVersionTable

View File

@@ -0,0 +1,9 @@
on: push
jobs:
check:
runs-on: ubuntu-latest
steps:
- shell: python
run: |
import platform
print(platform.python_version())

10
pkg/runner/testdata/shells/sh/push.yml vendored Normal file
View File

@@ -0,0 +1,10 @@
on: push
jobs:
check:
runs-on: ubuntu-latest
steps:
- shell: sh
run: |
if [ -n "$PATH" ] ; then
echo "I'm sh!"
fi

View File

@@ -5,7 +5,7 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: docker://alpine:3.13
with:
somekey: somevalue
args: echo ${INPUT_SOMEKEY} | grep somevalue
- uses: docker://node:12-buster-slim
with:
somekey: somevalue
args: echo ${INPUT_SOMEKEY} | grep somevalue