-
Notifications
You must be signed in to change notification settings - Fork 380
Add workflow for updating release used by start-proxy
#2941
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 15 commits
6b9b66d
0180811
e8ad3af
286556a
7ca4105
37a3fcc
c55fb0a
fcd0ad4
46cafbc
e044b15
cce0287
9ee60a6
6a3692d
0cec254
6e22e41
bbfc5be
2e3b93f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
name: Update dependency proxy release assets | ||
on: | ||
push: | ||
branches: | ||
- mbg/update-proxy-binaries # for testing | ||
workflow_dispatch: | ||
inputs: | ||
tag: | ||
description: "The tag of CodeQL Bundle release that contains the proxy binaries as release assets" | ||
type: string | ||
required: true | ||
|
||
jobs: | ||
update: | ||
name: Update code and create PR | ||
timeout-minutes: 15 | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: write # needed to push the updated files | ||
pull-requests: write # needed to create the PR | ||
env: | ||
RELEASE_TAG: ${{ inputs.tag || 'codeql-bundle-v2.22.0' }} | ||
steps: | ||
- name: Check release tag format | ||
id: checks | ||
shell: bash | ||
run: | | ||
if ! [[ $RELEASE_TAG =~ ^codeql-bundle-v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | ||
echo "Invalid release tag: expected a CodeQL bundle tag in the 'codeql-bundle-vM.N.P' format." | ||
exit 1 | ||
fi | ||
|
||
echo "target_branch=dependency-proxy/$RELEASE_TAG" >> $GITHUB_OUTPUT | ||
|
||
- name: Check that the release exists | ||
shell: bash | ||
env: | ||
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | ||
run: | | ||
(gh release view --repo ${{ github.event.repository.full_name }} --json "assets" "$RELEASE_TAG" && echo "Release found.") || exit 1 | ||
mbg marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
- name: Install Node | ||
uses: actions/setup-node@v4 | ||
|
||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 0 # ensure we have all tags and can push commits | ||
ref: main | ||
Comment on lines
+42
to
+46
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If we move this checkout earlier than the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I had considered that, but explicitly adding the |
||
|
||
- name: Update git config | ||
shell: bash | ||
run: | | ||
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" | ||
git config --global user.name "github-actions[bot]" | ||
|
||
- name: Update release tag and version | ||
shell: bash | ||
run: | | ||
NOW=$(date +"%Y%m%d%H%M%S") # only used to make sure we don't fetch stale binaries from the toolcache | ||
sed -i "s|https://github.com/github/codeql-action/releases/download/codeql-bundle-v[0-9.]\+/|https://github.com/github/codeql-action/releases/download/$RELEASE_TAG/|g" ./src/start-proxy-action.ts | ||
sed -i "s/\"v2.0.[0-9]\+\"/\"v2.0.$NOW\"/g" ./src/start-proxy-action.ts | ||
|
||
- name: Compile TypeScript and commit changes | ||
shell: bash | ||
run: | | ||
set -exu | ||
git checkout -b "${{ steps.checks.outputs.target_branch }}" | ||
mbg marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
npm run build | ||
git add ./src/start-proxy-action.ts | ||
git add ./lib | ||
git commit -m "Update release used by \`start-proxy\` action" | ||
|
||
- name: Push changes and open PR | ||
shell: bash | ||
env: | ||
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" | ||
run: | | ||
set -exu | ||
pr_title="Update release used by \`start-proxy\` to \`$RELEASE_TAG\`" | ||
pr_body=$(cat << EOF | ||
This PR updates the \`start-proxy\` action to use the private registry proxy binaries that | ||
are attached as release assets to the \`$RELEASE_TAG\` release. | ||
|
||
|
||
Please do the following before merging: | ||
|
||
- [ ] Verify that the changes to the code are correct. | ||
- [ ] Mark the PR as ready for review to trigger the CI. | ||
EOF | ||
) | ||
|
||
git push origin "${{ steps.checks.outputs.target_branch }}" | ||
mbg marked this conversation as resolved.
Show resolved
Hide resolved
|
||
gh pr create \ | ||
--head "${{ steps.checks.outputs.target_branch }}" \ | ||
mbg marked this conversation as resolved.
Show resolved
Hide resolved
|
||
--base "main" \ | ||
--title "${pr_title}" \ | ||
--body "${pr_body}" \ | ||
${{ (github.event_name == 'workflow_dispatch' && '--draft') || '--dry-run' }} | ||
mbg marked this conversation as resolved.
Show resolved
Hide resolved
|
Uh oh!
There was an error while loading. Please reload this page.