KengoTODA / actions-setup-docker-compose

the GitHub Action setting up docker-compose command

Home Page:https://github.com/marketplace/actions/setup-docker-compose

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Proposal] Deduce the latest version from the URL redirect

i386x opened this issue · comments

Hello,

up to now the latest version of podman-compose is deduced using octokit:

async function findLatestVersion(): Promise<string> {
  const octokit = new Octokit()
  const response = await octokit.repos.getLatestRelease({
    owner: 'docker',
    repo: 'compose'
  })
  return response.data.tag_name
}

which requires GITHUB_TOKEN. This complicates things a bit when testing GitHub actions using act.

Today I just noticed that if the latest keyword is appended to https://github.com/docker/compose/releases/ then GitHub redirects to the latest version, e.g. https://github.com/docker/compose/releases/latest become https://github.com/docker/compose/releases/tag/v2.21.0 (at the time of writing this post) from which v2.21.0 can be easily extracted. In words of curl:

$ curl -Ls -o /dev/null -w '%{url_effective}\n' 'https://github.com/docker/compose/releases/latest'
https://github.com/docker/compose/releases/tag/v2.21.0

Its also possible to fetch the latest release anonymously:

$ curl -L https://api.github.com/repos/docker/compose/releases/latest
{
  "url": "https://api.github.com/repos/docker/compose/releases/119350941",
  "assets_url": "https://api.github.com/repos/docker/compose/releases/119350941/assets",
  "upload_url": "https://uploads.github.com/repos/docker/compose/releases/119350941/assets{?name,label}",
  "html_url": "https://github.com/docker/compose/releases/tag/v2.21.0",
  "id": 119350941,
  "author": {
    "login": "github-actions[bot]",
    "id": 41898282,
....
}

To be honest I have no idea why octokit needs GITHUB_TOKEN for this case.

The workaround:

jobs:
  tests:
    steps:
      - name: Determine the latest version of docker-compose
        id: vars
        run: |
          LATEST=$(curl -Ls -o /dev/null -w '%{url_effective}' 'https://github.com/docker/compose/releases/latest')
          echo "docker_compose_latest=${LATEST##*/}" >> $GITHUB_OUTPUT
      - uses: KengoTODA/actions-setup-docker-compose@v1
        with:
          version: '${{ steps.vars.outputs.docker_compose_latest }}'

Please feel free to close this if you don't wish to implement the feature.