-
Notifications
You must be signed in to change notification settings - Fork 3
142 lines (127 loc) · 4.7 KB
/
dependencies.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# # Automatically run `cargo update` periodically
# ---
# name: Bump dependencies in Cargo.lock
# on:
# schedule:
# # Run weekly
# - cron: '0 0 * * Sun'
# workflow_dispatch:
# # Needed so we can run it manually
# permissions:
# contents: read
# defaults:
# run:
# shell: bash
# env:
# # So cargo doesn't complain about unstable features
# RUSTC_BOOTSTRAP: 1
# PR_TITLE: Weekly `cargo update`
# PR_MESSAGE: |
# Automation to keep dependencies in `Cargo.lock` current.
# The following is the output from `cargo update`:
# COMMIT_MESSAGE: "cargo update \n\n"
# jobs:
# not-waiting-on-bors:
# if: github.repository_owner == 'rust-lang'
# name: skip if S-waiting-on-bors
# runs-on: ubuntu-latest
# steps:
# - env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# # Fetch state and labels of PR
# # Or exit successfully if PR does not exist
# JSON=$(gh pr view cargo_update --repo $GITHUB_REPOSITORY --json labels,state || exit 0)
# STATE=$(echo "$JSON" | jq -r '.state')
# WAITING_ON_BORS=$(echo "$JSON" | jq '.labels[] | any(.name == "S-waiting-on-bors"; .)')
# # Exit with error if open and S-waiting-on-bors
# if [[ "$STATE" == "OPEN" && "$WAITING_ON_BORS" == "true" ]]; then
# exit 1
# fi
# update:
# if: github.repository_owner == 'rust-lang'
# name: update dependencies
# needs: not-waiting-on-bors
# runs-on: ubuntu-latest
# steps:
# - name: checkout the source code
# uses: actions/checkout@v4
# with:
# submodules: recursive
# - name: install the bootstrap toolchain
# run: |
# # Extract the stage0 version
# TOOLCHAIN=$(jq -r '.compiler | {version,date} | join("-")' -- src/stage0.json)
# # Install and set as default
# rustup toolchain install --no-self-update --profile minimal $TOOLCHAIN
# rustup default $TOOLCHAIN
# - name: cargo update
# # Remove first line that always just says "Updating crates.io index"
# run: cargo update 2>&1 | sed '/crates.io index/d' | tee -a cargo_update.log
# - name: upload Cargo.lock artifact for use in PR
# uses: actions/upload-artifact@v3
# with:
# name: Cargo-lock
# path: Cargo.lock
# retention-days: 1
# - name: upload cargo-update log artifact for use in PR
# uses: actions/upload-artifact@v3
# with:
# name: cargo-updates
# path: cargo_update.log
# retention-days: 1
# pr:
# if: github.repository_owner == 'rust-lang'
# name: amend PR
# needs: update
# runs-on: ubuntu-latest
# permissions:
# contents: write
# pull-requests: write
# steps:
# - name: checkout the source code
# uses: actions/checkout@v4
# - name: download Cargo.lock from update job
# uses: actions/download-artifact@v3
# with:
# name: Cargo-lock
# - name: download cargo-update log from update job
# uses: actions/download-artifact@v3
# with:
# name: cargo-updates
# - name: craft PR body and commit message
# run: |
# echo "${COMMIT_MESSAGE}" > commit.txt
# cat cargo_update.log >> commit.txt
# echo "${PR_MESSAGE}" > body.md
# echo '```txt' >> body.md
# cat cargo_update.log >> body.md
# echo '```' >> body.md
# - name: commit
# run: |
# git config user.name github-actions
# git config user.email [email protected]
# git switch --force-create cargo_update
# git add ./Cargo.lock
# git commit --no-verify --file=commit.txt
# - name: push
# run: git push --no-verify --force --set-upstream origin cargo_update
# - name: edit existing open pull request
# id: edit
# # Don't fail job if we need to open new PR
# continue-on-error: true
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# # Exit with error if PR is closed
# STATE=$(gh pr view cargo_update --repo $GITHUB_REPOSITORY --json state --jq '.state')
# if [[ "$STATE" != "OPEN" ]]; then
# exit 1
# fi
# gh pr edit cargo_update --title "${PR_TITLE}" --body-file body.md --repo $GITHUB_REPOSITORY
# - name: open new pull request
# # Only run if there wasn't an existing PR
# if: steps.edit.outcome != 'success'
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: gh pr create --title "${PR_TITLE}" --body-file body.md --repo $GITHUB_REPOSITORY