Skip to content

Auto Update

Auto Update #4467

Workflow file for this run

name: Auto Update
on:
schedule:
- cron: '0 0 * * FRI'
workflow_dispatch:
jobs:
update:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Install hub
run: sudo apt-get install -y hub
- uses: cachix/install-nix-action@V27
with:
nix_path: nixpkgs=channel:nixos-unstable
- uses: cachix/cachix-action@v15
with:
name: vulkan-haskell
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
- name: Init git
run: |
git config user.name 'Three Of Twelve'
git config user.email '[email protected]'
- id: init
run: |
message="> $(curl https://home.monoid.al/quote/tuvok --fail || echo "No response. He's deactivated his communication system.")"
message="${message//'%'/'%25'}"
message="${message//$'\n'/'%0A'}"
message="${message//$'\r'/'%0D'}"
issue_body=~/issue_body
echo "::set-output name=issue_body::$issue_body"
echo "$message" > "$issue_body"
echo >> "$issue_body"
pr_body=~/pr_body
echo "::set-output name=pr_body::$pr_body"
echo "$message" > "$pr_body"
echo >> "$pr_body"
- name: Build dependencies
run: |
nix-build -A generate-new
nix-build '<nixpkgs>' -A python3 -A python3Packages.pyparsing -A asciidoctor -A gnumake -A nodejs -A nodePackages.he -A nodePackages.escape-string-regexp
nix-build '<nixpkgs>' -A haskellPackages.hpack
nix-build '<nixpkgs>' -A doxygen
- name: run update.sh
id: update
env:
issue_body: ${{ steps.init.outputs.issue_body }}
pr_body: ${{ steps.init.outputs.pr_body }}
tok: ${{ secrets.TUVOK_TOKEN }}
run: |
ndd="$HOME/no-doc-diff.patch"
set +e
./scripts/update.sh --no-doc-diff "$ndd" 2>&1 | tee --append ~/update_output
code=${PIPESTATUS[0]}
set -e
{
echo '<details> <summary>log of `generate-new/bin/vk`</summary> <p>'
echo ''
echo '```'
cat ~/update_output
echo '```'
echo ''
echo '</p></details>'
} >> "$issue_body"
gist="$HOME/gist-post.json"
make_gist(){
set -o pipefail
jq -R -s '{"description": "Vulkan update diff", "public": false, "files": {"vulkan.diff": {"content": .}}}' < "$ndd" > "$gist" &&
curl \
--header "Content-Type: application/json" \
--data @"$gist" \
--user "$tok:" \
https://api.github.com/gists |
jq --raw-output .html_url |
sed 's/.*/[Diff without documentation changes](\0)/'
}
gist_url=$(make_gist || echo "Failed to create gist for diff")
echo gist_url = "$gist_url"
{
echo "pr_message<<EOF_HS_VK"
cat "$pr_body"
echo
echo "$gist_url"
echo "EOF_HS_VK"
} >> "$GITHUB_ENV"
(exit "$code")
- id: check_pr
run: |
echo "::set-output name=create_pr::true"
hub pr list --state open --head ThreeOfTwelve:vulkan-update-${{ steps.update.outputs.vulkan_version }} --format $'%U\n' | while read u; do
echo "PR already exists: $u"
echo "::set-output name=create_pr::false"
done
env:
GITHUB_TOKEN: ${{ secrets.TUVOK_TOKEN }}
- name: Create Pull Request
uses: peter-evans/[email protected]
if: steps.check_pr.outputs.create_pr == 'true'
with:
token: ${{ secrets.TUVOK_TOKEN }}
push-to-fork: ThreeOfTwelve/vulkan
delete-branch: true
branch: vulkan-update-${{ steps.update.outputs.vulkan_version }}
title: Update Vulkan to ${{ steps.update.outputs.vulkan_version }}
body: ${{ env.pr_message }}
- id: check_issue
if: ${{ failure() }}
run: |
echo "::set-output name=create_issue::true"
hub issue --state open --format $'%U %t\n' | grep -i 'Failed to regenerate source for Vulkan ${{ steps.update.outputs.vulkan_version }}' | while read u; do
echo "Issue already exists: $u"
echo "::set-output name=create_issue::false"
done
env:
GITHUB_TOKEN: ${{ secrets.TUVOK_TOKEN }}
- name: Create issue for failure
if: ${{ failure() && steps.check_issue.outputs.create_issue == 'true' }}
uses: peter-evans/create-issue-from-file@v5
with:
title: Failed to regenerate source for Vulkan ${{ steps.update.outputs.vulkan_version }}
content-filepath: ${{ steps.init.outputs.issue_body }}
token: ${{ secrets.TUVOK_TOKEN }}