1313 workflow_call :
1414 workflow_dispatch :
1515
16+ env :
17+ # Python のバージョン (Python Standalone Builds のリリースを指定する)
18+ # # ref: https://github.com/indygreg/python-build-standalone/releases
19+ PYTHON_TAG : ' 20251031'
20+ PYTHON_MAJOR_VERSION : ' 3.11'
21+ PYTHON_VERSION : ' 3.11.14'
22+ # Poetry のバージョン
23+ POETRY_VERSION : ' 1.8.5'
24+
1625# ジョブの定義
1726jobs :
1827
@@ -66,10 +75,14 @@ jobs:
6675 - arch : amd64
6776 runner : ubuntu-22.04
6877 artifact_suffix : ' '
78+ # x86_64_v2 にすると2008年以降の CPU に搭載されている SSE 命令が使える
79+ # ref: https://gregoryszorc.com/docs/python-build-standalone/main/running.html
80+ python_arch_name : x86_64_v2
6981 # arm64 アーキテクチャ向けのビルド設定
7082 - arch : arm64
7183 runner : ubuntu-22.04-arm
7284 artifact_suffix : ' -ARM'
85+ python_arch_name : aarch64
7386 runs-on : ${{ matrix.runner }}
7487 steps :
7588
@@ -78,25 +91,34 @@ jobs:
7891 uses : docker/setup-buildx-action@v3
7992
8093 # Dockerfile を作成
94+ # Python Standalone Builds を使用して Python 3.11 をインストールする
8195 - name : Create Dockerfile
8296 run : |
8397 cat <<EOF > Dockerfile
8498 FROM ubuntu:20.04
8599 ENV DEBIAN_FRONTEND=noninteractive
100+ # build-essential, curl, zlib などの必要なパッケージをインストール
86101 RUN apt-get update && \
87- apt-get install -y --no-install-recommends software-properties-common && \
88- add-apt-repository -y ppa:deadsnakes/ppa && \
89- apt-get install -y \
102+ apt-get install -y --no-install-recommends \
90103 build-essential \
91104 curl \
92- python3.11 \
93- python3.11-dev \
94- python3.11-distutils \
95- python3.11-venv \
96105 zlib1g \
97106 zlib1g-dev
98- RUN curl https://bootstrap.pypa.io/get-pip.py | python3.11
99- RUN python3.11 -m pip install poetry
107+ # Python Standalone Builds をダウンロードしてインストール
108+ RUN curl -L -o python.tar.gz https://github.com/indygreg/python-build-standalone/releases/download/${{ env.PYTHON_TAG }}/cpython-${{ env.PYTHON_VERSION }}+${{ env.PYTHON_TAG }}-${{ matrix.python_arch_name }}-unknown-linux-gnu-install_only_stripped.tar.gz && \
109+ tar xvf python.tar.gz && \
110+ mv python /usr/local/python && \
111+ rm python.tar.gz
112+ # Python をパスの通った場所にシンボリックリンクで配置
113+ RUN ln -s /usr/local/python/bin/python3 /usr/local/bin/python3 && \
114+ ln -s /usr/local/python/bin/python3 /usr/local/bin/python3.11 && \
115+ ln -s /usr/local/python/bin/python3 /usr/local/bin/python && \
116+ ln -s /usr/local/python/bin/pip3 /usr/local/bin/pip3 && \
117+ ln -s /usr/local/python/bin/pip3 /usr/local/bin/pip
118+ # poetry をインストール
119+ RUN python3.11 -m pip install poetry==${{ env.POETRY_VERSION }}
120+ # poetry をパスの通った場所にシンボリックリンクで配置
121+ RUN ln -s /usr/local/python/bin/poetry /usr/local/bin/poetry
100122 EOF
101123
102124 # Ubuntu 20.04 の Docker イメージをビルド
0 commit comments