Skip to content

Commit

Permalink
Use input to support custom snapshot repo (#3)
Browse files Browse the repository at this point in the history
* Use input to support custom snapshot repo

* Add `GH_TOKEN`

* Fix test input

* Escape variable

* Use `github-token` input

* Rename input

* Use different substitution delimiter

Co-authored-by: Pat Brisbin <[email protected]>

---------

Co-authored-by: Pat Brisbin <[email protected]>
  • Loading branch information
stackptr and pbrisbin authored Jul 13, 2023
1 parent 72e75a5 commit 813607a
Show file tree
Hide file tree
Showing 6 changed files with 284 additions and 9 deletions.
17 changes: 14 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,34 @@ on:
branches: main

jobs:
test-lts:
test:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- working-directory: test/lts-example
expected-current: lts-20.20
- working-directory: test/custom-repo-example
expected-current: https://raw.githubusercontent.com/freckle/stackage-snapshots/main/lts/20/20.yaml
github-repo: freckle/stackage-snapshots
fail-fast: false
steps:
- uses: actions/checkout@v3
- name: Run action on stack.yaml resolving to LTS Haskell snapshot
id: test
uses: ./
with:
working-directory: test/lts-example
working-directory: ${{ matrix.working-directory }}
github-repo: ${{ matrix.github-repo }}
- name: Validate action outputs
run: |
expected_current=${{ matrix.expected-current }}
current=${{ steps.test.outputs.current }}
latest=${{ steps.test.outputs.latest }}
newer_available=${{ steps.test.outputs.newer-available }}
build_errors=${{ steps.test.outputs.build-errors }}
commit_message="${{ steps.test.outputs.commit-message }}"
if [[ "$current" != "lts-20.20" ]]; then
if [[ "$current" != "$expected_current" ]]; then
echo "Found unexpected current LTS version:"
echo "$current"
exit 1
Expand Down
34 changes: 28 additions & 6 deletions action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ inputs:
description: "Login to use instead of github.actor"
required: true
default: ""
github-repo:
description: "Repo in which snapshots are kept, e.g.: commercialhaskell/stackage-snapshots"
github-ref:
description: "Branch, commit, or tag of snapshot repo to use"
default: main
github-token:
description: "Override GitHub token, if necessary"
required: true
default: "${{ github.token }}"

outputs:
path:
Expand Down Expand Up @@ -48,6 +57,8 @@ runs:
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
gh_repo=${{ inputs.github-repo }}
gh_ref=${{ inputs.github-ref }}
if [ -n "${{ inputs.snapshot-yaml }}" ]; then
path=${{ inputs.snapshot-yaml }}
else
Expand All @@ -58,12 +69,23 @@ runs:
current=$(sed '/^resolver: \(.*\)$/!d; s//\1/' "$path")
echo "current=$current" >>"$GITHUB_OUTPUT"
latest=$(
curl --silent -D - https://www.stackage.org/lts |
sed '/^location: \/\(.*\)/!d; s//\1/;' |
tr '\r\n' '\n'
)
if [[ -z "$gh_repo" ]]; then
latest=$(
curl --silent -D - https://www.stackage.org/lts |
sed '/^location: \/\(.*\)/!d; s//\1/;' |
tr '\r\n' '\n'
)
else
latest_version=$(
gh api "/repos/$gh_repo/git/trees/$gh_ref?recursive=true" -q '.tree[]|.path' |
sort -rV |
head -n 1
)
latest="https://raw.githubusercontent.com/$gh_repo/$gh_ref/$latest_version"
fi
echo "latest=$latest" >>"$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ inputs.github-token }}

- name: Update resolver
id: update
Expand All @@ -82,7 +104,7 @@ runs:
echo "newer-available=true" >>"$GITHUB_OUTPUT"
sed -i 's/^resolver: .*$/resolver: '"$latest"'/' "$path"
sed -i 's|^resolver: .*$|resolver: '"$latest"'|' "$path"
- if: ${{ inputs.dry-run != 'true' && steps.update.outputs.newer-available == 'true' }}
name: Build and commit
id: commit
Expand Down
9 changes: 9 additions & 0 deletions test/custom-repo-example/custom-repo-example.cabal
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
cabal-version: 1.12

-- This file has been generated from package.yaml by hpack version 0.35.1.
--
-- see: https://github.com/sol/hpack

name: custom-repo-example
version: 0.1.0.0
build-type: Simple
2 changes: 2 additions & 0 deletions test/custom-repo-example/package.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
name: custom-repo-example
version: 0.1.0.0
2 changes: 2 additions & 0 deletions test/custom-repo-example/stack.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Resolver to a custom snapshot repository
resolver: https://raw.githubusercontent.com/freckle/stackage-snapshots/main/lts/20/20.yaml
229 changes: 229 additions & 0 deletions test/custom-repo-example/stack.yaml.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
# This file was autogenerated by Stack.
# You should not edit this file by hand.
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/lock_files

packages:
- completed:
hackage: asana-1.0.1.0@sha256:d44581e617894efba902efcda8ef451caad356a2e15afc1d6ce8740d90c287e1,2189
pantry-tree:
sha256: 58062a22ba86cb78455a7dd767fe8059ce1386a2c4425e4a2d9df75d3034a1cf
size: 868
original:
hackage: asana-1.0.1.0
- completed:
hackage: freckle-app-1.9.0.1@sha256:e16d6a0edbcac20ab4bfaec558f473dbeb951472bbbdbd96089dc4b3ddfc8d3c,7587
pantry-tree:
sha256: dda455d248c860bc6b118cc75e5a884b7c8ca113037fbfde807ac9c59e6b8c3a
size: 3850
original:
hackage: freckle-app-1.9.0.1
- completed:
hackage: file-location-0.4.9.1@sha256:fb61c964f3aefbc32d2c2bac77a4a260d43d879959a62c56c2e3607aa79b9cad,2828
pantry-tree:
sha256: 5a7ced901a9f93d348286cfe3ec226c7977a43147757bd4b09c324e32b258b2d
size: 995
original:
hackage: file-location-0.4.9.1
- completed:
hackage: monad-validate-1.2.0.1@sha256:5a100da896f11ca4b7c123da85decbedeb46c37054a097f258ac911e715cb68d,2587
pantry-tree:
sha256: 034ee4de9765e38b763f5d73b236cc112205728e680cefbfe12d2882accc3264
size: 611
original:
hackage: monad-validate-1.2.0.1
- completed:
hackage: dotenv-0.11.0.0@sha256:4a6e6e6f447bc0a9326635ee5bd8b7d83758c54beaeb4a33abe2f6cd8802f9b8,5052
pantry-tree:
sha256: 04df2262ece536022369520a1ace4c9b792b37e8cb512920b2592ffa00ee153e
size: 1226
original:
hackage: dotenv-0.11.0.0
- completed:
hackage: oidc-client-0.6.1.0@sha256:5829e916a8847e4eef64dd4bfba07d10636dc1f7b554a0d63ca1a09f2dabe448,3359
pantry-tree:
sha256: 193b18f756abdea389a0ec5cc6c20e621bf74ba3850fdfb895e01a6172fd7988
size: 1298
original:
hackage: oidc-client-0.6.1.0
- completed:
name: amazonka
pantry-tree:
sha256: 0257a27c3332e400abc0f4a38f7a875c4a2a04b03ac342d7481e19d9d5665040
size: 1257
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/amazonka
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/amazonka
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-core
pantry-tree:
sha256: 2eadbad33f65f20781409c4de9faee04e7e4baa92906db696b78689f53de0a83
size: 3117
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/amazonka-core
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/amazonka-core
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-cloudformation
pantry-tree:
sha256: a9f557fdf3f3d5f960a28921465609e338ce702e1ecdf6e559e01efdccb364a6
size: 25784
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-cloudformation
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-cloudformation
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-cloudwatch-logs
pantry-tree:
sha256: 601fdd737cfb7f67cc4bcacf72486bb78ba11b4a76b4503ed0f00192500217d5
size: 13187
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-cloudwatch-logs
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-cloudwatch-logs
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-ecr
pantry-tree:
sha256: 8c8b2a242ac973b0205916de20d8066cf3820acd47d98d6ec6df9182f6b31966
size: 12161
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-ecr
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-ecr
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-ecs
pantry-tree:
sha256: dde2e3f64a4b08454cc6777c07694a7aaf9a88cd9ebe7c16968f730caea3b294
size: 23534
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-ecs
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-ecs
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-polly
pantry-tree:
sha256: 628af25cfc399c273899369ead231e9df69f49d52a4b4d53b172f843d838155a
size: 3854
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-polly
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-polly
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-rds
pantry-tree:
sha256: dc3cc364dc96b1f65986931e845d319ba04ca2782ce12b64fe0751722ab11c9c
size: 43795
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-rds
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-rds
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-s3
pantry-tree:
sha256: 57bc3c2aa426230e1f339fee5710eb43ace36d05c91113bd035b4de5aac26329
size: 37929
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-s3
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-s3
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-sns
pantry-tree:
sha256: 98e24892961bdee8bec5678f6e0840fd73be5f9092af19c50133be44afd4eaa9
size: 10926
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-sns
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-sns
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-ssm
pantry-tree:
sha256: 110e5cf1189657baa2a374408eb35c937d45e279baa51d28f1f8ee25a5e76d07
size: 53634
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-ssm
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-ssm
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-sso
pantry-tree:
sha256: f11babeeaf0481ae68134ced86e9d1d9396d1beb7bd70e0a1e6b77bc4148a192
size: 1869
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-sso
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-sso
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
- completed:
name: amazonka-sts
pantry-tree:
sha256: 64ed22eaaea868b32cf56f162d1bd7332b048d8f2ea073c4e9827ed08e71cc70
size: 2932
sha256: 14aeaa9f748f7ac03683e8a8126760ed16aa82152404a96c0333b582444cd381
size: 27775608
subdir: lib/services/amazonka-sts
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
version: '2.0'
original:
subdir: lib/services/amazonka-sts
url: https://github.com/brendanhay/amazonka/archive/f73a957d05f64863e867cf39d0db260718f0fadd.tar.gz
snapshots:
- completed:
sha256: 83c10f8382a619ebaf4b8c2855cf8b5455d23c920214d83c9b9cb37e8cb87b4f
size: 960
url: https://raw.githubusercontent.com/freckle/stackage-snapshots/main/lts/20/20.yaml
original:
url: https://raw.githubusercontent.com/freckle/stackage-snapshots/main/lts/20/20.yaml
- completed:
sha256: 126fa33ceb11f5e85ceb4e86d434756bd9a8439e2e5776d306a15fbc63b01e89
size: 650041
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/20.yaml
original: lts-20.20

0 comments on commit 813607a

Please sign in to comment.