ci-locks #316
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Reference: | |
# - https://github.com/actions/cache | |
# - https://github.com/actions/checkout | |
# - https://github.com/actions/download-artifact | |
# - https://github.com/actions/upload-artifact | |
# - https://github.com/conda-incubator/setup-miniconda | |
name: ci-locks | |
on: | |
workflow_dispatch: | |
schedule: | |
# every sunday @ 00h03 | |
- cron: "3 0 * * 0" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash -l {0} | |
jobs: | |
build-locks: | |
name: "${{ matrix.session }} (${{ matrix.version }})" | |
runs-on: ubuntu-latest | |
env: | |
ENV_NAME: "ci-locks" | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-latest"] | |
version: ["py311", "py312", "py313"] | |
session: ["lock"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: "environment configure" | |
env: | |
# Maximum cache period (in weeks) before forcing a cache refresh. | |
CACHE_WEEKS: 2 | |
run: | | |
echo "CACHE_PERIOD=$(date +%Y).$(expr $(date +%U) / ${CACHE_WEEKS})" >> ${GITHUB_ENV} | |
echo "PY_MAJOR=$(echo -n ${{ matrix.version }} | tail -c 3 | head -c 1)" >> ${GITHUB_ENV} | |
echo "PY_MINOR=$(echo -n ${{ matrix.version }} | tail -c 2)" >> ${GITHUB_ENV} | |
- name: "conda package cache" | |
uses: ./.github/workflows/composite/conda-pkg-cache | |
with: | |
cache_period: ${{ env.CACHE_PERIOD }} | |
env_name: ${{ env.ENV_NAME }} | |
- name: "conda install" | |
uses: conda-incubator/setup-miniconda@a4260408e20b96e80095f42ff7f1a15b27dd94ca | |
with: | |
miniforge-version: latest | |
activate-environment: ${{ env.ENV_NAME }} | |
use-only-tar-bz2: false | |
- name: "conda environment cache" | |
uses: ./.github/workflows/composite/conda-env-cache | |
with: | |
cache_period: ${{ env.CACHE_PERIOD }} | |
env_name: ${{ env.ENV_NAME }} | |
install_packages: "conda-lock jinja2" | |
- name: "conda info" | |
run: | | |
conda info | |
conda list | |
- name: "lock (${{ matrix.version }})" | |
env: | |
VTK_BUILD: " - vtk=*=qt_*" | |
working-directory: requirements/locks | |
run: | | |
python -c 'open("../geovista.yml", "a").write("\n - python =${{ env.PY_MAJOR }}.${{ env.PY_MINOR }}\n${{ env.VTK_BUILD }}\n")' | |
conda-lock --mamba --channel conda-forge --kind explicit --file ../geovista.yml --platform linux-64 --filename-template "${{ matrix.version }}-lock-{platform}.txt" | |
python lock2yaml.py ${{ matrix.version }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: lock-artifacts-${{ github.job }}-${{ strategy.job-index }} | |
path: | | |
${{ github.workspace }}/requirements/locks/${{ matrix.version }}*.txt | |
${{ github.workspace }}/requirements/locks/${{ matrix.version }}*.yml | |
create-pr: | |
needs: build-locks | |
name: "create pull-request" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: lock-artifacts-* | |
path: ${{ github.workspace }}/requirements/locks | |
merge-multiple: true | |
- name: "generate token" | |
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a | |
id: generate-token | |
with: | |
app_id: ${{ secrets.AUTH_APP_ID }} | |
private_key: ${{ secrets.AUTH_APP_PRIVATE_KEY }} | |
- name: "generate pull-request" | |
id: cpr | |
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f | |
with: | |
token: ${{ steps.generate-token.outputs.token }} | |
add-paths: | | |
${{ github.workspace }}/requirements/locks/*.txt | |
${{ github.workspace }}/requirements/locks/*.yml | |
commit-message: "updated conda lock files" | |
branch: conda-lock-auto-update | |
delete-branch: true | |
title: "chore: bump conda lock files" | |
body: | | |
🤖 Bleep! Bloop! | |
Conda lock files for `linux-64` auto-updated to latest resolved environment of `geovista` dependencies. | |
labels: | | |
new: pull request | |
bot | |
skip changelog | |
- name: "show pull-request" | |
if: steps.cpr.outputs.pull-request-number != '' | |
run: | | |
echo "### :rocket: Pull-Request Summary" >> ${GITHUB_STEP_SUMMARY} | |
echo "" >> ${GITHUB_STEP_SUMMARY} | |
echo "The following locks pull-request has been auto-generated:" >> ${GITHUB_STEP_SUMMARY} | |
echo "- **PR** #${{ steps.cpr.outputs.pull-request-number }}" >> ${GITHUB_STEP_SUMMARY} | |
echo "- **URL** ${{ steps.cpr.outputs.pull-request-url }}" >> ${GITHUB_STEP_SUMMARY} | |
echo "- **Operation** [${{ steps.cpr.outputs.pull-request-operation }}]" >> ${GITHUB_STEP_SUMMARY} | |
echo "- **SHA** ${{ steps.cpr.outputs.pull-request-head-sha }}" >> ${GITHUB_STEP_SUMMARY} |