act github actions 本地运行试用

安装

使用mac 系统安装

brew install  act

创建项目

  • 项目结构
├── .github
│   └── workflows
│       └── app.yaml
├── package.json
├── src
│   └── app.ts
├── tsconfig.json
└── yarn.lock

app.yaml 定义

name: CI
on: push
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v1
    - run: npm install
    - run: npm run build
  • 运行

注意因为默认使用的是github 自己的镜像服务,ghcr.io所以会很慢。。。。

 

 

  • act 支持的命令
 
Run GitHub actions locally by specifying the event name (e.g. `push`) or an action name directly.
 
Usage:
  act [event name to run]
If no event name passed, will default to on: push [flags]
 
Flags:
  -a, --actor string                     user that triggered the event (default nektos/act)
      --artifact-server-path string      Defines the path where the artifact server stores uploads and retrieves downloads from. If not specified the artifact server will not start.
      --artifact-server-port string      Defines the port where the artifact server listens (will only bind to localhost). (default 34567)
  -b, --bind                             bind working directory to container, rather than copy
      --bug-report                       Display system information for bug report
      --container-architecture string    Architecture which should be used to run containers, e.g.: linux/amd64. If not specified, will use host default architecture. Requires Docker server API Version 1.41+. Ignored on earlier Docker server platforms.
      --container-cap-add stringArray    kernel capabilities to add to the workflow containers (e.g. --container-cap-add SYS_PTRACE)
      --container-cap-drop stringArray   kernel capabilities to remove from the workflow containers (e.g. --container-cap-drop SYS_PTRACE)
      --container-daemon-socket string   Path to Docker daemon socket which will be mounted to containers (default /var/run/docker.sock)
      --defaultbranch string             the name of the main branch
      --detect-event                     Use first event type from workflow as event that triggered the workflow
  -C, --directory string                 working directory (default .)
  -n, --dryrun                           dryrun mode
      --env stringArray                  env to make available to actions with optional value (e.g. --env myenv=foo or --env myenv)
      --env-file string                  environment file to read and use as env in the containers (default .env)
  -e, --eventpath string                 path to event JSON file
      --github-instance string           GitHub instance to use. Don't use this if you are not using GitHub Enterprise Server. (default github.com)
  -g, --graph                            draw workflows
  -h, --help                             help for act
      --insecure-secrets                 NOT RECOMMENDED! Doesn't hide secrets while printing logs.
  -j, --job string                       run job
      --json                             Output logs in json format
  -l, --list                             list workflows
      --no-recurse                       Flag to disable running workflows from subdirectories of specified path in '--workflows'/'-W' flag
      --no-skip-checkout                 Do not skip actions/checkout
  -P, --platform stringArray             custom image to use per platform (e.g. -P ubuntu-18.04=nektos/act-environments-ubuntu:18.04)
      --privileged                       use privileged mode
  -p, --pull                             pull docker image(s) even if already present
  -q, --quiet                            disable logging of output from steps
      --rebuild                          rebuild local action docker image(s) even if already present
  -r, --reuse                            don't remove container(s) on successfully completed workflow(s) to maintain state between runs
      --rm                               automatically remove container(s)/volume(s) after a workflow(s) failure
  -s, --secret stringArray               secret to make available to actions with optional value (e.g. -s mysecret=foo or -s mysecret)
      --secret-file string               file with list of secrets to read from (e.g. --secret-file .secrets) (default .secrets)
      --use-gitignore                    Controls whether paths specified in .gitignore should be copied into container (default true)
      --userns string                    user namespace to use
  -v, --verbose                          verbose output
      --version                          version for act
  -w, --watch                            watch the contents of the local repo and run when files change
  -W, --workflows string                 path to workflow file(s) (default ./.github/workflows/)

说明

act 提供的命令以及功能还是很全的,很方便的工具,值得使用

参考资料

https://github.com/nektos/act