diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e18ee67..211caab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,30 +23,29 @@ defaults: shell: bash jobs: - dotnet-format: + os-matrix: runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.lookup.outputs.matrix }} steps: - name: 🀘 checkout uses: actions/checkout@v2 - with: - submodules: recursive - fetch-depth: 0 - - - name: βš™ dotnet - uses: actions/setup-dotnet@v1 - with: - dotnet-version: '6.0.x' - - - name: βœ“ ensure format - run: dotnet format --verify-no-changes -v:diag --exclude ~/.nuget + + - name: πŸ”Ž lookup + id: lookup + shell: pwsh + run: | + $path = './.github/workflows/os-matrix.json' + $os = if (test-path $path) { cat $path } else { '["ubuntu-latest"]' } + echo "::set-output name=matrix::$os" build: + needs: os-matrix name: build-${{ matrix.os }} - needs: dotnet-format runs-on: ${{ matrix.os }} strategy: matrix: - os: [windows-latest, ubuntu-latest, macOS-latest] + os: ${{ fromJSON(needs.os-matrix.outputs.matrix) }} steps: - name: 🀘 checkout uses: actions/checkout@v2 @@ -83,3 +82,21 @@ jobs: run: | dotnet tool install -g --version 4.0.18 sleet sleet push bin --config none -f --verbose -p "SLEET_FEED_CONTAINER=nuget" -p "SLEET_FEED_CONNECTIONSTRING=${{ secrets.SLEET_CONNECTION }}" -p "SLEET_FEED_TYPE=azure" || echo "No packages found" + + dotnet-format: + runs-on: ubuntu-latest + needs: build + steps: + - name: 🀘 checkout + uses: actions/checkout@v2 + with: + submodules: recursive + fetch-depth: 0 + + - name: βš™ dotnet + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '6.0.x' + + - name: βœ“ ensure format + run: dotnet format --verify-no-changes -v:diag --exclude ~/.nuget diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index b535f6e..996f1a7 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -1,29 +1,28 @@ ο»Ώname: changelog on: + workflow_dispatch: release: types: [released] - workflow_dispatch: - -env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} jobs: changelog: runs-on: ubuntu-latest steps: - - name: πŸ” GH_TOKEN - if: env.GH_TOKEN == '' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: echo "GH_TOKEN=${GITHUB_TOKEN}" >> $GITHUB_ENV - + - name: πŸ€– defaults + uses: devlooped/actions-bot@v1 + with: + name: ${{ secrets.BOT_NAME }} + email: ${{ secrets.BOT_EMAIL }} + gh_token: ${{ secrets.GH_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: 🀘 checkout uses: actions/checkout@v2 with: fetch-depth: 0 ref: main token: ${{ env.GH_TOKEN }} - + - name: βš™ ruby uses: ruby/setup-ruby@v1 with: @@ -32,11 +31,9 @@ jobs: - name: βš™ changelog run: | gem install github_changelog_generator - github_changelog_generator --user ${GITHUB_REPOSITORY%/*} --project ${GITHUB_REPOSITORY##*/} --token ${{ secrets.GITHUB_TOKEN }} --o changelog.md --config-file .github/.github_changelog_generator + github_changelog_generator --user ${GITHUB_REPOSITORY%/*} --project ${GITHUB_REPOSITORY##*/} --token $GH_TOKEN --o changelog.md --config-file .github/.github_changelog_generator - name: πŸš€ changelog run: | - git config --local user.name github-actions - git config --local user.email github-actions@github.com git add changelog.md - (git commit -m "πŸ–‰ Update changelog with ${GITHUB_REF#refs/*/}" && git push) || echo "Done" + (git commit -m "πŸ–‰ Update changelog with ${GITHUB_REF#refs/*/}" && git push) || echo "Done" \ No newline at end of file diff --git a/.github/workflows/dotnet-file.yml b/.github/workflows/dotnet-file.yml index 66289e2..6ebf30f 100644 --- a/.github/workflows/dotnet-file.yml +++ b/.github/workflows/dotnet-file.yml @@ -9,18 +9,25 @@ on: env: DOTNET_NOLOGO: true - GH_TOKEN: ${{ secrets.GH_TOKEN }} jobs: sync: runs-on: windows-latest steps: - - name: πŸ” GH_TOKEN - if: env.GH_TOKEN == '' - shell: bash - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: echo "GH_TOKEN=${GITHUB_TOKEN}" >> $GITHUB_ENV + - name: πŸ€– defaults + uses: devlooped/actions-bot@v1 + with: + name: ${{ secrets.BOT_NAME }} + email: ${{ secrets.BOT_EMAIL }} + gh_token: ${{ secrets.GH_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN }} + + - name: 🀘 checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + ref: main + token: ${{ env.GH_TOKEN }} - name: βŒ› rate shell: pwsh @@ -38,13 +45,6 @@ jobs: echo "Rate limit has reset to $($rate.remaining) requests" } - - name: 🀘 checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 - ref: main - token: ${{ env.GH_TOKEN }} - - name: πŸ”„ sync shell: pwsh run: | @@ -63,16 +63,24 @@ jobs: echo 'No changelog was generated' } + - name: +Mᐁ includes + uses: devlooped/actions-include@v1 + with: + validate: false + - name: ✍ pull request uses: peter-evans/create-pull-request@v3 + continue-on-error: true with: base: main branch: dotnet-file-sync delete-branch: true labels: dependencies + author: ${{ env.BOT_AUTHOR }} + committer: ${{ env.BOT_AUTHOR }} commit-message: ⬆️ Bump files with dotnet-file sync ${{ env.CHANGES }} - title: "Bump files with dotnet-file sync" + title: "⬆️ Bump files with dotnet-file sync" body: ${{ env.CHANGES }} token: ${{ env.GH_TOKEN }} diff --git a/.github/workflows/includes.yml b/.github/workflows/includes.yml index 230127e..04dc2ba 100644 --- a/.github/workflows/includes.yml +++ b/.github/workflows/includes.yml @@ -1,4 +1,4 @@ -name: +Mβ–Ό includes +name: +Mᐁ includes on: workflow_dispatch: push: @@ -6,16 +6,27 @@ on: - 'main' paths: - '**.md' + - '!changelog.md' jobs: includes: runs-on: ubuntu-latest steps: + - name: πŸ€– defaults + uses: devlooped/actions-bot@v1 + with: + name: ${{ secrets.BOT_NAME }} + email: ${{ secrets.BOT_EMAIL }} + gh_token: ${{ secrets.GH_TOKEN }} + github_token: ${{ secrets.GITHUB_TOKEN }} + - name: 🀘 checkout uses: actions/checkout@v2 + with: + token: ${{ env.GH_TOKEN }} - - name: +Mβ–Ό includes - uses: devlooped/actions-include@v4 + - name: +Mᐁ includes + uses: devlooped/actions-include@v1 - name: ✍ pull request uses: peter-evans/create-pull-request@v3 @@ -23,6 +34,10 @@ jobs: base: main branch: markdown-includes delete-branch: true - commit-message: +Mβ–Ό includes - title: +Mβ–Ό includes - body: +Mβ–Ό includes + labels: docs + author: ${{ env.BOT_AUTHOR }} + committer: ${{ env.BOT_AUTHOR }} + commit-message: +Mᐁ includes + title: +Mᐁ includes + body: +Mᐁ includes + token: ${{ env.GH_TOKEN }} diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index b3ab8ee..d31e1f0 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -42,13 +42,13 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - $id = iwr "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/releases/tags/$env:CURRENT_TAG" | + $headers = @{ 'Accept'='application/vnd.github.v3+json;charset=utf-8'; 'Authorization' = "bearer $env:GITHUB_TOKEN" } + $id = iwr "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/releases/tags/$env:CURRENT_TAG" -Headers $headers | select -ExpandProperty Content | ConvertFrom-Json | select -ExpandProperty id $notes = (Get-Content .\changelog.md | where { !($_ -like '\*') } | %{ $_.replace('\', '\\').replace('"', "'").replace('undefined', 'un-defined') }) -join '\n' - $headers = @{ 'Accept'='application/vnd.github.v3+json;charset=utf-8'; 'Authorization' = "bearer $env:GITHUB_TOKEN" } $body = '{ "body":"' + $notes + '" }' # ensure we can convert to json diff --git a/.github/workflows/sponsor.yml b/.github/workflows/sponsor.yml new file mode 100644 index 0000000..f74e990 --- /dev/null +++ b/.github/workflows/sponsor.yml @@ -0,0 +1,19 @@ +name: sponsor ❀️ +on: + issues: + types: [opened, edited, reopened] + pull_request: + types: [opened, edited, synchronize, reopened] + +jobs: + sponsor: + runs-on: ubuntu-latest + if: ${{ !endsWith(github.event.sender.login, '[bot]') && !endsWith(github.event.sender.login, 'bot') }} + steps: + - name: 🀘 checkout + uses: actions/checkout@v2 + + - name: ❀️ sponsor + uses: devlooped/actions-sponsor@main + with: + token: ${{ secrets.GH_TOKEN }} diff --git a/.github/workflows/sponsors.ps1 b/.github/workflows/sponsors.ps1 deleted file mode 100644 index 791fd7c..0000000 --- a/.github/workflows/sponsors.ps1 +++ /dev/null @@ -1,59 +0,0 @@ -$event = Get-Content -Path $env:GITHUB_EVENT_PATH | ConvertFrom-Json -$author = $event.issue ? $event.issue.user.node_id : $event.pull_request.user.node_id - -if ($author -eq $null) { - throw 'No user id found' -} - -gh auth status - -echo "Looking up sponsorship from $env:GITHUB_ACTOR ..." - -$query = gh api graphql --paginate -f owner='devlooped' -f query=' -query($owner: String!, $endCursor: String) { - organization (login: $owner) { - sponsorshipsAsMaintainer (first: 100, after: $endCursor) { - nodes { - sponsorEntity { - ... on Organization { id, name } - ... on User { id, name } - } - tier { monthlyPriceInDollars } - } - pageInfo { - hasNextPage - endCursor - } - } - } -} -' - -$amount = - $query | - ConvertFrom-Json | - select @{ Name='nodes'; Expression={$_.data.organization.sponsorshipsAsMaintainer.nodes}} | - select -ExpandProperty nodes | - where { $_.sponsorEntity.id -eq $author } | - select -ExpandProperty tier | - select -ExpandProperty monthlyPriceInDollars - -if ($null -eq $amount) { - echo "Author is not a sponsor! Nothing left to do." - return -} - -echo "Author is a sponsor!" - -$headers = @{ 'Accept'='application/vnd.github.v3+json;charset=utf-8'; 'Authorization' = "bearer $env:GH_TOKEN" } - -# Try creating the labels, ignore errors (i.e. already created) -iwr -Body '{ "name":"sponsor :purple_heart:", "color":"ea4aaa", "description":"sponsor" }' "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/labels" -Method Post -Headers $headers -SkipHttpErrorCheck -UseBasicParsing | select -ExpandProperty StatusCode -iwr -Body '{ "name":"sponsor :yellow_heart:", "color":"ea4aaa", "description":"sponsor++" }' "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/labels" -Method Post -Headers $headers -SkipHttpErrorCheck -UseBasicParsing | select -ExpandProperty StatusCode - -$number = $event.issue ? $event.issue.number : $event.pull_request.number -$labels = $amount -ge 100 ? '{"labels":["sponsor :yellow_heart:"]}' : '{"labels":["sponsor :purple_heart:"]}' - -iwr -Body $labels "$env:GITHUB_API_URL/repos/$env:GITHUB_REPOSITORY/issues/$number/labels" -Method Post -Headers $headers -SkipHttpErrorCheck -UseBasicParsing | select -ExpandProperty StatusCode - -echo 'Label applied' diff --git a/.github/workflows/sponsors.yml b/.github/workflows/sponsors.yml deleted file mode 100644 index 23158a7..0000000 --- a/.github/workflows/sponsors.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Runs on new issues/PRs and applies sponsor labels - -name: sponsors -on: - issues: - types: [opened] - -jobs: - sponsors: - runs-on: windows-latest - steps: - - name: 🀘 checkout - uses: actions/checkout@v2 - - - name: πŸ”½ gh - run: | - iex "& {$(irm get.scoop.sh)} -RunAsAdmin" - scoop install gh - - - name: πŸ’› sponsors - run: ./.github/workflows/sponsors.ps1 - env: - GH_TOKEN: ${{ secrets.DEVLOOPED_TOKEN }} diff --git a/.netconfig b/.netconfig index a91e1ff..7b3a013 100644 --- a/.netconfig +++ b/.netconfig @@ -48,9 +48,9 @@ sha = 0683ee777d7d878d4bf013d7deea352685135a05 [file ".github/workflows/build.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/build.yml - etag = 4e65025ab77d15766520234d3a9953ff4f1eea91620e1080f10909de19804877 + etag = 546728274c46d85038c67a385df421cb8865552673ada35fcf0b30ff4f1c7548 weak - sha = e19ed3228a0ac7f64a43197241a788fb224a683f + sha = cf8e33983b111d06b8e3a89fce5d8b8d97750f59 [file ".gitignore"] url = https://github.com/devlooped/oss/blob/main/.gitignore etag = 1c1705a3f0ed65e33c9133996ebaa100aa445a8b968b2904ad48fef938702006 @@ -116,13 +116,13 @@ sha = a0f58a6d63e48ae6e55944c556d0bc94476dc8df [file ".github/workflows/changelog.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/changelog.yml - sha = be8f625e4cf5c2c572c7e56ba6dc4c4935ab0c00 - etag = 202803313c2792cb09d9cb8041fe4b39e550e26c90971a57b92534c599a596a7 + sha = 5406d907e0bf87dd1b4375f2ae2279dd775ed672 + etag = 034c69fefe727b412a52e49964646131b899d6e7bb1576fe9d4a4db9208675ff weak [file ".github/workflows/dotnet-file.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/dotnet-file.yml - sha = ef47d782b45dbf3dc7f47f39168a2eed9c536a40 - etag = 41db5ebfb3f06bf2a9d55919f50a10fa80057a0d636532beac3b77464c3c1b5d + sha = b97b8f19569fa1b93cece4b22afab0e838693c5a + etag = a9d246d40ee9cf9796fe694835b787cba415f4f23e919c6a763dd3ebfa607681 weak [file ".github/workflows/publish.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/publish.yml @@ -134,24 +134,14 @@ skip [file ".github/workflows/release-notes.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/release-notes.yml - sha = be8f625e4cf5c2c572c7e56ba6dc4c4935ab0c00 - etag = d1de9cb9c403ed8632d22d4cc153ae63b075266b9ce638b9ac73fd47dd2bccc1 + sha = a922d0300a188bbd872bcf8ca48c6b7a13dee5df + etag = 5db902d761d80de182417cfbece00cbb6d1fa4b99a945b3a97c57f58f7043b5d weak [file ".github/workflows/pages.yml"] url = https://github.com/devlooped/.github/blob/main/.github/workflows/pages.yml sha = e8f3774884afda36ac177c4193929d24d7901de9 etag = 42fdc888e07b492cccc6fd29972bd9ea6f13691a3fdf057e07f3f8eec9330b7a weak -[file ".github/workflows/sponsors.ps1"] - url = https://github.com/devlooped/.github/blob/main/.github/workflows/sponsors.ps1 - sha = 11f5c27cfdb304436ef0b7ee27ff333cda31ef65 - etag = 57a303125f3367b68ad0700d89ff4ba57cb29b33b303903488c9c8638d0bf735 - weak -[file ".github/workflows/sponsors.yml"] - url = https://github.com/devlooped/.github/blob/main/.github/workflows/sponsors.yml - sha = 8b6384e91fdfcf8f3cc9b3b262a9ca2a1095d06a - etag = 2c05a753600913f546c37a2ea9393b3ede3b6f8473e5c2d53462aa7342af7078 - weak [file "Gemfile"] url = https://github.com/devlooped/.github/blob/main/Gemfile sha = f2dc1370469bec1b2d32d82faf659b050cdc7e2a @@ -174,13 +164,16 @@ weak [file ".github/workflows/includes.yml"] url = https://github.com/devlooped/oss/blob/main/.github/workflows/includes.yml - sha = 66caefba98939c5c0505ab536417aa4ec4eec240 - etag = acdb356278d3f41cf3cd4620ff81d16caddd2571ccfee73f5a86ffbd4f8c9944 - weak -[file "docs/footer.md"] - url = https://github.com/devlooped/oss/blob/main/docs/footer.md - sha = 56086e5645a50f8dc837bab919f7c12f6c50e070 - etag = 6e45ba613fdc949a6a5d84ed8efd5cc1b36d13bb0fd965e206fd5e92b604e2d0 + sha = 5d05e541d7b028d64b044c5b9cc80afa19dc0de0 + etag = c73a2aa293ec204e46771a99b095566082cad7989595ea725e5d76b27fe90894 weak [file "docs/sponsors.md"] url = https://github.com/devlooped/sponsors/blob/main/sponsors.md + sha = 04f5dfbc23ea499703f23bd547e6fcb61dbfcbf8 + etag = f9cbf44977602aaeb14aa5e3fbfebfb3199beb405ca46af57edd108f25653d08 + weak +[file ".github/workflows/sponsor.yml"] + url = https://github.com/devlooped/.github/blob/main/.github/workflows/sponsor.yml + sha = e347e5c7b91aaeb11eff95037c2c0b54206cc976 + etag = 06319ff741c03cf4cd5113926d490ec09999a85b5a0e0480ce44222db026341a + weak diff --git a/docs/footer.md b/docs/footer.md deleted file mode 100644 index 34b8951..0000000 --- a/docs/footer.md +++ /dev/null @@ -1,38 +0,0 @@ -# Sponsors - - - - - - Kirill Osenkov - - - C. Augusto Proiete - - - SandRock - - - Amazon Web Services - - - Christian Findlay - - - Clarius Org - - - MFB Technologies, Inc. - - - - - - -
  - - - -
- -[Learn more about GitHub Sponsors](https://github.com/sponsors) diff --git a/docs/sponsors.md b/docs/sponsors.md index 663c171..67575c6 100644 --- a/docs/sponsors.md +++ b/docs/sponsors.md @@ -1,25 +1,9 @@ - +[![Clarius Org](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/clarius.png "Clarius Org")](https://github.com/clarius) +[![Christian Findlay](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/MelbourneDeveloper.png "Christian Findlay")](https://github.com/MelbourneDeveloper) +[![C. Augusto Proiete](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/augustoproiete.png "C. Augusto Proiete")](https://github.com/augustoproiete) +[![Kirill Osenkov](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/KirillOsenkov.png "Kirill Osenkov")](https://github.com/KirillOsenkov) +[![MFB Technologies, Inc.](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/MFB-Technologies-Inc.png "MFB Technologies, Inc.")](https://github.com/MFB-Technologies-Inc) +[![SandRock](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/sandrock.png "SandRock")](https://github.com/sandrock) +[![Eric C](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/eeseewy.png "Eric C")](https://github.com/eeseewy) +[![Andy Gocke](https://raw.githubusercontent.com/devlooped/sponsors/main/.github/avatars/agocke.png "Andy Gocke")](https://github.com/agocke) - - Kirill Osenkov - - - C. Augusto Proiete - - - SandRock - - - Amazon Web Services - - - Christian Findlay - - - Clarius Org - - - MFB Technologies, Inc. - - -