=====================ErrorInfo====================== Error response from daemon: Get “https://192\.168\.56\.102:5000/v2/“: http: server gave HTTP response to HTTPS client
FORGEJO_INSTANCE_URL=<你的代码仓平台域名,例如:http://xxx.xxx.com/> RUNNER_REGISTRATION_TOKEN=<注册密钥,例如:v2gqRjJ8R> RUNNER_NAME=<运行器名称,例如:angindem-runner> # RUNNER_LABELS 是指定的运行环境镜像 配合 run on RUNNER_LABELS=ubuntu-latest:docker://gitea/runner-images:ubuntu-latest
container: # Specifies the network to which the container will connect. # Could be host, bridge or the name of a custom network. # If it's empty, create a network automatically. network: "" # Whether to create networks with IPv6 enabled. Requires the Docker daemon to be set up accordingly. # Only takes effect if "network" is set to "". enable_ipv6: false # Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker). privileged: true# 开启特权模式(这里如果是 DinD 那么开一下比较好,如果不是开不开都无所谓) # And other options to be used when the container is started (eg, --volume /etc/ssl/certs:/etc/ssl/certs:ro). options: # The parent directory of a job's working directory. # If it's empty, /workspace will be used. workdir_parent: # Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob # You can specify multiple volumes. If the sequence is empty, no volumes can be mounted. # For example, if you only allow containers to mount the `data` volume and all the json files in `/src`, you should change the config to: # valid_volumes: # - data # - /etc/ssl/certs # If you want to allow any volume, please use the following configuration: # valid_volumes: # - '**' valid_volumes: - "/var/run/docker.sock:/var/run/docker.sock"# 挂载映射 # overrides the docker client host with the specified one. # If "-" or "", an available docker host will automatically be found. # If "automount", an available docker host will automatically be found and mounted in the job container (e.g. /var/run/docker.sock). # Otherwise the specified docker host will be used and an error will be returned if it doesn't work. docker_host: "unix:///var/run/docker.sock"# 指定使用宿主机守护进程 # Pull docker image(s) even if already present force_pull: false # Rebuild local docker image(s) even if already present force_rebuild: false
随后执行 docker compose down 然后 docker compose up -d 重启就可以了。
INFO Registering runner, arch=arm64, os=linux, version=v4.0.0. WARN Runner in user-mode. INFO Enter the Forgejo instance URL (for example, https://next.forgejo.org/): https://code.forgejo.org/ INFO Enter the runner token: 6om01axzegBu98YCpsFtda4Go2DuJe7BEepzz2F3HY INFO Enter the runner name (if set empty, use hostname: runner-host): my-forgejo-runner INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-20.04:docker://node:20-bookworm,ubuntu-18.04:docker://node:20-bookworm):
INFO Registering runner, name=my-forgejo-runner, instance=https://code.forgejo.org/, labels=[docker:docker://node:20-bullseye]. DEBU Successfully pinged the Forgejo instance server INFO Runner registered successfully.
注意:
INFO Enter the runner labels, leave blank to use the default labels (comma-separated, for example, ubuntu-20.04:docker://node:20-bookworm,ubuntu-18.04:docker://node:20-bookworm):
{ "WARNING": "This file is automatically generated by act-runner. Do not edit it manually unless you know what you are doing. Removing this file will cause act runner to re-register as a new runner.", "id": 42, "uuid": "d2ax6368-9c20-4dy0-9a5a-e09c53854zb5", "name": "my-forgejo-runner", "token": "864e6019009e1635d98adf3935b305d32494d42a", "address": "https://code.forgejo.org/", "labels": ["docker:docker://node:20-bullseye"] }
# Example configuration file, it's safe to copy this as the default config file without any modification.
# You don't have to copy this file to your instance, # just run `forgejo-runner generate-config > config.yaml` to generate a config file.
log: # The level of logging, can be trace, debug, info, warn, error, fatal level: info # The level of logging for jobs, can be trace, debug, info, earn, error, fatal job_level: info
runner: # Where to store the registration result. file: .runner # Execute how many tasks concurrently at the same time. capacity: 1 # Extra environment variables to run jobs. envs: A_TEST_ENV_NAME_1: a_test_env_value_1 A_TEST_ENV_NAME_2: a_test_env_value_2 # Extra environment variables to run jobs from a file. # It will be ignored if it's empty or the file doesn't exist. env_file: .env # The timeout for a job to be finished. # Please note that the Forgejo instance also has a timeout (3h by default) for the job. # So the job could be stopped by the Forgejo instance if it's timeout is shorter than this. timeout: 3h # The timeout for the runner to wait for running jobs to finish when # shutting down because a TERM or INT signal has been received. Any # running jobs that haven't finished after this timeout will be # cancelled. # If unset or zero the jobs will be cancelled immediately. shutdown_timeout: 3h # Whether skip verifying the TLS certificate of the instance. insecure: false # The timeout for fetching the job from the Forgejo instance. fetch_timeout: 5s # The interval for fetching the job from the Forgejo instance. fetch_interval: 2s # The interval for reporting the job status and logs to the Forgejo instance. report_interval: 1s # The labels of a runner are used to determine which jobs the runner can run, and how to run them. # Like: ["macos-arm64:host", "ubuntu-latest:docker://node:20-bookworm", "ubuntu-22.04:docker://node:20-bookworm"] # If it's empty when registering, it will ask for inputting labels. # If it's empty when executing the `daemon`, it will use labels in the `.runner` file. labels: []
cache: # # When enabled, workflows will be given the ACTIONS_CACHE_URL environment variable # used by the https://code.forgejo.org/actions/cache action. The server at this # URL must implement a compliant REST API and it must also be reachable from # the container or host running the workflows. # # See also https://forgejo.org/docs/next/user/actions/advanced-features/#cache # # When it is not enabled, none of the following options apply. # # It works as follows: # # - the workflow is given a one time use ACTIONS_CACHE_URL # - a cache proxy listens to ACTIONS_CACHE_URL # - the cache proxy securely communicates with the cache server using # a shared secret # enabled: true # ####################################################################### # # Only used for the internal cache server. # # If external_server is not set, the Forgejo runner will spawn a # cache server that will be used by the cache proxy. # ####################################################################### # # The port bound by the internal cache server. # 0 means to use a random available port. # port: 0 # # The directory to store the cache data. # # If empty, the cache data will be stored in $HOME/.cache/actcache. # dir: "" # ####################################################################### # # Only used for the external cache server. # # If external_server is set, the internal cache server is not # spawned. # ####################################################################### # # The URL of the cache server. The URL should generally end with # "/". The cache proxy will forward requests to the external # server. The requests are authenticated with the "secret" that is # shared with the external server. # external_server: "" # ####################################################################### # # Common to the internal and external cache server # ####################################################################### # # The shared cache secret used to secure the communications between # the cache proxy and the cache server. # # If empty, it will be generated to a new secret automatically when # the server starts and it will stay the same until it restarts. # # Every time the secret is modified, all cache entries that were # created with it are invalidated. In order to ensure that the cache # content is reused when the runner restarts, this secret must be # set, for instance with the output of openssl rand -hex 40. # secret: "" # # The IP or hostname (195.84.20.30 or example.com) to use when constructing # ACTIONS_CACHE_URL which is the URL of the cache proxy. # # If empty it will be detected automatically. # # If the containers or host running the workflows reside on a # different network than the Forgejo runner (for instance when the # docker server used to create containers is not running on the same # host as the Forgejo runner), it may be impossible to figure that # out automatically. In that case you can specifify which IP or # hostname to use to reach the internal cache server created by the # Forgejo runner. # host: "" # # The port bound by the internal cache proxy. # 0 means to use a random available port. # proxy_port: 0 # # Overrides the ACTIONS_CACHE_URL passed to workflow # containers. This should only be used if the runner host is not # reachable from the workflow containers, and requires further # setup. # actions_cache_url_override: ""
container: # Specifies the network to which the container will connect. # Could be host, bridge or the name of a custom network. # If it's empty, create a network automatically. network: "" # Whether to create networks with IPv6 enabled. Requires the Docker daemon to be set up accordingly. # Only takes effect if "network" is set to "". enable_ipv6: false # Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker). privileged: false # And other options to be used when the container is started (eg, --volume /etc/ssl/certs:/etc/ssl/certs:ro). options: # The parent directory of a job's working directory. # If it's empty, /workspace will be used. workdir_parent: # Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob # You can specify multiple volumes. If the sequence is empty, no volumes can be mounted. # For example, if you only allow containers to mount the `data` volume and all the json files in `/src`, you should change the config to: # valid_volumes: # - data # - /etc/ssl/certs # If you want to allow any volume, please use the following configuration: # valid_volumes: # - '**' valid_volumes: [] # overrides the docker client host with the specified one. # If "-" or "", an available docker host will automatically be found. # If "automount", an available docker host will automatically be found and mounted in the job container (e.g. /var/run/docker.sock). # Otherwise the specified docker host will be used and an error will be returned if it doesn't work. docker_host: "-" # Pull docker image(s) even if already present force_pull: false # Rebuild local docker image(s) even if already present force_rebuild: false
host: # The parent directory of a job's working directory. # If it's empty, $HOME/.cache/act/ will be used. workdir_parent:
on: [push] jobs: test: runs-on: docker steps: - run: echo All good!
此文件描述一个工作流。工作流将触发 push 事件。工作流包含一个 job ,称为 test . .这项工作将 run on 带有 docker 标签的runner. .如果runner(从第2步开始)有不同的标签,应该在这里指定它。因 test 工作有一个 steps ,这是简单地说 run 命令 echo All good!
代码校验
代码校验 操作是在 CI 工作流中执行某些操作的可重用过程。在许多方面,动作与函数相似。为了将存储库的内容导入工作流,我们将使用 actions/checkout 行动。操作只是一个存储库,里面有一些特殊文件。有关如何使用它们以及如何制作自己的操作指南的更多信息, 请查看操作指南。
runs: using: 'composite' steps: - name: Print message run: echo "$MESSAGE" shell: bash env: MESSAGE: ${{ inputs.message }} # This also needs to be defined in the inputs section above.
- name: Some other step ...
复合操作可以像正常工作流一样使用其他操作。您还可以编写脚本,将它们提交到操作存储库,然后在操作中使用它们,并用 run 钥匙。