Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package forgejo-runner for openSUSE:Factory checked in at 2025-08-12 17:04:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/forgejo-runner (Old) and /work/SRC/openSUSE:Factory/.forgejo-runner.new.1085 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "forgejo-runner" Tue Aug 12 17:04:10 2025 rev:23 rq:1298820 version:9.0.3 Changes: -------- --- /work/SRC/openSUSE:Factory/forgejo-runner/forgejo-runner.changes 2025-08-02 00:42:05.895409684 +0200 +++ /work/SRC/openSUSE:Factory/.forgejo-runner.new.1085/forgejo-runner.changes 2025-08-12 17:05:20.605185772 +0200 @@ -1,0 +2,12 @@ +Mon Aug 11 11:51:33 UTC 2025 - Richard Rahl <rra...@opensuse.org> + +- update to version 9.0.3: + * feat: --health-* options are allowed in job.<id>.services.<id>.options + * fix: log the URL of the action when it fails schema validation + * fix: lingering services/volumes/networks after jobs if cleanup takes >1min +- update to version 9.0.2: + * PR: feat: use cache-{from,to}: type=gha in the docker/build-push-action example + * PR: feat: add an LXC based example of docker/build-push-action usage + * PR: fix: vars context is allowed in default values of action inputs + +------------------------------------------------------------------- Old: ---- forgejo-runner-9.0.1.obscpio New: ---- forgejo-runner-9.0.3.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ forgejo-runner.spec ++++++ --- /var/tmp/diff_new_pack.VrUkia/_old 2025-08-12 17:05:22.185251845 +0200 +++ /var/tmp/diff_new_pack.VrUkia/_new 2025-08-12 17:05:22.185251845 +0200 @@ -1,7 +1,7 @@ # # spec file for package forgejo-runner # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %define services %{name}.service Name: forgejo-runner -Version: 9.0.1 +Version: 9.0.3 Release: 0 Summary: Daemon that connects to a Forgejo instance and runs CI jobs License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.VrUkia/_old 2025-08-12 17:05:22.233253853 +0200 +++ /var/tmp/diff_new_pack.VrUkia/_new 2025-08-12 17:05:22.237254020 +0200 @@ -2,7 +2,7 @@ <service name="obs_scm" mode="manual"> <param name="url">https://code.forgejo.org/forgejo/runner</param> <param name="scm">git</param> - <param name="revision">refs/tags/v9.0.1</param> + <param name="revision">refs/tags/v9.0.3</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.VrUkia/_old 2025-08-12 17:05:22.289256195 +0200 +++ /var/tmp/diff_new_pack.VrUkia/_new 2025-08-12 17:05:22.313257198 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://code.forgejo.org/forgejo/runner</param> - <param name="changesrevision">ec99579451b7b44cfd2ad01e48a006cd903dedf7</param></service></servicedata> + <param name="changesrevision">8b7e126c1c099688530d37063239d1c999e4c9d4</param></service></servicedata> (No newline at EOF) ++++++ forgejo-runner-9.0.1.obscpio -> forgejo-runner-9.0.3.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/act.yml new/forgejo-runner-9.0.3/.forgejo/workflows/act.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/act.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/act.yml 2025-08-04 15:20:22.000000000 +0200 @@ -13,6 +13,7 @@ jobs: unit: runs-on: docker + if: vars.ROLE == 'forgejo-coding' container: image: 'code.forgejo.org/oci/node:22-bookworm' steps: @@ -58,6 +59,7 @@ integration: runs-on: lxc-bookworm + if: vars.ROLE == 'forgejo-coding' needs: [unit] steps: - uses: https://code.forgejo.org/actions/checkout@v4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/build-release-integration.yml new/forgejo-runner-9.0.3/.forgejo/workflows/build-release-integration.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/build-release-integration.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/build-release-integration.yml 2025-08-04 15:20:22.000000000 +0200 @@ -21,7 +21,7 @@ jobs: release-simulation: runs-on: lxc-bookworm - if: forge.repository_owner != 'forgejo-integration' && forge.repository_owner != 'forgejo-release' + if: vars.ROLE == 'forgejo-coding' steps: - uses: actions/checkout@v4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/build-release.yml new/forgejo-runner-9.0.3/.forgejo/workflows/build-release.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/build-release.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/build-release.yml 2025-08-04 15:20:22.000000000 +0200 @@ -21,7 +21,7 @@ release: runs-on: lxc-bookworm # root is used for testing, allow it - if: secrets.ROLE == 'forgejo-integration' || forge.repository_owner == 'root' + if: vars.ROLE == 'forgejo-integration' || forge.repository_owner == 'root' steps: - uses: actions/checkout@v4 @@ -60,20 +60,9 @@ version=${FORGEJO_REF_NAME##*v} echo "value=$version" >> "$FORGEJO_OUTPUT" - - name: release notes - id: release-notes - run: | - anchor=${{ steps.tag-version.outputs.value }} - anchor=${anchor//./-} - cat >> "$FORGEJO_OUTPUT" <<EOF - value<<ENDVAR - See https://code.forgejo.org/forgejo/runner/src/branch/main/RELEASE-NOTES.md#$anchor - ENDVAR - EOF - - name: build without TOKEN if: ${{ secrets.TOKEN == '' }} - uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.4.0 + uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.4.1 with: forgejo: "${{ env.FORGEJO_SERVER_URL }}" owner: "${{ env.FORGEJO_REPOSITORY_OWNER }}" @@ -83,14 +72,13 @@ release-version: "${{ steps.tag-version.outputs.value }}" token: ${{ steps.token.outputs.value }} platforms: linux/amd64,linux/arm64 - release-notes: "${{ steps.release-notes.outputs.value }}" binary-name: forgejo-runner binary-path: /bin/forgejo-runner verbose: ${{ steps.verbose.outputs.value }} - name: build with TOKEN if: ${{ secrets.TOKEN != '' }} - uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.4.0 + uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.4.1 with: forgejo: "${{ env.FORGEJO_SERVER_URL }}" owner: "${{ env.FORGEJO_REPOSITORY_OWNER }}" @@ -100,7 +88,6 @@ release-version: "${{ steps.tag-version.outputs.value }}" token: "${{ secrets.TOKEN }}" platforms: linux/amd64,linux/arm64 - release-notes: "${{ steps.release-notes.outputs.value }}" binary-name: forgejo-runner binary-path: /bin/forgejo-runner verbose: ${{ steps.verbose.outputs.value }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/docker-build-push-action-in-lxc.yml new/forgejo-runner-9.0.3/.forgejo/workflows/docker-build-push-action-in-lxc.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/docker-build-push-action-in-lxc.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/docker-build-push-action-in-lxc.yml 2025-08-04 15:20:22.000000000 +0200 @@ -0,0 +1,85 @@ +# +# Example that requires a Forgejo runner with an [LXC backend](https://forgejo.org/docs/latest/admin/actions/runner-installation/#setting-up-the-container-environment). +# +# - Start a Forgejo instance to be used as a container registry +# - Build a container image using the [docker/build-push-action](https://code.forgejo.org/docker/build-push-action) action +# - Push the image to the Forgejo instance +# - Retrieve the image +# +# Runs of this workflow can be seen in [the Forgejo runner](https://code.forgejo.org/forgejo/runner/actions?workflow=docker-build-push-action-in-lxc.yml) logs. +# +name: example +on: + push: + branches: + - 'main' + pull_request: + paths: + - examples/docker-build-push-action/** + - .forgejo/workflows/docker-build-push-action-in-lxc.yml + +enable-email-notifications: true + +env: + FORGEJO_VERSION: 11.0.3 # renovate: datasource=docker depName=code.forgejo.org/forgejo/forgejo + FORGEJO_USER: root + FORGEJO_PASSWORD: admin1234 + +jobs: + docker-build-push-action-in-lxc: + if: vars.ROLE == 'forgejo-coding' + runs-on: lxc-bookworm + + steps: + + - name: install Forgejo so it can be used as a container registry + id: registry + uses: https://data.forgejo.org/actions/setup-forgejo@v3.0.1 + with: + user: ${{ env.FORGEJO_USER }} + password: ${{ env.FORGEJO_PASSWORD }} + binary: https://code.forgejo.org/forgejo/forgejo/releases/download/v${{ env.FORGEJO_VERSION }}/forgejo-${{ env.FORGEJO_VERSION }}-linux-amd64 + lxc-ip-prefix: 10.0.9 + + - name: enable insecure / http uploads to the Forgejo registry + run: |- + set -x + # the docker daemon was implicitly installed when Forgejo was + # installed in the previous step. But it will refuse to connect + # to an insecure / http registry by default and must be told + # otherwise + cat > /etc/docker/daemon.json <<EOF + { + "insecure-registries" : ["${{ steps.registry.outputs.host-port }}"] + } + EOF + systemctl restart docker + + - uses: https://data.forgejo.org/docker/setup-qemu-action@v3 + - uses: https://data.forgejo.org/docker/setup-buildx-action@v2 + with: + # insecure / http connections to the registry are allowed + config-inline: | + [registry."${{ steps.registry.outputs.host-port }}"] + http = true + + - name: login to the Forgejo registry + uses: https://data.forgejo.org/docker/login-action@v3 + with: + registry: ${{ steps.registry.outputs.host-port }} + username: ${{ env.FORGEJO_USER }} + password: ${{ env.FORGEJO_PASSWORD }} + + - name: build and push to the Forgejo registry + uses: https://data.forgejo.org/docker/build-push-action@v5 + with: + context: examples/docker-build-push-action + push: true + tags: ${{ steps.registry.outputs.host-port }}/root/testimage:latest + cache-from: type=gha,scope=docker-build-push-action-in-lxc + cache-to: type=gha,scope=docker-build-push-action-in-lxc + + - name: verify the image can be read from the Forgejo registry + run: | + set -x + docker pull ${{ steps.registry.outputs.host-port }}/root/testimage:latest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/example-docker-compose.yml new/forgejo-runner-9.0.3/.forgejo/workflows/example-docker-compose.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/example-docker-compose.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/example-docker-compose.yml 2025-08-04 15:20:22.000000000 +0200 @@ -12,7 +12,7 @@ jobs: example-docker-compose: - if: forge.repository_owner != 'forgejo-integration' && forge.repository_owner != 'forgejo-experimental' && forge.repository_owner != 'forgejo-release' + if: vars.ROLE == 'forgejo-coding' runs-on: lxc-bookworm steps: - uses: actions/checkout@v4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/example-lxc-systemd.yml new/forgejo-runner-9.0.3/.forgejo/workflows/example-lxc-systemd.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/example-lxc-systemd.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/example-lxc-systemd.yml 2025-08-04 15:20:22.000000000 +0200 @@ -17,7 +17,7 @@ jobs: example-lxc-systemd: - if: forge.repository_owner != 'forgejo-integration' && forge.repository_owner != 'forgejo-experimental' && forge.repository_owner != 'forgejo-release' + if: vars.ROLE == 'forgejo-coding' runs-on: lxc-bookworm steps: - uses: https://data.forgejo.org/actions/checkout@v4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/publish-release.yml new/forgejo-runner-9.0.3/.forgejo/workflows/publish-release.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/publish-release.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/publish-release.yml 2025-08-04 15:20:22.000000000 +0200 @@ -8,6 +8,7 @@ # vars.FROM_OWNER: forgejo-integration # vars.TO_OWNER: forgejo # vars.DOER: release-team +# vars.ROLE: forgejo-release # secrets.TOKEN: <generated from code.forgejo.org/release-team> # secrets.GPG_PRIVATE_KEY: <XYZ> # secrets.GPG_PASSPHRASE: <ABC> @@ -24,19 +25,23 @@ jobs: publish: runs-on: lxc-bookworm - if: vars.DOER != '' && vars.FORGEJO != '' && vars.TO_OWNER != '' && vars.FROM_OWNER != '' && secrets.TOKEN != '' + if: vars.ROLE == 'forgejo-release' steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: copy & sign - uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.4.0 + uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.4.1 with: from-forgejo: ${{ vars.FORGEJO }} to-forgejo: ${{ vars.FORGEJO }} from-owner: ${{ vars.FROM_OWNER }} to-owner: ${{ vars.TO_OWNER }} repo: "runner" - release-notes: "See also https://code.forgejo.org/forgejo/runner/src/branch/main/RELEASE-NOTES.md#{ANCHOR}" + release-notes: | + Release Notes + + --- + release-notes-assistant: true ref-name: ${{ forge.ref_name }} sha: ${{ forge.sha }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/release-notes-assistant.yml new/forgejo-runner-9.0.3/.forgejo/workflows/release-notes-assistant.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/release-notes-assistant.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/release-notes-assistant.yml 2025-08-04 15:20:22.000000000 +0200 @@ -11,7 +11,7 @@ - labeled env: - RNA_VERSION: v1.3.5 # renovate: datasource=forgejo-releases depName=forgejo/release-notes-assistant registryUrl=https://code.forgejo.org + RNA_VERSION: v1.4.0 # renovate: datasource=forgejo-releases depName=forgejo/release-notes-assistant registryUrl=https://code.forgejo.org jobs: release-notes: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/.forgejo/workflows/test.yml new/forgejo-runner-9.0.3/.forgejo/workflows/test.yml --- old/forgejo-runner-9.0.1/.forgejo/workflows/test.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/.forgejo/workflows/test.yml 2025-08-04 15:20:22.000000000 +0200 @@ -19,14 +19,14 @@ jobs: build-and-tests: name: build and test - if: forge.repository_owner != 'forgejo-integration' && forge.repository_owner != 'forgejo-experimental' && forge.repository_owner != 'forgejo-release' + if: vars.ROLE == 'forgejo-coding' runs-on: docker container: image: 'code.forgejo.org/oci/ci:1' services: forgejo: - image: codeberg.org/forgejo/forgejo:11 + image: code.forgejo.org/forgejo/forgejo:11 env: FORGEJO__security__INSTALL_LOCK: "true" FORGEJO__log__LEVEL: "debug" @@ -76,7 +76,7 @@ runner-exec-tests: needs: [build-and-tests] name: runner exec tests - if: forge.repository_owner != 'forgejo-integration' && forge.repository_owner != 'forgejo-experimental' && forge.repository_owner != 'forgejo-release' + if: vars.ROLE == 'forgejo-coding' runs-on: lxc-bookworm steps: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/Makefile new/forgejo-runner-9.0.3/Makefile --- old/forgejo-runner-9.0.1/Makefile 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/Makefile 2025-08-04 15:20:22.000000000 +0200 @@ -14,7 +14,7 @@ GOFILES := $(shell find . -type f -name "*.go" -o -name "go.mod" ! -name "generated.*") MOCKERY_PACKAGE ?= github.com/vektra/mockery/v2@v2.53.4 # renovate: datasource=go -GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.3.0 # renovate: datasource=go +GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.3.1 # renovate: datasource=go DOCKER_IMAGE ?= gitea/act_runner DOCKER_TAG ?= nightly diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/README.md new/forgejo-runner-9.0.3/README.md --- old/forgejo-runner-9.0.1/README.md 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/README.md 2025-08-04 15:20:22.000000000 +0200 @@ -10,6 +10,14 @@ Sensitive security-related issues should be reported to [secur...@forgejo.org](mailto:secur...@forgejo.org) using [encryption](https://keyoxide.org/secur...@forgejo.org). + +## License + +The Forgejo runner source code is distributed under the terms of the following licenses: + +- [MIT](LICENSE) for the most part. +- [Apache 2](act/container/DOCKER_LICENSE) for parts found in the [act/container](act/container) directory. + # Architectures & OS The Forgejo runner is supported and tested on `amd64` and `arm64` ([binaries](https://code.forgejo.org/forgejo/runner/releases) and [containers](https://code.forgejo.org/forgejo/-/packages/container/runner/versions)) on Operating Systems based on the Linux kernel. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/container/docker_run.go new/forgejo-runner-9.0.3/act/container/docker_run.go --- old/forgejo-runner-9.0.1/act/container/docker_run.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/container/docker_run.go 2025-08-04 15:20:22.000000000 +0200 @@ -412,6 +412,11 @@ logger := common.Logger(ctx) + if jobConfig.Config.Healthcheck != nil && len(jobConfig.Config.Healthcheck.Test) > 0 { + logger.Debugf("--health-* options %+v", jobConfig.Config.Healthcheck) + config.Healthcheck = jobConfig.Config.Healthcheck + } + if len(jobConfig.Config.Volumes) > 0 { logger.Debugf("--volume options (except bind) %v", jobConfig.Config.Volumes) err = mergo.Merge(&config.Volumes, jobConfig.Config.Volumes, mergo.WithOverride, mergo.WithAppendSlice) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/container/docker_run_test.go new/forgejo-runner-9.0.3/act/container/docker_run_test.go --- old/forgejo-runner-9.0.1/act/container/docker_run_test.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/container/docker_run_test.go 2025-08-04 15:20:22.000000000 +0200 @@ -338,11 +338,18 @@ hostConfig *container.HostConfig }{ { - name: "ok", - options: "--volume /frob:/nitz --volume somevolume --tmpfs /tmp:exec,noatime --hostname alternatehost", + name: "Ok", + options: `--volume /frob:/nitz --volume somevolume --tmpfs /tmp:exec,noatime --hostname alternatehost --health-cmd "healthz one" --health-interval 10s --health-timeout 5s --health-retries 3 --health-start-period 30s`, config: &container.Config{ Volumes: map[string]struct{}{"somevolume": {}}, Hostname: "alternatehost", + Healthcheck: &container.HealthConfig{ + Test: []string{"CMD-SHELL", "healthz one"}, + Interval: 10 * time.Second, + Timeout: 5 * time.Second, + StartPeriod: 30 * time.Second, + Retries: 3, + }, }, hostConfig: &container.HostConfig{ Binds: []string{"/frob:/nitz"}, @@ -350,7 +357,17 @@ }, }, { - name: "ignore", + name: "DisableHealthCheck", + options: `--no-healthcheck`, + config: &container.Config{ + Healthcheck: &container.HealthConfig{ + Test: []string{"NONE"}, + }, + }, + hostConfig: &container.HostConfig{}, + }, + { + name: "Ignore", options: "--pid=host --device=/dev/sda", config: &container.Config{}, hostConfig: &container.HostConfig{}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/action.go new/forgejo-runner-9.0.3/act/runner/action.go --- old/forgejo-runner-9.0.1/act/runner/action.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/action.go 2025-08-04 15:20:22.000000000 +0200 @@ -45,7 +45,7 @@ allErrors := []error{} addError := func(fileName string, err error) { if err != nil { - allErrors = append(allErrors, fmt.Errorf("failed to read '%s' from action '%s' with path '%s' of step %w", fileName, step.String(), actionPath, err)) + allErrors = append(allErrors, fmt.Errorf("failed to read '%s' from action '%s' with path '%s': %w", fileName, step.String(), actionPath, err)) } else { // One successful read, clear error state allErrors = nil @@ -112,6 +112,9 @@ defer closer.Close() action, err := model.ReadAction(reader) + if err != nil { + err = fmt.Errorf("failed to validate action.y*ml from action '%s' with path '%s': %v", step.String(), actionPath, err) + } logger.Debugf("Read action %v from '%s'", action, "Unknown") return action, err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/job_executor.go new/forgejo-runner-9.0.3/act/runner/job_executor.go --- old/forgejo-runner-9.0.1/act/runner/job_executor.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/job_executor.go 2025-08-04 15:20:22.000000000 +0200 @@ -20,6 +20,8 @@ result(result string) } +const cleanupTimeout = 30 * time.Minute + func newJobExecutor(info jobInfo, sf stepFactory, rc *RunContext) common.Executor { steps := make([]common.Executor, 0) preSteps := make([]common.Executor, 0) @@ -109,16 +111,23 @@ postExecutor = postExecutor.Finally(func(ctx context.Context) error { jobError := common.JobError(ctx) + + // Fresh context to ensure job result output works even if prev. context was a cancelled job + ctx, cancel := context.WithTimeout(common.WithLogger(context.Background(), common.Logger(ctx)), time.Minute) + defer cancel() + setJobResult(ctx, info, rc, jobError == nil) + setJobOutputs(ctx, rc) + var err error if rc.Config.AutoRemove || jobError == nil { - // always allow 1 min for stopping and removing the runner, even if we were cancelled - ctx, cancel := context.WithTimeout(common.WithLogger(context.Background(), common.Logger(ctx)), time.Minute) + // Separate timeout for cleanup tasks; logger is cleared so that cleanup logs go to runner, not job + ctx, cancel := context.WithTimeout(context.Background(), cleanupTimeout) defer cancel() logger := common.Logger(ctx) - logger.Infof("Cleaning up container for job %s", rc.JobName) + logger.Debugf("Cleaning up container for job %s", rc.jobContainerName()) if err = info.stopContainer()(ctx); err != nil { - logger.Errorf("Error while stop job container: %v", err) + logger.Errorf("Error while stop job container %s: %v", rc.jobContainerName(), err) } if !rc.IsHostEnv(ctx) && rc.Config.ContainerNetworkMode == "" { @@ -127,15 +136,12 @@ // it means that the network to which containers are connecting is created by `act_runner`, // so, we should remove the network at last. networkName, _ := rc.networkName() - logger.Infof("Cleaning up network for job %s, and network name is: %s", rc.JobName, networkName) + logger.Debugf("Cleaning up network %s for job %s", networkName, rc.jobContainerName()) if err := container.NewDockerNetworkRemoveExecutor(networkName)(ctx); err != nil { - logger.Errorf("Error while cleaning network: %v", err) + logger.Errorf("Error while cleaning network %s: %v", networkName, err) } } } - setJobResult(ctx, info, rc, jobError == nil) - setJobOutputs(ctx, rc) - return err }) @@ -149,7 +155,7 @@ if ctx.Err() == context.Canceled { // in case of an aborted run, we still should execute the // post steps to allow cleanup. - ctx, cancel = context.WithTimeout(common.WithLogger(context.Background(), common.Logger(ctx)), 5*time.Minute) + ctx, cancel = context.WithTimeout(common.WithLogger(context.Background(), common.Logger(ctx)), cleanupTimeout) defer cancel() } return postExecutor(ctx) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/job_executor_test.go new/forgejo-runner-9.0.3/act/runner/job_executor_test.go --- old/forgejo-runner-9.0.1/act/runner/job_executor_test.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/job_executor_test.go 2025-08-04 15:20:22.000000000 +0200 @@ -16,13 +16,13 @@ func TestJobExecutor(t *testing.T) { tables := []TestJobFileInfo{ {workdir, "uses-and-run-in-one-step", "push", "Invalid run/uses syntax for job:test step:Test", platforms, secrets}, - {workdir, "uses-github-empty", "push", "Expected format {org}/{repo}[/path]@ref", platforms, secrets}, + {workdir, "uses-github-empty", "push", "job:test step:empty", platforms, secrets}, {workdir, "uses-github-noref", "push", "Expected format {org}/{repo}[/path]@ref", platforms, secrets}, {workdir, "uses-github-root", "push", "", platforms, secrets}, {workdir, "uses-github-path", "push", "", platforms, secrets}, {workdir, "uses-docker-url", "push", "", platforms, secrets}, {workdir, "uses-github-full-sha", "push", "", platforms, secrets}, - {workdir, "uses-github-short-sha", "push", "Unable to resolve action `actions/hello-world-docker-action@b136eb8`, the provided ref `b136eb8` is the shortened version of a commit SHA, which is not supported. Please use the full commit SHA `b136eb8894c5cb1dd5807da824be97ccdf9b5423` instead", platforms, secrets}, + {workdir, "uses-github-short-sha", "push", "Please use the full commit SHA", platforms, secrets}, {workdir, "job-nil-step", "push", "invalid Step 0: missing run or uses key", platforms, secrets}, } // These tests are sufficient to only check syntax. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/lxc-helpers-lib.sh new/forgejo-runner-9.0.3/act/runner/lxc-helpers-lib.sh --- old/forgejo-runner-9.0.1/act/runner/lxc-helpers-lib.sh 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/lxc-helpers-lib.sh 2025-08-04 15:20:22.000000000 +0200 @@ -450,6 +450,7 @@ mkdir /etc/docker cat >/etc/docker/daemon.json <<EOF { + "insecure-registries": [ "10.0.0.0/8", "192.168.0.0/16" ], "ipv6": true, "fixed-cidr-v6": "$LXC_IPV6_DOCKER_PREFIX_DEFAULT:1::/64", "default-address-pools": [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/run_context.go new/forgejo-runner-9.0.3/act/runner/run_context.go --- old/forgejo-runner-9.0.1/act/runner/run_context.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/run_context.go 2025-08-04 15:20:22.000000000 +0200 @@ -515,6 +515,10 @@ } rc.cleanUpJobContainer = func(ctx context.Context) error { + // reinit logger from ctx since cleanUpJobContainer is be called after the job is complete, and using + // prepareJobContainer's logger could cause logs to continue to append to the finished job + logger := common.Logger(ctx) + reuseJobContainer := func(ctx context.Context) bool { return rc.Config.ReuseContainers } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/runner_test.go new/forgejo-runner-9.0.3/act/runner/runner_test.go --- old/forgejo-runner-9.0.1/act/runner/runner_test.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/runner_test.go 2025-08-04 15:20:22.000000000 +0200 @@ -14,6 +14,7 @@ "github.com/joho/godotenv" log "github.com/sirupsen/logrus" assert "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "gopkg.in/yaml.v3" "code.forgejo.org/forgejo/runner/v9/act/common" @@ -190,6 +191,7 @@ Matrix: cfg.Matrix, JobLoggerLevel: cfg.JobLoggerLevel, ActionCache: cfg.ActionCache, + AutoRemove: true, } runner, err := New(runnerConfig) @@ -208,7 +210,8 @@ if j.errorMessage == "" { assert.NoError(t, err, fullWorkflowPath) } else { - assert.Error(t, err, j.errorMessage) + require.Error(t, err, j.errorMessage) + assert.ErrorContains(t, err, j.errorMessage) } } } @@ -239,6 +242,7 @@ {workdir, "shells/pwsh", "push", "", platforms, secrets}, // Local action + {workdir, "local-action-fails-schema-validation", "push", "Job 'test' failed", platforms, secrets}, {workdir, "local-action-docker-url", "push", "", platforms, secrets}, {workdir, "local-action-dockerfile", "push", "", platforms, secrets}, {workdir, "local-action-via-composite-dockerfile", "push", "", platforms, secrets}, @@ -264,7 +268,7 @@ {workdir, "evalmatrix-merge-array", "push", "", platforms, secrets}, {workdir, "basic", "push", "", platforms, secrets}, - {workdir, "fail", "push", "exit with `FAILURE`: 1", platforms, secrets}, + {workdir, "fail", "push", "Job 'build' failed", platforms, secrets}, {workdir, "runs-on", "push", "", platforms, secrets}, {workdir, "checkout", "push", "", platforms, secrets}, {workdir, "job-container", "push", "", platforms, secrets}, @@ -293,7 +297,7 @@ {workdir, "networking", "push", "", platforms, secrets}, {workdir, "steps-context/conclusion", "push", "", platforms, secrets}, {workdir, "steps-context/outcome", "push", "", platforms, secrets}, - {workdir, "job-status-check", "push", "job 'fail' failed", platforms, secrets}, + {workdir, "job-status-check", "push", "Job 'fail' failed", platforms, secrets}, {workdir, "if-expressions", "push", "Job 'mytest' failed", platforms, secrets}, {workdir, "actions-environment-and-context-tests", "push", "", platforms, secrets}, {workdir, "uses-action-with-pre-and-post-step", "push", "", platforms, secrets}, @@ -312,7 +316,7 @@ {workdir, "do-not-leak-step-env-in-composite", "push", "", platforms, secrets}, {workdir, "set-env-step-env-override", "push", "", platforms, secrets}, {workdir, "set-env-new-env-file-per-step", "push", "", platforms, secrets}, - {workdir, "no-panic-on-invalid-composite-action", "push", "jobs failed due to invalid action", platforms, secrets}, + {workdir, "no-panic-on-invalid-composite-action", "push", "missing steps in composite action", platforms, secrets}, {workdir, "tool-cache", "push", "", platforms, secrets}, // services @@ -538,7 +542,7 @@ ctx := context.Background() platforms := map[string]string{ - "ubuntu-latest": "node:12.20.1-buster-slim", + "ubuntu-latest": "code.forgejo.org/oci/node:22", } workflowPath := "services" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/step_action_remote.go new/forgejo-runner-9.0.3/act/runner/step_action_remote.go --- old/forgejo-runner-9.0.1/act/runner/step_action_remote.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/step_action_remote.go 2025-08-04 15:20:22.000000000 +0200 @@ -42,7 +42,6 @@ return nil } - // For gitea: // Since actions can specify the download source via a url prefix. // The prefix may contain some sensitive information that needs to be stored in secrets, // so we need to interpolate the expression value for uses first. @@ -50,7 +49,7 @@ sar.remoteAction = newRemoteAction(sar.Step.Uses) if sar.remoteAction == nil { - return fmt.Errorf("Expected format {org}/{repo}[/path]@ref. Actual '%s' Input string was not in a correct format", sar.Step.Uses) + return fmt.Errorf("Expected format {org}/{repo}[/path]@ref or https://example.com/{org}/{repo}[/path]@ref. Actual '%s' Input string was not in a correct format", sar.Step.Uses) } github := sar.getGithubContext(ctx) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/docker-action-custom-path/push.yml new/forgejo-runner-9.0.3/act/runner/testdata/docker-action-custom-path/push.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/docker-action-custom-path/push.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/docker-action-custom-path/push.yml 2025-08-04 15:20:22.000000000 +0200 @@ -4,9 +4,7 @@ runs-on: ubuntu-latest steps: - run: | - FROM ubuntu:latest - ENV PATH="/opt/texlive/texdir/bin/x86_64-linuxmusl:${PATH}" - ENV ORG_PATH="${PATH}" - ENTRYPOINT [ "bash", "-c", "echo \"PATH=$PATH\" && echo \"ORG_PATH=$ORG_PATH\" && [[ \"$PATH\" = \"$ORG_PATH\" ]]" ] + FROM code.forgejo.org/oci/alpine:latest + ENTRYPOINT [ "sh", "-c", "echo OK" ] shell: mv {0} Dockerfile - - uses: ./ \ No newline at end of file + - uses: ./ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/fail/push.yml new/forgejo-runner-9.0.3/act/runner/testdata/fail/push.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/fail/push.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/fail/push.yml 2025-08-04 15:20:22.000000000 +0200 @@ -5,7 +5,7 @@ build: runs-on: ubuntu-latest container: - image: node:16-buster-slim + image: code.forgejo.org/oci/node:22 env: TEST_ENV: test-value steps: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/issue-104/main.yaml new/forgejo-runner-9.0.3/act/runner/testdata/issue-104/main.yaml --- old/forgejo-runner-9.0.1/act/runner/testdata/issue-104/main.yaml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/issue-104/main.yaml 2025-08-04 15:20:22.000000000 +0200 @@ -10,6 +10,6 @@ steps: - name: hello - uses: https://code.forgejo.org/forgejo/hello-world-docker-action@v1 + uses: https://code.forgejo.org/forgejo/hello-world-docker-action@v3 with: who-to-greet: "World" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/job-container/push.yml new/forgejo-runner-9.0.3/act/runner/testdata/job-container/push.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/job-container/push.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/job-container/push.yml 2025-08-04 15:20:22.000000000 +0200 @@ -5,7 +5,7 @@ test: runs-on: ubuntu-latest container: - image: node:16-buster-slim + image: code.forgejo.org/oci/node:22 env: TEST_ENV: test-value steps: @@ -13,7 +13,7 @@ test2: runs-on: ubuntu-latest - container: node:16-buster-slim + container: code.forgejo.org/oci/node:22 steps: - run: echo ${TEST_ENV} | grep test-value env: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/job-container-invalid-credentials/push.yml new/forgejo-runner-9.0.3/act/runner/testdata/job-container-invalid-credentials/push.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/job-container-invalid-credentials/push.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/job-container-invalid-credentials/push.yml 2025-08-04 15:20:22.000000000 +0200 @@ -5,7 +5,7 @@ fail-on-invalid-credentials: runs-on: ubuntu-latest container: - image: node:16-buster-slim + image: code.forgejo.org/oci/node:22 credentials: username: "user" password: "" # Empty password caused a crash in jobexecutor diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/local-action-fails-schema-validation/action/action.yml new/forgejo-runner-9.0.3/act/runner/testdata/local-action-fails-schema-validation/action/action.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/local-action-fails-schema-validation/action/action.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/forgejo-runner-9.0.3/act/runner/testdata/local-action-fails-schema-validation/action/action.yml 2025-08-04 15:20:22.000000000 +0200 @@ -0,0 +1,7 @@ +inputs: + leak: + default: '${{ secrets.SOMESECRET }}' +runs: + using: composite + steps: + - run: echo OK diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/local-action-fails-schema-validation/push.yml new/forgejo-runner-9.0.3/act/runner/testdata/local-action-fails-schema-validation/push.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/local-action-fails-schema-validation/push.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/forgejo-runner-9.0.3/act/runner/testdata/local-action-fails-schema-validation/push.yml 2025-08-04 15:20:22.000000000 +0200 @@ -0,0 +1,9 @@ +name: fails-schema-validation +on: push + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: https://data.forgejo.org/actions/checkout@v4 + - uses: ./local-action-fails-schema-validation/action diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/local-action-via-composite-dockerfile/action/action.yml new/forgejo-runner-9.0.3/act/runner/testdata/local-action-via-composite-dockerfile/action/action.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/local-action-via-composite-dockerfile/action/action.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/local-action-via-composite-dockerfile/action/action.yml 2025-08-04 15:20:22.000000000 +0200 @@ -32,7 +32,7 @@ shell: bash - uses: ./localdockerimagetest_ # Also test a remote docker action here - - uses: https://code.forgejo.org/forgejo/hello-world-docker-action@v1 + - uses: https://code.forgejo.org/forgejo/hello-world-docker-action@v3 with: who-to-greet: 'Mona the Octocat' # Test if GITHUB_ACTION_PATH is set correctly after all steps diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/localdockerimagetest_/Dockerfile new/forgejo-runner-9.0.3/act/runner/testdata/localdockerimagetest_/Dockerfile --- old/forgejo-runner-9.0.1/act/runner/testdata/localdockerimagetest_/Dockerfile 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/localdockerimagetest_/Dockerfile 2025-08-04 15:20:22.000000000 +0200 @@ -1,2 +1,2 @@ -FROM ubuntu:latest +FROM code.forgejo.org/oci/alpine:latest CMD echo Hello diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/parallel/push.yml new/forgejo-runner-9.0.3/act/runner/testdata/parallel/push.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/parallel/push.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/parallel/push.yml 2025-08-04 15:20:22.000000000 +0200 @@ -16,7 +16,7 @@ runs-on: ubuntu-latest needs: [build] steps: - - uses: docker://node:16-buster-slim + - uses: docker://code.forgejo.org/oci/node:22 with: args: echo ${GITHUB_REF} | grep nektos/act - uses: ./actions/docker-url diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/remote-action-docker/push.yml new/forgejo-runner-9.0.3/act/runner/testdata/remote-action-docker/push.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/remote-action-docker/push.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/remote-action-docker/push.yml 2025-08-04 15:20:22.000000000 +0200 @@ -5,6 +5,6 @@ test: runs-on: ubuntu-latest steps: - - uses: https://code.forgejo.org/forgejo/hello-world-docker-action@v1 + - uses: https://code.forgejo.org/forgejo/hello-world-docker-action@v3 with: who-to-greet: 'Mona the Octocat' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/runner/testdata/remote-action-js-node-user/push.yml new/forgejo-runner-9.0.3/act/runner/testdata/remote-action-js-node-user/push.yml --- old/forgejo-runner-9.0.1/act/runner/testdata/remote-action-js-node-user/push.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/runner/testdata/remote-action-js-node-user/push.yml 2025-08-04 15:20:22.000000000 +0200 @@ -5,7 +5,7 @@ test: runs-on: ubuntu-latest container: - image: node:16-buster-slim + image: code.forgejo.org/oci/node:22 options: --user node steps: - name: check permissions of env files diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/schema/action_schema.json new/forgejo-runner-9.0.3/act/schema/action_schema.json --- old/forgejo-runner-9.0.1/act/schema/action_schema.json 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/schema/action_schema.json 2025-08-04 15:20:22.000000000 +0200 @@ -177,6 +177,7 @@ "matrix", "job", "runner", + "vars", "hashFiles(1,255)" ], "string": {} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/act/schema/schema_test.go new/forgejo-runner-9.0.3/act/schema/schema_test.go --- old/forgejo-runner-9.0.1/act/schema/schema_test.go 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/act/schema/schema_test.go 2025-08-04 15:20:22.000000000 +0200 @@ -140,7 +140,7 @@ default: '${{ env.GITHUB_SERVER_URL }}' repo: description: 'repo description' - default: '${{ github.repository }}' + default: '${{ github.repository }} ${{ vars.VARIABLE }}' runs: using: "composite" steps: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/examples/README.md new/forgejo-runner-9.0.3/examples/README.md --- old/forgejo-runner-9.0.1/examples/README.md 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/examples/README.md 2025-08-04 15:20:22.000000000 +0200 @@ -1,9 +1,10 @@ -This directory contains a collection of usage and deployment examples. +A collection of Forgejo actions examples. -Workflow examples can be found [in the documentation](https://forgejo.org/docs/next/user/actions/). +Other examples can be found [in the documentation](https://forgejo.org/docs/next/user/actions/). | Section | Description | |-----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [`docker-build-push-action-in-lxc`](../.forgejo/workflows/docker-build-push-action-in-lxc.yml) | using the LXC runner backend to build and push a container image using the [docker/build-push-action](https://code.forgejo.org/docker/build-push-action) action | | [`docker`](docker) | using the host docker server by mounting the socket | | [`LXC systemd`](lxc-systemd) | systemd unit managing LXC containers dedicated to a single runner | | [`docker-compose`](docker-compose) | all in one docker-compose with the Forgejo server, the runner and docker in docker | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/examples/docker-build-push-action/Dockerfile new/forgejo-runner-9.0.3/examples/docker-build-push-action/Dockerfile --- old/forgejo-runner-9.0.1/examples/docker-build-push-action/Dockerfile 1970-01-01 01:00:00.000000000 +0100 +++ new/forgejo-runner-9.0.3/examples/docker-build-push-action/Dockerfile 2025-08-04 15:20:22.000000000 +0200 @@ -0,0 +1 @@ +FROM code.forgejo.org/oci/alpine:latest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/examples/docker-build-push-action/README.md new/forgejo-runner-9.0.3/examples/docker-build-push-action/README.md --- old/forgejo-runner-9.0.1/examples/docker-build-push-action/README.md 1970-01-01 01:00:00.000000000 +0100 +++ new/forgejo-runner-9.0.3/examples/docker-build-push-action/README.md 2025-08-04 15:20:22.000000000 +0200 @@ -0,0 +1,3 @@ +Used by: + +- .forgejo/workflows/docker-build-push-action-in-lxc.yml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/examples/docker-compose/compose-forgejo-and-runner.yml new/forgejo-runner-9.0.3/examples/docker-compose/compose-forgejo-and-runner.yml --- old/forgejo-runner-9.0.1/examples/docker-compose/compose-forgejo-and-runner.yml 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/examples/docker-compose/compose-forgejo-and-runner.yml 2025-08-04 15:20:22.000000000 +0200 @@ -30,7 +30,7 @@ - docker_certs:/certs forgejo: - image: codeberg.org/forgejo/forgejo:11.0 + image: code.forgejo.org/forgejo/forgejo:11.0 command: >- bash -c ' /usr/bin/s6-svscan /etc/s6 & diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/examples/lxc-systemd/README.md new/forgejo-runner-9.0.3/examples/lxc-systemd/README.md --- old/forgejo-runner-9.0.1/examples/lxc-systemd/README.md 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/examples/lxc-systemd/README.md 2025-08-04 15:20:22.000000000 +0200 @@ -64,7 +64,7 @@ - `INPUTS_SERIAL`: unique number in the range `[10-100]` (check `/etc/forgejo-runner`) - `INPUTS_TOKEN`: a runner registration token obtained from the web UI - `INPUTS_FORGEJO`: the Forgejo instance from which `INPUTS_TOKEN` was obtained (e.g. https://code.forgejo.org) -- `INPUTS_RUNNER_VERSION`: the version of the Forgejo runner as found in https://code.forgejo.org/forgejo/runner/releases (e.g. 6.3.0) +- `INPUTS_RUNNER_VERSION`: the version of the Forgejo runner as found in https://code.forgejo.org/forgejo/runner/releases (e.g. 9.0.2) - `INPUTS_LXC_CONFIG`: the value of the `--config` argument of [lxc-helpers](https://code.forgejo.org/forgejo/lxc-helpers/#usage) used when creating the LXC container for the runner (e.g. `docker`) - `INPUTS_LIFETIME`: the LXC container is re-created when its lifetime expires (e.g. 7d) @@ -86,5 +86,5 @@ The goal is that a LXC container uses a version of the Forgejo runner that is different from the default. It needs to be installed and pinned. -- Install: `INPUTS_RUNNER_VERSION=6.3.0 forgejo-runner-service.sh install_runner` -- Pin the version in `/etc/forgejo-runner/N/env` (e.g. `INPUTS_RUNNER_VERSION=6.3.0`) +- Install: `INPUTS_RUNNER_VERSION=9.0.2 forgejo-runner-service.sh install_runner` +- Pin the version in `/etc/forgejo-runner/N/env` (e.g. `INPUTS_RUNNER_VERSION=9.0.2`) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/examples/lxc-systemd/forgejo-runner-service.sh new/forgejo-runner-9.0.3/examples/lxc-systemd/forgejo-runner-service.sh --- old/forgejo-runner-9.0.1/examples/lxc-systemd/forgejo-runner-service.sh 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/examples/lxc-systemd/forgejo-runner-service.sh 2025-08-04 15:20:22.000000000 +0200 @@ -20,8 +20,10 @@ : ${INPUTS_TOKEN:=} : ${INPUTS_FORGEJO:=https://code.forgejo.org} : ${INPUTS_LIFETIME:=7d} -: ${INPUTS_LXC_HELPERS_VERSION:=1.0.3} -: ${INPUTS_RUNNER_VERSION:=7.0.0} +DEFAULT_LXC_HELPERS_VERSION=1.0.3 # renovate: datasource=forgejo-tags depName=forgejo/lxc-helpers +: ${INPUTS_LXC_HELPERS_VERSION:=$DEFAULT_LXC_HELPERS_VERSION} +DEFAULT_RUNNER_VERSION=9.0.2 # renovate: datasource=forgejo-releases depName=forgejo/runner +: ${INPUTS_RUNNER_VERSION:=$DEFAULT_RUNNER_VERSION} : ${KILL_AFTER:=21600} # 6h == 21600 NODEJS_VERSION=20 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/go.mod new/forgejo-runner-9.0.3/go.mod --- old/forgejo-runner-9.0.1/go.mod 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/go.mod 2025-08-04 15:20:22.000000000 +0200 @@ -9,14 +9,14 @@ connectrpc.com/connect v1.18.1 github.com/Masterminds/semver v1.5.0 github.com/avast/retry-go/v4 v4.6.1 - github.com/containerd/errdefs v0.3.0 + github.com/containerd/errdefs v1.0.0 github.com/creack/pty v1.1.24 github.com/distribution/reference v0.6.0 - github.com/docker/cli v28.2.2+incompatible + github.com/docker/cli v28.3.3+incompatible github.com/docker/docker v28.3.3+incompatible github.com/docker/go-connections v0.5.0 - github.com/go-git/go-billy/v5 v5.6.1 - github.com/go-git/go-git/v5 v5.13.1 + github.com/go-git/go-billy/v5 v5.6.2 + github.com/go-git/go-git/v5 v5.16.2 github.com/gobwas/glob v0.2.3 github.com/google/uuid v1.6.0 github.com/imdario/mergo v0.3.16 @@ -26,16 +26,16 @@ github.com/mattn/go-isatty v0.0.20 github.com/moby/go-archive v0.1.0 github.com/moby/patternmatcher v0.6.0 - github.com/opencontainers/image-spec v1.1.0 - github.com/opencontainers/selinux v1.11.0 + github.com/opencontainers/image-spec v1.1.1 + github.com/opencontainers/selinux v1.12.0 github.com/pkg/errors v0.9.1 - github.com/rhysd/actionlint v1.6.27 + github.com/rhysd/actionlint v1.7.7 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.6 + github.com/spf13/pflag v1.0.7 github.com/stretchr/testify v1.10.0 github.com/timshannon/bolthold v0.0.0-20240314194003-30aac6950928 - go.etcd.io/bbolt v1.3.10 + go.etcd.io/bbolt v1.4.2 golang.org/x/term v0.33.0 golang.org/x/time v0.12.0 google.golang.org/protobuf v1.36.6 @@ -47,31 +47,33 @@ dario.cat/mergo v1.0.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/ProtonMail/go-crypto v1.1.3 // indirect + github.com/ProtonMail/go-crypto v1.1.6 // indirect + github.com/bmatcuk/doublestar/v4 v4.8.0 // indirect github.com/cloudflare/circl v1.6.1 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect - github.com/cyphar/filepath-securejoin v0.3.6 // indirect + github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/docker-credential-helpers v0.8.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect - github.com/fatih/color v1.16.0 // indirect + github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.3.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.18.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mattn/go-shellwords v1.0.12 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/sys/atomicwriter v0.1.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect @@ -80,12 +82,12 @@ github.com/moby/term v0.5.0 // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/pjbgf/sha1cd v0.3.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect - github.com/skeema/knownhosts v1.3.0 // indirect + github.com/skeema/knownhosts v1.3.1 // indirect github.com/stretchr/objx v0.5.2 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect @@ -98,8 +100,8 @@ go.opentelemetry.io/otel/metric v1.36.0 // indirect go.opentelemetry.io/otel/sdk v1.21.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect - golang.org/x/crypto v0.36.0 // indirect - golang.org/x/net v0.38.0 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/net v0.39.0 // indirect golang.org/x/sync v0.12.0 // indirect golang.org/x/sys v0.34.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/forgejo-runner-9.0.1/go.sum new/forgejo-runner-9.0.3/go.sum --- old/forgejo-runner-9.0.1/go.sum 2025-07-31 12:35:11.000000000 +0200 +++ new/forgejo-runner-9.0.3/go.sum 2025-08-04 15:20:22.000000000 +0200 @@ -13,20 +13,22 @@ github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= -github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= +github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/avast/retry-go/v4 v4.6.1 h1:VkOLRubHdisGrHnTu89g08aQEWEgRU7LVEop3GbIcMk= github.com/avast/retry-go/v4 v4.6.1/go.mod h1:V6oF8njAwxJ5gRo1Q7Cxab24xs5NCWZBeaHHBklR8mA= +github.com/bmatcuk/doublestar/v4 v4.8.0 h1:DSXtrypQddoug1459viM9X9D3dp1Z7993fw36I2kNcQ= +github.com/bmatcuk/doublestar/v4 v4.8.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= -github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= -github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= @@ -34,15 +36,15 @@ github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= -github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= -github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v28.2.2+incompatible h1:qzx5BNUDFqlvyq4AHzdNB7gSyVTmU4cgsyN9SdInc1A= -github.com/docker/cli v28.2.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v28.3.3+incompatible h1:fp9ZHAr1WWPGdIWBM1b3zLtgCF+83gRdVMTJsUeiyAo= +github.com/docker/cli v28.3.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= github.com/docker/docker v28.3.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8= @@ -51,24 +53,24 @@ github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= -github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= +github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= +github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= -github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= -github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= +github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= +github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= -github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= +github.com/go-git/go-git/v5 v5.16.2 h1:fT6ZIOjE5iEnkzKyxTHK1W4HGAsPhqEqiSAssSO77hM= +github.com/go-git/go-git/v5 v5.16.2/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -80,8 +82,8 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= @@ -115,13 +117,14 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/go-archive v0.1.0 h1:Kk/5rdW/g+H8NHdJW2gsXyZ7UnzvJNOy6VKJqueWdcQ= @@ -144,37 +147,38 @@ github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= -github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= -github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= -github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= -github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= -github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= +github.com/opencontainers/selinux v1.12.0 h1:6n5JV4Cf+4y0KNXW48TLj5DwfXpvWlxXplUkdTrmPb8= +github.com/opencontainers/selinux v1.12.0/go.mod h1:BTPX+bjVbWGXw7ZZWUbdENt8w0htPSrlgOOysQaU62U= +github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= +github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rhysd/actionlint v1.6.27 h1:xxwe8YmveBcC8lydW6GoHMGmB6H/MTqUU60F2p10wjw= -github.com/rhysd/actionlint v1.6.27/go.mod h1:m2nFUjAnOrxCMXuOMz9evYBRCLUsMnKY2IJl/N5umbk= +github.com/rhysd/actionlint v1.7.7 h1:0KgkoNTrYY7vmOCs9BW2AHxLvvpoY9nEUzgBHiPUr0k= +github.com/rhysd/actionlint v1.7.7/go.mod h1:AE6I6vJEkNaIfWqC2GNE5spIJNhxf8NCtLEKU4NnUXg= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= -github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= +github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= +github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -203,8 +207,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.etcd.io/bbolt v1.3.10 h1:+BqfJTcCzTItrop8mq/lbzL8wSGtj94UO/3U31shqG0= -go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= +go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I= +go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM= go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= @@ -228,8 +232,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -239,8 +243,8 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -256,7 +260,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -268,8 +271,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= ++++++ forgejo-runner.obsinfo ++++++ --- /var/tmp/diff_new_pack.VrUkia/_old 2025-08-12 17:05:24.149333978 +0200 +++ /var/tmp/diff_new_pack.VrUkia/_new 2025-08-12 17:05:24.165334647 +0200 @@ -1,5 +1,5 @@ name: forgejo-runner -version: 9.0.1 -mtime: 1753958111 -commit: ec99579451b7b44cfd2ad01e48a006cd903dedf7 +version: 9.0.3 +mtime: 1754313622 +commit: 8b7e126c1c099688530d37063239d1c999e4c9d4 ++++++ vendor.tar.gz ++++++ ++++ 26857 lines of diff (skipped)