Skip to content

Commit

Permalink
⬆️ Bump files with dotnet-file sync
Browse files Browse the repository at this point in the history
# devlooped/oss

- Switch back to latest stable includes devlooped/oss@875284b
- If we provide a docs category, don't exclude docs :) devlooped/oss@0c23e24
- Update .gitignore to ignore .genaiscript devlooped/oss@e0be248
- Make sure all stable versions are available for build/test devlooped/oss@06e898c
- Improve triage actions on issues devlooped/oss@33000c0
- Update typed resgen to opt-in only devlooped/oss@a8b2080
- Skip discussion issues when generating changelog devlooped/oss@08d83cb
- Point to main for dotnet-file sync workflow devlooped/oss@59aaf43
- Simplify .gitattributes devlooped/oss@5f92a68
- Attempt to get necessary permissions for default token devlooped/oss@85829f2
  • Loading branch information
devlooped-bot authored and kzu committed Feb 7, 2025
1 parent 5d737d3 commit 6030642
Show file tree
Hide file tree
Showing 13 changed files with 273 additions and 112 deletions.
22 changes: 3 additions & 19 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,24 +1,8 @@
# sln, csproj files (and friends) are always CRLF, even on linux
*.sln text eol=crlf
*.proj text eol=crlf
*.csproj text eol=crlf
# normalize by default
* text=auto encoding=UTF-8
*.sh text eol=lf

# These are windows specific files which we may as well ensure are
# always crlf on checkout
*.bat text eol=crlf
*.cmd text eol=crlf

# Opt in known filetypes to always normalize line endings on checkin
# and always use native endings on checkout
*.c text
*.config text
*.h text
*.cs text
*.md text
*.tt text
*.txt text

# Some must always be checked out as lf so enforce that for those files
# If these are not lf then bash/cygwin on windows will not be able to
# excute the files
*.sh text eol=lf
2 changes: 1 addition & 1 deletion .github/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ changelog:
- invalid
- wontfix
- need info
- docs
- techdebt
authors:
- devlooped-bot
Expand All @@ -24,6 +23,7 @@ changelog:
- title: 📝 Documentation updates
labels:
- docs
- documentation
- title: 🔨 Other
labels:
- '*'
Expand Down
23 changes: 13 additions & 10 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,32 +64,35 @@ jobs:
submodules: recursive
fetch-depth: 0

- name: ⚙ dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.x
8.x
9.x
- name: 🙏 build
run: dotnet build -m:1 -bl:build.binlog

- name: ⚙ GNU grep
if: matrix.os == 'macOS-latest'
run: |
brew install grep
echo 'export PATH="/usr/local/opt/grep/libexec/gnubin:$PATH"' >> .bash_profile
- name: 🧪 test
uses: ./.github/workflows/test
run: |
dotnet tool update -g dotnet-retest
dotnet retest -- --no-build
- name: 🐛 logs
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: runner.debug && always()
with:
name: logs
path: '*.binlog'

# Only push CI package to sleet feed if building on ubuntu (fastest)
- name: 🚀 sleet
env:
SLEET_CONNECTION: ${{ secrets.SLEET_CONNECTION }}
if: env.SLEET_CONNECTION != ''
run: |
dotnet tool install -g --version 4.0.18 sleet
dotnet tool update sleet -g --allow-downgrade --version $(curl -s --compressed ${{ vars.SLEET_FEED_URL }} | jq '.["sleet:version"]' -r)
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:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/changelog.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
usernames-as-github-logins=true
issues_wo_labels=true
pr_wo_labels=true
exclude-labels=bydesign,dependencies,duplicate,question,invalid,wontfix,need info,docs
exclude-labels=bydesign,dependencies,duplicate,discussion,question,invalid,wontfix,need info,docs
enhancement-label=:sparkles: Implemented enhancements:
bugs-label=:bug: Fixed bugs:
issues-label=:hammer: Other:
Expand Down
88 changes: 88 additions & 0 deletions .github/workflows/dotnet-file-core.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Synchronizes .netconfig-configured files with dotnet-file
name: dotnet-file-core
on:
workflow_call:

env:
DOTNET_NOLOGO: true

defaults:
run:
shell: pwsh

jobs:
sync:
runs-on: ubuntu-latest
continue-on-error: true
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@v4
with:
fetch-depth: 0
ref: main
token: ${{ env.GH_TOKEN }}

- name: ⌛ rate
if: github.event_name != 'workflow_dispatch'
run: |
# add random sleep since we run on fixed schedule
sleep (get-random -max 60)
# get currently authenticated user rate limit info
$rate = gh api rate_limit | convertfrom-json | select -expandproperty rate
# if we don't have at least 100 requests left, wait until reset
if ($rate.remaining -lt 10) {
$wait = ($rate.reset - (Get-Date (Get-Date).ToUniversalTime() -UFormat %s))
echo "Rate limit remaining is $($rate.remaining), waiting for $($wait / 1000) seconds to reset"
sleep $wait
$rate = gh api rate_limit | convertfrom-json | select -expandproperty rate
echo "Rate limit has reset to $($rate.remaining) requests"
}
- name: 🔄 sync
run: |
dotnet tool update -g dotnet-gcm
# store credentials in plaintext for linux compat
git config --local credential.credentialStore plaintext
dotnet gcm store --protocol=https --host=github.com --username=$env:GITHUB_ACTOR --password=$env:GH_TOKEN
gh auth status
dotnet tool update -g dotnet-file
$changelog = "$([System.IO.Path]::GetTempPath())dotnet-file.md"
dotnet file sync -c:$changelog
if (test-path $changelog) {
echo 'CHANGES<<EOF' >> $env:GITHUB_ENV
cat $changelog >> $env:GITHUB_ENV
echo 'EOF' >> $env:GITHUB_ENV
cat $changelog
} else {
echo 'No changelog was generated'
}
- name: +Mᐁ includes
uses: devlooped/actions-includes@v1
with:
validate: false

- name: ✍ pull request
uses: peter-evans/create-pull-request@v7
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"
body: ${{ env.CHANGES }}
token: ${{ env.GH_TOKEN }}
3 changes: 3 additions & 0 deletions .github/workflows/includes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ on:
jobs:
includes:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: 🤖 defaults
uses: devlooped/actions-bot@v1
Expand Down
25 changes: 18 additions & 7 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,32 @@ env:

jobs:
publish:
runs-on: ubuntu-latest
runs-on: ${{ vars.PUBLISH_AGENT || 'ubuntu-latest' }}
steps:
- name: 🤘 checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0

- name: ⚙ dotnet
uses: actions/setup-dotnet@v4
with:
dotnet-version: |
6.x
8.x
9.x
- name: 🙏 build
run: dotnet build -m:1 -bl:build.binlog

- name: 🧪 test
uses: ./.github/workflows/test
run: |
dotnet tool update -g dotnet-retest
dotnet retest -- --no-build
- name: 🐛 logs
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: runner.debug && always()
with:
name: logs
Expand All @@ -42,13 +52,14 @@ jobs:
- name: 🚀 nuget
env:
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
if: env.NUGET_API_KEY != ''
run: dotnet nuget push ./bin/**/*.nupkg -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} --skip-duplicate
if: ${{ env.NUGET_API_KEY != '' && github.event.action != 'prereleased' }}
working-directory: bin
run: dotnet nuget push *.nupkg -s https://api.nuget.org/v3/index.json -k ${{secrets.NUGET_API_KEY}} --skip-duplicate

- name: 🚀 sleet
env:
SLEET_CONNECTION: ${{ secrets.SLEET_CONNECTION }}
if: env.SLEET_CONNECTION != ''
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 tool update sleet -g --allow-downgrade --version $(curl -s --compressed ${{ vars.SLEET_FEED_URL }} | jq '.["sleet:version"]' -r)
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"
36 changes: 0 additions & 36 deletions .github/workflows/test/action.yml

This file was deleted.

103 changes: 103 additions & 0 deletions .github/workflows/triage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: 'triage'
on:
schedule:
- cron: '42 0 * * *'

workflow_dispatch:
# Manual triggering through the GitHub UI, API, or CLI
inputs:
daysBeforeClose:
description: "Days before closing stale or need info issues"
required: true
default: "30"
daysBeforeStale:
description: "Days before labeling stale"
required: true
default: "180"
daysSinceClose:
description: "Days since close to lock"
required: true
default: "30"
daysSinceUpdate:
description: "Days since update to lock"
required: true
default: "30"

permissions:
actions: write # For managing the operation state cache
issues: write
contents: read

jobs:
stale:
# Do not run on forks
if: github.repository_owner == 'devlooped'
runs-on: ubuntu-latest
steps:
- name: ⌛ rate
shell: pwsh
if: github.event_name != 'workflow_dispatch'
env:
GH_TOKEN: ${{ secrets.DEVLOOPED_TOKEN }}
run: |
# add random sleep since we run on fixed schedule
$wait = get-random -max 180
echo "Waiting random $wait seconds to start"
sleep $wait
# get currently authenticated user rate limit info
$rate = gh api rate_limit | convertfrom-json | select -expandproperty rate
# if we don't have at least 100 requests left, wait until reset
if ($rate.remaining -lt 100) {
$wait = ($rate.reset - (Get-Date (Get-Date).ToUniversalTime() -UFormat %s))
echo "Rate limit remaining is $($rate.remaining), waiting for $($wait / 1000) seconds to reset"
sleep $wait
$rate = gh api rate_limit | convertfrom-json | select -expandproperty rate
echo "Rate limit has reset to $($rate.remaining) requests"
}
- name: ✏️ stale labeler
# pending merge: https://github.com/actions/stale/pull/1176
uses: kzu/stale@c8450312ba97b204bf37545cb249742144d6ca69
with:
ascending: true # Process the oldest issues first
stale-issue-label: 'stale'
stale-issue-message: |
Due to lack of recent activity, this issue has been labeled as 'stale'.
It will be closed if no further activity occurs within ${{ fromJson(inputs.daysBeforeClose || 30 ) }} more days.
Any new comment will remove the label.
close-issue-message: |
This issue will now be closed since it has been labeled 'stale' without activity for ${{ fromJson(inputs.daysBeforeClose || 30 ) }} days.
days-before-stale: ${{ fromJson(inputs.daysBeforeStale || 180) }}
days-before-close: ${{ fromJson(inputs.daysBeforeClose || 30 ) }}
days-before-pr-close: -1 # Do not close PRs labeled as 'stale'
exempt-all-milestones: true
exempt-all-assignees: true
exempt-issue-labels: priority,sponsor,backed
exempt-authors: kzu

- name: 🤘 checkout actions
uses: actions/checkout@v4
with:
repository: 'microsoft/vscode-github-triage-actions'
ref: v42

- name: ⚙ install actions
run: npm install --production

- name: 🔒 issues locker
uses: ./locker
with:
token: ${{ secrets.DEVLOOPED_TOKEN }}
ignoredLabel: priority
daysSinceClose: ${{ fromJson(inputs.daysSinceClose || 30) }}
daysSinceUpdate: ${{ fromJson(inputs.daysSinceUpdate || 30) }}

- name: 🔒 need info closer
uses: ./needs-more-info-closer
with:
token: ${{ secrets.DEVLOOPED_TOKEN }}
label: 'need info'
closeDays: ${{ fromJson(inputs.daysBeforeClose || 30) }}
closeComment: "This issue has been closed automatically because it needs more information and has not had recent activity.\n\nHappy Coding!"
pingDays: 80
pingComment: "Hey @${assignee}, this issue might need further attention.\n\n@${author}, you can help us out by closing this issue if the problem no longer exists, or adding more information."
Loading

0 comments on commit 6030642

Please sign in to comment.