Skip to content

ci-locks

ci-locks #302

Workflow file for this run

# 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
jobs:
build-locks:
name: "${{ matrix.session }} (${{ matrix.version }})"
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
env:
ENV_NAME: "ci-locks"
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
version: ["py311", "py312"]
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}
- 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 'from sys import version_info as v; open("../geovista.yml", "a").write(f"\n - python ={v.major}.{v.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}