diff --git a/.github/workflows/trial.yml b/.github/workflows/trial.yml index 2447ecb..5264613 100644 --- a/.github/workflows/trial.yml +++ b/.github/workflows/trial.yml @@ -8,12 +8,22 @@ on: # - "v*.*.*" jobs: + tags: + runs-on: ubuntu-latest + steps: + - uses: actions/setup-node@v3 + with: + node-version: 18 + - run: npm i + - run: node fetch.mjs + build: strategy: matrix: - include: - - tag: 1.20.2 - version: 1.20.2 + ${{fromJson(needs.tags.outputs.matrix)}} + # include: + # - tag: 1.20.2 + # version: 1.20.2 runs-on: ubuntu-latest steps: - name: Set up QEMU diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/fetch.mjs b/fetch.mjs new file mode 100644 index 0000000..792155f --- /dev/null +++ b/fetch.mjs @@ -0,0 +1,29 @@ +import { setOutput } from '@actions/core' + +// Fetch the current versions from the download page +const URL = `https://nginx.org/en/download.html` +const html = await fetch(URL).then((r) => r.text()) + +// Find all the downloadable versions +const re = /"\/download\/nginx-(\d+\.){3}tar\.gz"/g +const matches = html.match(re) + +// Clean up the matches to semver format +const clean = (match) => match.replace(/"/g, '').replace('/download/nginx-', '').replace('.tar.gz', '') +const versions = matches.map(clean) + +// Map the docker tags to the versions +const tagsMap = Object.fromEntries(versions.map((v) => [v, v])) + +// Add the mainline, stable and latests tags +tagsMap['latest'] = versions[0] +tagsMap['mainline'] = versions[0] +tagsMap['stable'] = versions[1] + +// Export as github action matrix +// https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs#expanding-or-adding-matrix-configurations +const githubActionMatrix = { + include: Object.entries(tagsMap).map(([tag, version]) => ({ tag, version })), +} + +setOutput('matrix', githubActionMatrix) diff --git a/package.json b/package.json new file mode 100644 index 0000000..ef9b755 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@actions/core": "^1.10.0" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..e91f351 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,32 @@ +lockfileVersion: 5.4 + +specifiers: + '@actions/core': ^1.10.0 + +dependencies: + '@actions/core': 1.10.0 + +packages: + + /@actions/core/1.10.0: + resolution: {integrity: sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug==} + dependencies: + '@actions/http-client': 2.0.1 + uuid: 8.3.2 + dev: false + + /@actions/http-client/2.0.1: + resolution: {integrity: sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==} + dependencies: + tunnel: 0.0.6 + dev: false + + /tunnel/0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: false + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false