name: 'Dagger for GitHub' description: 'Run dagger commands in Github Actions' inputs: version: description: 'Dagger Version' required: false default: '0.9.3' dagger-flags: description: 'Dagger CLI Flags' required: false default: '--progress plain' verb: description: 'CLI verb (call, run, download, up, functions, shell, query)' required: false default: 'call' workdir: description: 'The working directory in which to run the Dagger CLI' required: false default: '.' cloud-token: description: 'Dagger Cloud Token' required: false default: '' module: description: 'Dagger module to call. Local or Git' required: false default: '' args: description: 'Arguments to pass to CLI' required: false default: '' runs: using: "composite" steps: - run: | # Fallback to /usr/local for backwards compatability prefix_dir="${RUNNER_TEMP:-/usr/local}" # Ensure the dir is writable otherwise fallback to tmpdir if [[ ! -d "$prefix_dir" ]] || [[ ! -w "$prefix_dir" ]]; then prefix_dir="$(mktemp -d)" fi printf '%s/bin' "$prefix_dir" >> $GITHUB_PATH # The install.sh script creates path ${prefix_dir}/bin cd "$prefix_dir" && { \ curl -sL https://dl.dagger.io/dagger/install.sh 2>/dev/null | \ DAGGER_VERSION=${{ inputs.version }} sh; } shell: bash - run: | cd ${{ inputs.workdir }} && { \ DAGGER_CLOUD_TOKEN=${{ inputs.cloud-token }} \ dagger \ ${{ inputs.dagger-flags }} \ ${{ inputs.verb }} \ ${INPUT_MODULE:+-m $INPUT_MODULE} \ ${{ inputs.args }}; } shell: bash env: INPUT_MODULE: ${{ inputs.module }} - run: | mapfile -t containers < <(docker ps --filter name="dagger-engine-*" -q) docker stop -t 300 "${containers[@]}" shell: bash if: ${{ always() }}