diff --git a/init-pants/action.yaml b/init-pants/action.yaml index bf0717f..f6952b0 100644 --- a/init-pants/action.yaml +++ b/init-pants/action.yaml @@ -32,6 +32,12 @@ inputs: The hash to cache the named caches against. Should be a hash generated by hashFiles() on all inputs to named caches, which are typically your lockfiles. required: true + named-caches-location: + description: | + The location of the named cache, as specified in `pants.toml` or another pants config + file. Default is `~/.cache/pants/named_caches`. + required: false + default: "~/.cache/pants/named_caches" pants-ci-config: description: | An extra config file to use in CI. Defaults to pants.ci.toml if present, or no @@ -48,16 +54,31 @@ inputs: avoids these problems. required: false default: 'false' # a string! + lmdb-store-location: + description: | + The location of the lmdb store, as specified in `pants.toml` or another pants config file. + Default is `~/.cache/pants/lmdb_store`. + required: false + default: "~/.cache/pants/lmdb_store" setup-python-for-plugins: description: | If set to 'true', this action will set up a Python interpreter suitable for testing/linting - custom Pants plugin code in your repo. Pants plugins will run on the interpreter embedded + custom Pants plugin code in your repo. Pants plugins will run on the interpreter embedded in Pants, and so must be tested/linted on an interpreter of the same version (currently 3.9). This may be different than the interpreter version(s) your other Python code requires. So this convenience option streamlines installing an interpreter specifically for testing/linting plugin code. required: false default: 'false' # a string! + gh-host: + description: | + The lmdb store can be restored from the base branch, if it exists. This option configures the + host that is used to determine the latest commit on the base branch. This should be configured + as the hostname only, no protocol (for example, https) should be included. This is useful + if you are using an enterprise instance of GitHub whose host is not 'https://github.com'. + See https://cli.github.com/manual/gh_help_environment. + required: false + default: "github.com" runs: using: "composite" @@ -66,19 +87,19 @@ runs: shell: bash run: | if ! command -v pants; then + echo "$HOME/bin" >> $GITHUB_PATH if [[ -f ./get-pants.sh ]]; then ./get-pants.sh else - curl --proto '=https' --tlsv1.2 -fsSLo /tmp/get-pants.sh \ + curl --proto '=https' --tlsv1.2 -fsSLo ${{ runner.temp }}/get-pants.sh \ https://raw.githubusercontent.com/pantsbuild/setup/${{ inputs.setup-commit }}/get-pants.sh - chmod +x /tmp/get-pants.sh - /tmp/get-pants.sh + chmod +x ${{ runner.temp }}/get-pants.sh + ${{ runner.temp }}/get-pants.sh fi - echo "$HOME/bin" >> $GITHUB_PATH fi - name: Setup interpreter for testing in-repo Pants plugins - if: ${{ inputs.setup-python-for-plugins == 'true' }} + if: inputs.setup-python-for-plugins == 'true' uses: actions/setup-python@v4 with: python-version: '3.9' @@ -107,8 +128,7 @@ runs: - name: Cache Pants named caches uses: actions/cache@v3 with: - path: | - ~/.cache/pants/named_caches + path: ${{ inputs.named-caches-location }} key: pants-named-caches-${{ runner.os }}-${{ inputs.gha-cache-key }}-${{ hashFiles('pants.toml') }}-${{ inputs.named-caches-hash }} restore-keys: | pants-named-caches-${{ runner.os }}-${{ inputs.gha-cache-key }}-${{ hashFiles('pants.toml') }}- @@ -117,7 +137,7 @@ runs: # Looking up the commit allows us to use the cache from the latest commit on the base branch. - name: Get Pants Cache Commit (base branch commit to pull cache from) id: pants_cache_commit - if: ${{ inputs.cache-lmdb-store == 'true' }} + if: inputs.cache-lmdb-store == 'true' shell: bash # we could use this, but only if fetch-depth goes back far enough # COMMIT=$(git merge-base ${GITHUB_BASE_REF:-${{ inputs.base-branch }}} HEAD | head -n1) @@ -130,14 +150,17 @@ runs: echo "CACHECOMMIT=${CACHECOMMIT}" >> $GITHUB_OUTPUT env: GH_TOKEN: ${{ github.token }} + # According to https://cli.github.com/manual/gh_help_environment, when GH_HOST is used to configure + # the hostname, the token must be named GITHUB_ENTERPRISE_TOKEN. + GITHUB_ENTERPRISE_TOKEN: ${{ github.token }} + GH_HOST: ${{ inputs.gh-host }} - name: Cache Pants LMDB store - if: ${{ inputs.cache-lmdb-store == 'true' }} + if: inputs.cache-lmdb-store == 'true' uses: actions/cache@v3 id: cache-pants-lmdb-store with: - path: | - ~/.cache/pants/lmdb_store + path: ${{ inputs.lmdb-store-location }} # The commit SHA serves as a hash of all files in the repo. # A remote cache service integrates with Pants's fine-grained invalidation and avoids these problems. key: pants-lmdb-store-${{ runner.os }}-${{ inputs.gha-cache-key }}-${{ github.sha }} @@ -149,7 +172,7 @@ runs: # in the workflow that uses this composite action. # https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable - name: Tell pants to use CI config - if: ${{ inputs.pants-ci-config != '' }} + if: inputs.pants-ci-config != '' shell: bash env: PANTS_CONFIG_FILES: ${{ inputs.pants-ci-config }}