Repository navigation
82 lines (76 loc) · 2.89 KB
/
Copy pathpython.yml
File metadata and controls
82 lines (76 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
name: build python
on:
workflow_dispatch:
workflow_run:
workflows: [build base]
types: [completed]
branches:
- master
push:
branches:
- master
paths:
- python/**
- scripts/python/**
permissions:
contents: read
packages: write
jobs:
check_changes:
runs-on: ubuntu-latest
outputs:
python_changed: ${{ steps.filter.outputs.python_changed || 'false' }}
base_changed: ${{ steps.filter.outputs.base_changed || 'false' }}
steps:
- if: ${{ github.event_name == 'push' }}
uses: actions/checkout@v7
with:
fetch-depth: 0
- if: ${{ github.event_name == 'push' }}
id: filter
uses: dorny/paths-filter@v4
with:
filters: |
python_changed:
- 'python/**'
- 'scripts/python/**'
base_changed:
- 'base/**'
- 'scripts/base/ampstart.sh'
build_and_push:
needs: [check_changes]
if: ${{ github.repository_owner == 'CubeCoders' && github.ref == 'refs/heads/master' && ( (github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success') || (github.event_name == 'push' && needs.check_changes.outputs.python_changed == 'true' && needs.check_changes.outputs.base_changed != 'true') || github.event_name == 'workflow_dispatch' ) }}
name: 'ampbase:python-${{ matrix.python }}'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- python: '3'
alias: 'python3'
- python: '3.10'
- python: '3.11'
- python: '3.12'
- python: '3.13'
- python: '3.14'
- python: '3.15'
steps:
- uses: actions/checkout@v7
with:
ref: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.sha }}
- uses: ./.github/actions/build-image
with:
# python/3 bundles every version; the rest share python/Dockerfile via PYTHON_VERSION
file: ${{ matrix.python == '3' && './python/3/Dockerfile' || './python/Dockerfile' }}
build-args: ${{ matrix.python != '3' && format('PYTHON_VERSION={0}', matrix.python) || '' }}
tags: |
cubecoders/ampbase:python-${{ matrix.python }}
${{ matrix.alias && format('cubecoders/ampbase:{0}', matrix.alias) || '' }}
cache-from: type=gha,scope=${{ github.workflow }}-${{ matrix.python }}
cache-to: type=gha,mode=max,scope=${{ github.workflow }}-${{ matrix.python }}
smoke: python3 -c 'import ssl, sqlite3, ctypes, lzma, bz2' && pip3 --version && /usr/bin/python3 -m venv /tmp/v && /tmp/v/bin/python -c 'import socket'
dockerhub-username: ${{ vars.DOCKERHUB_USERNAME }}
dockerhub-token: ${{ secrets.DOCKERHUB_TOKEN }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false