Files
workflows/README.md
2025-12-19 15:54:22 -05:00

2.9 KiB

This repository is public and contains shared workflows that are used in other builds. Each workflow takes a number of parameters and secrets as inputs. Parameters and secrets are documented in the respective workflows.

At this point the the following workflows are available:

  • simple-container.yaml - One shot of build of a container through a given Dockerfile.
  • go-binary.yaml - Builds a golang binary and uploads the binary as artifact.
  • container-from-artifact.yaml - Builds and uploads a container from a given artifact and a given Dockerfile.

Usage

The workflows are used with in a master workflow through a workflow call, like below. Also see build.yaml for an example

  ....
  build-container:
    uses: https://gitea.ampenberger.com/campenbe/workflows/.gitea/workflows/container-from-artifact.yaml@2025-10-01-1
    with:
      artifact_name: my_source_artifact
      dockerfile: Dockerfile.small
      package-name: cool-project
      package-label: v1
      version: v1-r1
    secrets:
      PASSWORD: ${{ secrets.PASSWORD }}
      GIT_TOKEN: ${{ secrets.GIT_TOKEN }}

Development

It is possible to refer to a local version of an workflow in the uses: clause for testing purposes:

...
  uses: './../workflows/.gitea/workflows/simple-container.yaml
...

To avoid caching issues always tag a new version and refer to the respective version with the tag in the consuming workflow.

act-runner

I use act_runner to execute builds on the build server. It is possible to test workflows by downloading a version from gitea.com/gitea/act_runner/releases. Following are a few use cases that might be helpful for testing:

# Default command for running the first workflow matching a push even
act-runner exec \
  --artifact-server-path build \              # where to store artifacts
  --secret "GIT_TOKEN=${GITEA_TOKEN}" \       # access token for Gitea access
  --secret "PASSWORD=${PASSWORD}" \           # to pull the img-builder images
  --privileged \                              # needed for building containers
  --env "GITEA_IP_ADDR=72.74.26.168" \        # need on my ADI mac to resolve the gitea address
  --container-daemon-socket /run/docker.sock  # location of the podman socket

# When testing a tag push
act-runner exec --privileged --secret GIT_TOKEN=$GITEA_TOKEN --secret PASSWORD=$PASSWORD --artifact-server-path ./build --env "GITHUB_REFS=rests/tags/...."

# to run a particular workflow
act-runner exec --privileged --secret GIT_TOKEN=$GITEA_TOKEN --secret PASSWORD=$PASSWORD --artifact-server-path ./build -W .gitea/workflows/test.yaml

# To test a particular event
act-runner exec --privileged --secret GIT_TOKEN=$GITEA_TOKEN --secret PASSWORD=$PASSWORD --artifact-server-path ./build -E workfow_dispatch