From 165e99713bea1d015007a10b676b201b2451f832 Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Wed, 12 Apr 2023 17:08:57 +0200 Subject: [PATCH] .github: Port rust update action from old coreos-overlay --- .github/workflows/rust-apply-patch.sh | 40 ++++++++++++++++++++ .github/workflows/rust-release-main.yaml | 47 ++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100755 .github/workflows/rust-apply-patch.sh create mode 100644 .github/workflows/rust-release-main.yaml diff --git a/.github/workflows/rust-apply-patch.sh b/.github/workflows/rust-apply-patch.sh new file mode 100755 index 0000000000..1b51ce6335 --- /dev/null +++ b/.github/workflows/rust-apply-patch.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +set -euo pipefail + +source "${GHA_SCRIPTS_DIR}/.github/workflows/common.sh" + +prepare_git_repo + +pushd "${SDK_OUTER_OVERLAY}" + +VERSION_OLD=$(sed -n "s/^DIST rustc-\(1\.[0-9]*\.[0-9]*\).*/\1/p" dev-lang/rust/Manifest | sort -ruV | head -n1) +if [[ "${VERSION_NEW}" = "${VERSION_OLD}" ]]; then + echo "already the latest Rust, nothing to do" + exit 0 +fi + +# Replace (dev-lang/virtual)/rust versions in profiles/, e.g. package.accept_keywords. +# Try to match all kinds of version specifiers, e.g. >=, <=, =, ~. +find profiles -name 'package.*' | xargs sed -i "s/\([><]*=\|~\)*dev-lang\/rust-\S\+/\1dev-lang\/rust-${VERSION_NEW}/" +find profiles -name 'package.*' | xargs sed -i "s/\([><]*=\|~\)*virtual\/rust-\S\+/\1virtual\/rust-${VERSION_NEW}/" + +EBUILD_FILENAME=$(get_ebuild_filename dev-lang/rust "${VERSION_OLD}") +git mv "${EBUILD_FILENAME}" "dev-lang/rust/rust-${VERSION_NEW}.ebuild" +EBUILD_FILENAME=$(get_ebuild_filename virtual/rust "${VERSION_OLD}") +git mv "${EBUILD_FILENAME}" "virtual/rust/rust-${VERSION_NEW}.ebuild" + +popd + +URL="https://github.com/rust-lang/rust/releases/tag/${VERSION_NEW}" + +generate_update_changelog 'Rust' "${VERSION_NEW}" "${URL}" 'rust' + +commit_changes dev-lang/rust "${VERSION_OLD}" "${VERSION_NEW}" \ + profiles \ + virtual/rust + +cleanup_repo + +echo "VERSION_OLD=${VERSION_OLD}" >>"${GITHUB_OUTPUT}" +echo 'UPDATE_NEEDED=1' >>"${GITHUB_OUTPUT}" diff --git a/.github/workflows/rust-release-main.yaml b/.github/workflows/rust-release-main.yaml new file mode 100644 index 0000000000..0617abf9d3 --- /dev/null +++ b/.github/workflows/rust-release-main.yaml @@ -0,0 +1,47 @@ +name: Get the latest Rust release for main +on: + schedule: + - cron: '20 7 * * 2' + workflow_dispatch: + +jobs: + get-rust-release: + runs-on: ubuntu-latest + steps: + - name: Check out scripts + uses: actions/checkout@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + path: scripts + - name: Figure out latest Rust release version + id: rust-latest-release + run: | + version=$(git ls-remote --tags 'https://github.com/rust-lang/rust' | cut -f2 | sed -n "/refs\/tags\/1\.[0-9]*\.[0-9]*$/s/^refs\/tags\///p" | sort -ruV | head -n1) + echo "VERSION_NEW=${version}" >>"${GITHUB_OUTPUT}" + - name: Set up Flatcar SDK + id: setup-flatcar-sdk + env: + WORK_SCRIPTS_DIR: "${{ github.workspace }}/scripts" + CHANNEL: main + run: scripts/.github/workflows/setup-flatcar-sdk.sh + - name: Apply patch for main + id: apply-patch-main + env: + GHA_SCRIPTS_DIR: "${{ github.workspace }}/scripts" + WORK_SCRIPTS_DIR: "${{ github.workspace }}/scripts" + VERSION_NEW: ${{ steps.rust-latest-release.outputs.VERSION_NEW }} + PACKAGES_CONTAINER: ${{ steps.setup-flatcar-sdk.outputs.PACKAGES_CONTAINER }} + SDK_NAME: ${{ steps.setup-flatcar-sdk.outputs.SDK_NAME }} + run: scripts/.github/workflows/rust-apply-patch.sh + - name: Create pull request for main + id: create-pull-request + uses: peter-evans/create-pull-request@v5 + if: steps.apply-patch-main.outputs.UPDATE_NEEDED == 1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + path: scripts + branch: rust-${{ steps.rust-latest-release.outputs.VERSION_NEW }}-main + base: main + title: Upgrade dev-lang/rust and virtual/rust in main from ${{ steps.apply-patch-main.outputs.VERSION_OLD }} to ${{ steps.rust-latest-release.outputs.VERSION_NEW }} + body: Subject says it all. + labels: main