Skip to content

Update Manifests

Update Manifests #280

# If you make any fixes or improvements to this file, please upstream the changes back to:
# https://github.com/julia-actions/manifest-updater-examples
# Specifically, this file:
# https://github.com/julia-actions/manifest-updater-examples/blob/main/.github/workflows/single_pr.yml
name: Update Manifests
on:
schedule:
- cron: 0 0 * * 1
workflow_dispatch:
permissions:
contents: read
defaults:
run:
shell: bash
jobs:
update_each_manifest:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
version:
# Keep this list in sync with `ci.yml`.
- '1.3'
- '1.4'
- '1.5'
- '1.6'
- '1.7'
- '1.8'
- '1.9'
- '1.10'
# - 'nightly' # TODO: uncomment this line
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v3.3.0
- uses: julia-actions/setup-julia@f2258781c657ad9b4b88072c5eeaf9ec8c370874 # v2.0.0
with:
version: ${{ matrix.version }}
arch: x64
- run: write(ENV["GITHUB_OUTPUT"], "manifest_version=$(VERSION.major).$(VERSION.minor)")
shell: julia --color=yes {0}
id: manifest_version
- run: echo "We will update the manifest at .ci/Manifest.${{ steps.manifest_version.outputs.manifest_version }}.toml"
- run: rm -rf .ci/Manifest.toml
- run: |
if [ -f ".ci/Manifest.${{ steps.manifest_version.outputs.manifest_version }}.toml" ]; then
echo "The manifest file exists, so I will update the existing manifest."
mv .ci/Manifest.${{ steps.manifest_version.outputs.manifest_version }}.toml .ci/Manifest.toml
else
echo "The manifest file does not exist, so I will create a new manifest from scratch."
fi
- name: Cache artifacts
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
env:
cache-name: cache-artifacts
with:
path: ~/.julia/artifacts
key: ${{ runner.os }}-test-${{ env.cache-name }}-${{ hashFiles('**/.ci/Manifest.toml') }}
restore-keys: |
${{ runner.os }}-test-${{ env.cache-name }}-
${{ runner.os }}-test-
${{ runner.os }}-
- run: julia --color=yes -e 'import Pkg; Pkg.Registry.add("General")'
env:
JULIA_PKG_SERVER: ""
- run: julia --color=yes -e 'import Pkg; Pkg.Registry.update()'
- run: .ci/instantiate.sh
- run: julia --color=yes --project=.ci/ -e 'import Pkg; Pkg.update()'
- run: |
if Base.VERSION >= v"1.6"
file = abspath(".ci", "shorten_manifest_version_master.jl")
if ispath(file)
include(file)
shorten_manifest_version_master(abspath(".ci"))
end
end
shell: julia --color=yes {0}
- run: mv .ci/Manifest.toml .ci/Manifest.${{ steps.manifest_version.outputs.manifest_version }}.toml
- run: git status
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
with:
name: manifest_file_for_${{ steps.manifest_version.outputs.manifest_version }}
path: .ci/Manifest.${{ steps.manifest_version.outputs.manifest_version }}.toml
if-no-files-found: error
make_single_pr:
needs: update_each_manifest
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
steps:
- uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
- run: rm -rf /tmp/manifest_updater
- run: mkdir /tmp/manifest_updater
- run: chmod 700 /tmp/manifest_updater
- uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
with:
path: /tmp/manifest_updater/download_artifacts
- run: mv /tmp/manifest_updater/download_artifacts/manifest_file_for_*/Manifest.*.toml .ci
- run: rm -rf /tmp/manifest_updater
- run: rm -rf .ci/Manifest.toml
- run: chmod 600 .ci/Project.toml
- run: chmod 600 .ci/Manifest.*.toml
- run: git status
- uses: peter-evans/create-pull-request@6d6857d36972b65feb161a90e484f2984215f83e # v6.0.5
with:
token: ${{ secrets.TAGBOT_TOKEN }}
delete-branch: true
branch: 'update_manifests/single_pr/all_manifests'
commit-message: '🤖 Update one or more manifest files in the `.ci` directory'
title: '🤖 Update one or more manifest files in the `.ci` directory'
body: ''
labels: |
CI