ci-locks #297
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 | |
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: ["py310", "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 | |
channels: conda-forge,defaults | |
channel-priority: true | |
auto-update-conda: true | |
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: "pip 'tox<4'" | |
- name: "conda info" | |
run: | | |
conda info | |
conda list | |
- name: "tox cache" | |
uses: ./.github/workflows/composite/tox-cache | |
- name: "lock (${{ matrix.version }})" | |
env: | |
VTK_BUILD: " - vtk=*=qt_*" | |
run: | | |
tox -e ${{ matrix.version }}-lock | |
- 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: "[geovista.ci] conda lock auto-update" | |
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} |