ํ์ฌ ๊ธ์ ์ํธ์์ ์ด์ด์ง๋๋ค.
๋ค์ด๊ฐ๊ธฐ ์์ ํด๋น ๊ธ์์๋ C Compiler ์ ๋ํ ์ง์์ ํ์๋ก ํฉ๋๋ค. ํ์ง๋ง ์ C Compiler ์ ๋ํด ์์ธํ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ ์ ์์ผ๋ฉฐ, ์ธ์ ๋ ์ง ์ง์ ๋ฐ๋๋๋ค. ๊ทธ๋ฆฌ๊ณ Github Action ๊ณผ ๊ด๋ จ๋ ๊ฐ๋ ๋ถ๋ถ์ ๋ฐ๋ก ์ค๋ช ํ์ง ์์ต๋๋ค.
์๋๋ฆฌ์ค๋ ํฌ๊ฒ Local ์์ญ๊ณผ Remote(Git Runner) ์์ญ์ผ๋ก ๋๋ ์ ์์ต๋๋ค.
Local
Local ์์ญ๋ถํฐ ์์ํด๋ณด์ฃ . Local ์์ญ์์ ๋ฏธ๋ฆฌ Python ์ ๋น๋ ํ ํ์ Artifacts Repository ์ ์ ๋ก๋ ํฉ๋๋ค.
Official Setup Python ์ก์ ์ ๋ณด๋ฉด versions-manifest.json ์ Python ์ ๋ค์ด๋ฐ์ ์ ์๋ URL ์ด ๋ช ์๋์ด ์์ฃ .
์ Local ์ MacOS ์ด๊ณ , ํ์ํ ์ด์์ฒด์ ๋ Linux ์ด๊ธฐ ๋๋ฌธ์ Docker Buildx ๋ฅผ ํตํด Python Build ๋ฅผ ์งํํ ๊ฒ๋๋ค.
์ฌ์ฉํ Dockerfile ์ ์๋์ ๊ฐ์ต๋๋ค.
FROM ubuntu:jammy
ENV VERSION="3.11.9"
RUN apt update -y \
&& apt install -y gcc pkg-config make unzip wget vim curl build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev
RUN useradd -m -s /bin/bash runner
USER runner
WORKDIR /home/runner
COPY ../make-python.sh make-python.sh
CMD ["bash", "make-python.sh"]
Python Build ๋ฅผ ์งํํ๋๋ฐ ํ์ํ apt ํจํค์ง๋ฅผ ์ค์น ํฉ๋๋ค. ์ดํ Python ์ Runner ์์ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ WORKDIR ์ Runner ์ ํ ๋๋ ํฐ๋ฆฌ์ธ /home/runner ๋ก ๋ง์ถ์์ต๋๋ค.
configure ์ปค๋งจ๋์ --prefix ์ต์ ์ ํตํด ๋น๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ตณ์ด /home/runner ์ ํ๋๋ ํฐ๋ฆฌ๋ก ๋ง์ถ ํ์๋ ์์ง๋ง, ํธ์์ ์ด๋ฐ์์ผ๋ก ์งํํ์ต๋๋ค.
์ด๋ฒ์ CMD ์ ์ฌ์ฉํ make-python.sh ์์ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๋ค์ ์ฐจ๋ก๋๋ก ์์๋ณด์ฃ .
๋จผ์ Python ์ ๋ค์ด๋ก๋ ํฉ๋๋ค. ์ ๊ฐ์ ๊ฒฝ์ฐ๋ 3.11 ์ latest ์ธ 3.11.9 ๋ฒ์ ์ผ๋ก ์งํํ๋ ค๊ณ ํฉ๋๋ค.
$ wget https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tar.xz
$ tar xf Python-$PYTHON_VERSION.tar.xz
๋ค์ด ํ ์์ถ๊น์ง ํ์ด์ค๋๋ค.
๋ค์์ make ๋ฅผ ํตํด์ python ์ ๋น๋ํฉ๋๋ค. ๋น๋ ํ๋ ๋ฐฉ๋ฒ์ ๋คํํ ๊ณต์ ๋ฌธ์์ ์ ๋์์์ต๋๋ค.
๊ณต์ ๋ฌธ์์๋ ์์ฒ๋ผ ์์ฃผ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ด ๋์์์ง๋ง, ์ ๋ ์ต๋ํ Official Setup Python ์ ๋น์ทํ๊ฒ ๋ง๋ค๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์๋์ฒ๋ผ ์ด์ง ๋ฐ๊พธ์์ต๋๋ค.
$ export RUNNER_HOME="/home/runner"
$ export PYTHON_VERSION="3.11.9"
$ export PREFIX="${RUNNER_HOME}/_work/_tool/Python-ARM64/${PYTHON_VERSION}/arm64"
$ LDFLAGS="-L${PREFIX}/lib -Wl,-rpath,${PREFIX}/lib" ./configure \
--prefix="${PREFIX}" \
--enable-shared --enable-optimizations
$ make -j$(nproc)
$ make install -j$(nproc)
Official Setup Python ์ก์ ์์ ์ ๊ณต๋๋ ํ๊ฒฝ๋ณ์๋ฅผ ๋ณด๋ฉด, ์๋์ ๊ฐ์๋ฐ
pythonLocation: /home/runner/_work/_tool/Python/3.11.9/x64
PKG_CONFIG_PATH: /home/runner/_work/_tool/Python/3.11.9/x64/lib/pkgconfig
Python_ROOT_DIR: /home/runner/_work/_tool/Python/3.11.9/x64
Python2_ROOT_DIR: /home/runner/_work/_tool/Python/3.11.9/x64
Python3_ROOT_DIR: /home/runner/_work/_tool/Python/3.11.9/x64
LD_LIBRARY_PATH: /home/runner/_work/_tool/Python/3.11.9/x64/lib
LD_LIBRARY_PATH ๊ฐ ์๋ ๊ฑธ ๋ณด๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์์ ./configure ์ --enable-shared ์ต์ ์ ์ฃผ์์ต๋๋ค.
Python_ROOT_DIR ์ cmake ์ FindPython ์์ Python ์ ์ฐพ์ ๋ ์ฌ์ฉ๋๋ ํ๊ฒฝ๋ณ์ ์ ๋๋ค.
--prefix ์ต์ ์๋ Runner ์ ํ ๋๋ ํฐ๋ฆฌ + Github Action Toolcached ๊ฒฝ๋ก๋ฅผ ์ฃผ์์ต๋๋ค. ์ด ๋ํ Official Setup Python ์ก์ ์ด ์ ๊ณตํด์ฃผ๋ ๊ฒฝ๋ก์ ์ต๋ํ ๋ง์ถ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ LDFLAGS ๋ฅผ ์ค์ ํ์ฌ, C Compiler ์๊ฒ ๋งํน ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
LDFLAGS ๋ฅผ ์ฃผ์ง ์์๋, Python ์ ์ ์คํ๋๋, ๋ง์ฝ ์ฃผ์ง ์์ ๊ฒฝ์ฐ setuptools ๋ฅผ ์ฌ์ฉํด ํจํค์ง๋ฅผ ๋ง๋ค ๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
configure ๋ฅผ ํตํด Makefile ์ ๋ง๋ค๊ณ , make ์ make install ์ ํตํด ๋น๋๋ฅผ ์งํํฉ๋๋ค. ์ถ๊ฐ์ ์ผ๋ก nproc ๋ ์ปดํ์ผ ์๋๋ฅผ ๋์ด๊ธฐ์ํด ์ฌ์ฉ๋๋ ์ปค๋งจ๋์ ๋๋ค.
make install ์ ์งํํ ํ ์ถ๊ฐ๋ก ํ์ํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ํํธ๋งํฌ๋ฅผ ํตํด ๋ง๋ค์ด ์ค๋๋ค.
$ export PYTHON_MINOR_VERSION="3.11"
$ export PREFIX="${RUNNER_HOME}/_work/_tool/Python-ARM64/${PYTHON_VERSION}/arm64"
$ cd "${PREFIX}/bin"
$ ln -s "python3.${PYTHON_MINOR_VERSION}" "python"
$ ln -s "pip3" "pip"
make install ํ bin ํด๋๋ฅผ ํ์ธํด๋ณด๋ฉด python3, pip3 ๋ง ์๊ณ python, pip ๋ ์์ต๋๋ค. ํ์ง๋ง Official Setup Python ์ก์ ์ ์ ๊ณตํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ํํธ๋งํฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๊ฑฐ์ ์๋ฃ๋์์ต๋๋ค. Python ํด๋๋ฅผ ์์ถํ ํ Artifacts Repository ์ ์ ๋ก๋ํ๊ธฐ ์ ์ ๋จผ์ ์ ๋๋ก ๋น๋๊ฐ ๋์๋์ง ๊ฐ๋จํ ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํฉ๋๋ค.
$ export PREFIX="${RUNNER_HOME}/_work/_tool/Python-ARM64/${PYTHON_VERSION}/arm64"
$ export PATH="${PREFIX}/bin:${PATH}"
$ export LD_LIBRARY_PATH="${PREFIX}/lib"
$ python3 -c 'import math; print(math.factorial(5))' || echo "failed"
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ LD_LIBRARY_PATH ๋ฅผ ํ๊ฒฝ๋ณ์๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
๋ฌธ์ ์์ด ์คํ์ด ๋๋ค๋ฉด, ์ดํ ์์ถํ๊ณ ์ ๋ก๋ ํด์ค๋๋ค.
์ง๊ธ๊น์ง ๊ณผ์ ์ make-python.sh ์ผ๋ก ๋ชจ์ผ๋ฉด ์๋์ฒ๋ผ ์์ฑํ ์ ์์ฃ .
#!/bin/bash
set -eu
declare -r RUNNER_HOME="/home/runner"
declare -r PYTHON_VERSION=$VERSION #"$1" #-- from Dockerfile
IFS='.' read -ra parts <<< "$PYTHON_VERSION"
declare -r PYTHON_MINOR_VERSION="${parts[1]}"
declare -r OS_VERSION_ID=$(awk -F= '/VERSION_ID/ {gsub(/"/,"",$2); print $2}' /etc/os-release)
declare -r PREFIX="${RUNNER_HOME}/_work/_tool/Python-ARM64/${PYTHON_VERSION}/arm64"
export PATH="${PREFIX}/bin:${PATH}"
#-- clean old assets
rm -rf Python-ARM64
wget https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz
tar xf Python-$PYTHON_VERSION.tar.xz
#-- build python
pushd Python-$PYTHON_VERSION
LDFLAGS="-L${PREFIX}/lib -Wl,-rpath,${PREFIX}/lib" ./configure \
--prefix="${PREFIX}" \
--enable-shared --enable-optimizations
make -j$(nproc)
make install -j$(nproc)
popd #-- pushd Python-$PYTHON_VERSION
#-- soft link
pushd "${PREFIX}/bin"
ln -s "python3.${PYTHON_MINOR_VERSION}" "python"
ln -s "pip3" "pip"
popd #-- "${PREFIX}/bin"
#-- zip python binary
pushd "${RUNNER_HOME}/_work/_tool"
tar -czf python-$PYTHON_VERSION-linux-$OS_VERSION_ID-arm64.tar.gz Python-ARM64
curl \
-F asset1=@"python-$PYTHON_VERSION-linux-$OS_VERSION_ID-arm64.tar.gz" \
-F asset1.filename="python-$PYTHON_VERSION-linux-$OS_VERSION_ID-arm64.tar.gz" \
-F directory="actions-assets/setup-python-arm64/releases/download/$PYTHON_VERSION" \
"https://nexus.com/service/rest/v1/components?repository=raw-hosted"
#-- check binary
export PATH="${PREFIX}/bin:${PATH}"
export LD_LIBRARY_PATH="${PREFIX}/lib"
python3 -c 'import math; print(math.factorial(5))' || echo "failed"
#-- clean
rm -rf Python-$PYTHON_VERSION
rm -rf Python-$PYTHON_VERSION.tar.xz
rm -rf python-$PYTHON_VERSION-linux-$OS_VERSION_ID-arm64.tar.gz
popd #-- pushd ${RUNNER_HOME}/_work/_tool
๋ ๋์๊ฐ์ ์์ผ๋ก ์ฌ๋ฌ Python ๋ฒ์ ์ ๋น๋ํด์ผ ํ๋, ์ถ๊ฐ๋ก loop.sh ์ ํตํด ์๋ํํฉ๋๋ค.
#!/bin/bash
set -eu
versions=("3.12.3" "3.11.9" "3.10.14" "3.9.19" "3.8.19" "3.7.17")
os_version="jammy"
docker buildx build --platform=linux/arm64 --no-cache -t setup-python-arm64-$os_version .
for version in "${versions[@]}"
do
docker run --rm --name $os_version -e VERSION="$version" setup-python-arm64-$os_version
done
loop.sh ์ ์คํํ๋ฉด ์ด์ Docker Buildx ๋ฅผ ์ด์ฉํด์ Python ์ ๋น๋ํ ์ ์์ต๋๋ค.
์์์ ์ ๊ณตํ๋ ์๋ํ ๋ฐฉ๋ฒ์ ์ต์ํ์ ๋ฐฉ๋ฒ์ ๋๋ค.
Remote (Runner)
Local ์์๋ Docker Buildx ์ Bash Script ๋ฅผ ์ด์ฉํ์ฌ ๋ค์ํ OS ์์ ๋ค์ํ ๋ฒ์ ์ Python ์ ๋น๋ํ์ฌ, Artifacts Repository ์ ์ ๋ก๋ํ์์ต๋๋ค.
๊ทธ๋ผ ์ด์ Remote ๋ก ๋์ด๊ฐ๋๋ค.
์ ๋ Composite Action ์ ์ง์ ๋ง๋ค์ด์ Runner ์ Python ์ ์ค์นํ ์ ์๋๋ก ํ ๊ฒ๋๋ค.
๊ทธ ์ ์ ํ๊ฐ์ง ์ง๊ณ ๋์ด๊ฐ ๊ฒ์ด ์๋๋ฐ, Official Setup Python ์ก์ ์ ๋ณด๋ฉด "3.11.9" ์ด๋ฐ์์ด ์๋ "3.11" ์ฒ๋ผ Minor ๋ฒ์ ๊น์ง๋ง ์ ๋ ฅํด๋ ์์์ ๊ฐ์ฅ Latest ํ Python ์ ์ค์นํฉ๋๋ค.
์ ์ก์ ์์ '3.10' ๋ง ๋ช ์ํ์ง๋ง, ์ค์น๋๋ ๊ฑด ๊ฐ์ฅ latest ์ธ '3.10.14' ๋ฒ์ ์ ๋๋ค. (๊ธ ์์ฑ ๊ธฐ์ค)
์ด๋ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ ๋ versions-manifest.json ์ ํ์ฉํ์ต๋๋ค. versions-manifest.json ์ ์ด๋ฏธ Official Setup Python ์์ ์ฌ์ฉํ๊ณ ์๋ ํ์ผ์ ๋๋ค. key ๋ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๊ณ value ๋ง ๋ฐ๊ฟ์ฃผ์์ต๋๋ค.
json ์ผ๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์ jq ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ๋ฉด ์ด๋ ต์ง ์๊ฒ ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์๋์ฒ๋ผ versions-manifest.json ์ ์์ฑํ ์ ์์ฃ .
[
{
"version": "3.11.9",
"stable": true,
"release_url": "https://nexus.com/repository/raw-hosted/actions-assets/setup-python-arm64/releases/download/3.11.9",
"files": [
{
"filename": "python-3.11.9-linux-24.04-arm64.tar.gz",
"arch": "arm64",
"platform": "linux",
"platform_version": "24.04",
"download_url": "https://nexus.com/repository/raw-hosted/actions-assets/setup-python-arm64/releases/download/3.11.9/python-3.11.9-linux-24.04-arm64.tar.gz"
},
{
"filename": "python-3.11.9-linux-22.04-arm64.tar.gz",
"arch": "arm64",
"platform": "linux",
"platform_version": "22.04",
"download_url": "https://nexus.com/repository/raw-hosted/actions-assets/setup-python-arm64/releases/download/3.11.9/python-3.11.9-linux-22.04-arm64.tar.gz"
},
{
"filename": "python-3.11.9-linux-20.04-arm64.tar.gz",
"arch": "arm64",
"platform": "linux",
"platform_version": "20.04",
"download_url": "https://nexus.com/repository/raw-hosted/actions-assets/setup-python-arm64/releases/download/3.11.9/python-3.11.9-linux-20.04-arm64.tar.gz"
}
]
}
]
๊ทธ๋ฆฌ๊ณ jq ๋ฅผ ํ์ฉํด์ ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ ๊ฐ์ ธ์ต๋๋ค.
$ cat "versions-manifest.json" | jq -r --arg PYTHON_VERSION "3.11" '.[] | select(.version | startswith($PYTHON_VERSION)) | select(.stable == true) | .version' | sort -r | head -n 1
๋ค์ ๋ณธ๋ก ์ผ๋ก ๋์์์!
Composite Action ์ ์ฌ์ฉํ action.yaml ์ ์๋์ฒ๋ผ ์์ฑํ์ต๋๋ค.
name: 'SetUp Python Arm64'
author: kingbj0429@gmail.com
description: |
SetUp Python Arm64
inputs:
python-version:
description: specify python version
required: true
username:
description: username to access apt repo
required: true
password:
description: password to access apt repo
required: true
nexus-host:
description: nexus host
required: false
default: nexus.com
nexus-repo:
description: nexus repo
required: false
default: raw-hosted
runs:
using: "composite"
steps:
- name: Preset
shell: bash
run: |
echo "${{ github.action_path }}/shells" >> $GITHUB_PATH
- name: Set Python
if: ${{ runner.arch == 'ARM64' }}
shell: bash
env:
USERNAME: ${{ inputs.username }}
PASSWORD: ${{ inputs.password }}
NEXUS_HOST: ${{ inputs.nexus-host }}
NEXUS_REPO: ${{ inputs.nexus-repo }}
PYTHON_VERSION: ${{ inputs.python-version }}
run: |
bash setup-python.sh
#-- Skip Action. If not arm64
- name: Skip Setup Python
if: ${{ runner.arch != 'ARM64' }}
shell: bash
run: |
echo "::warning:: this runner arch is ${{ runner.arch}}, not ARM64. the action works only on ARM64"
๊ทธ๋ฆฌ๊ณ setup-python.sh ์ ์๋์ฒ๋ผ ์์ฑํ ์ ์์ฃ .
#!/bin/bash
set -eu
#-- convert to latest stable python version with versions-manifest.json
declare -r MANIFEST_PATH="${GITHUB_ACTION_PATH}/versions-manifest.json"
declare -r PYTHON_VERSION=$(cat "${MANIFEST_PATH}" | jq -r --arg PYTHON_VERSION "${PYTHON_VERSION}" '.[] | select(.version | startswith($PYTHON_VERSION)) | select(.stable == true) | .version' | sort -r | head -n 1)
#-- get python binary
pushd "${RUNNER_TOOL_CACHE}"
declare -r PYTHON_ASSET_NAME="python-${PYTHON_VERSION}-linux-$(awk -F= '/VERSION_ID/ {gsub(/"/,"",$2); print $2}' /etc/os-release)-arm64.tar.gz"
wget -q "https://${USERNAME}:${PASSWORD}@${NEXUS_HOST}/repository/${NEXUS_REPO}/actions-assets/setup-python-arm64/releases/download/${PYTHON_VERSION}/${PYTHON_ASSET_NAME}"
tar -zxf "${PYTHON_ASSET_NAME}" && rm "${PYTHON_ASSET_NAME}"
echo "https://${NEXUS_HOST}/repository/${NEXUS_REPO}/actions-assets/setup-python-arm64/releases/download/${PYTHON_VERSION}/${PYTHON_ASSET_NAME} downloading..."
popd
#-- add path
export PATH="${RUNNER_TOOL_CACHE}/Python-ARM64/${PYTHON_VERSION}/arm64/bin:${PATH}"
echo "${RUNNER_TOOL_CACHE}/Python-ARM64/${PYTHON_VERSION}/arm64/bin:${PATH}" >> "${GITHUB_PATH}"
export LD_LIBRARY_PATH="$(python3-config --prefix)/lib"
#-- extract envs
echo "pythonLocation=$(python3-config --prefix)" >> "${GITHUB_ENV}"
echo "Python_ROOT_DIR=$(python3-config --prefix)" >> "${GITHUB_ENV}"
echo "Python2_ROOT_DIR=$(python3-config --prefix)" >> "${GITHUB_ENV}"
echo "Python3_ROOT_DIR=$(python3-config --prefix)" >> "${GITHUB_ENV}"
echo "PKG_CONFIG_PATH=${LD_LIBRARY_PATH}/pkgconfig" >> "${GITHUB_ENV}"
echo "LD_LIBRARY_PATH=${LD_LIBRARY_PATH}" >> "${GITHUB_ENV}"
#-- get version
echo "python version : $(python --version) ($(command -v python))"
echo "python3 version : $(python3 --version) ($(command -v python3))"
echo "pip version : $(python3 -m pip --version)"
#-- valid check
python -c 'import math; print(math.factorial(5))' || { echo "setup python failed"; exit 1; }
echo "python valid check passed"
์ ์ฌํ ๋ด์ผํ ๋ถ๋ถ์ add path ๋ถ๋ถ๊ณผ extract envs ์ ๋๋ค.
add path ๋ถ๋ถ์์๋ Python ๋ฐ์ด๋๋ฆฌ ๊ฒฝ๋ก๋ฅผ PATH ํ๊ฒฝ๋ณ์์ ์ ๋ฌํด์ฃผ๊ณ , LD_LIBRARY_PATH ํ๊ฒฝ๋ณ์๋ฅผ ๋ฑ๋กํด์ค์ผ๋ก์จ Python ๋ฐํ์์ ์ฌ์ฉํ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์๋ ค์ค๋๋ค.
extract envs ๋ Official Setup Python ์์ ์ ๊ณตํด์ฃผ๋ ํ๊ฒฝ๋ณ์๊ฐ ๋๊ฐ์ ํ๊ฒฝ๋ณ์๋ฅผ ์ ๊ณตํด์ฃผ๋๋ก ํฉ๋๋ค.
์ดํ ๋ง๋ Composite Action ์ workflows ์์ ์๋์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค.
jobs:
jammy-arm64:
runs-on: [ jammy-arm64 ]
steps:
- name: SetUp Python
uses: kingbj940429/git-actions/set-ups/setup-python-arm64@v1.0.0
with:
python-version: '3.11'
username: ${{ secrets.USERNAME }}
password: ${{ secrets.PASSWORD }}
์คํ ๊ฒฐ๊ณผ ๋ฌธ์ ์์ด Linux/Arm64 ํ๊ฒฝ์ Python ์ ์ค์นํ์ต๋๋ค!
์ค๋์ Official Setup Python ์์ ์ ๊ณตํ์ง ์์ Linux/arm64 ์์ ์ฌ์ฉํ ์ ์๋ Setup Python ์ก์ ์ ์ง์ ๋ง๋ค์ด๋ดค์ต๋๋ค.
C Compile ์ ๋ํด ์ ๋ชฐ๋ผ์ ๊ฝค๋ ๊ณ ์ํ์ง๋ง, ์ด์ฐ๋๋ ์ฑ๊ณต์ ์ผ๋ก ์์ฑํ์ต๋๋ค!
๊ทธ๋ผ ์ค๋์ ์ฌ๊ธฐ๊น์ง~
'DevOps > Github Action' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Github Action] ๋ด์ง๋ด๋ง - Setup Python Arm64 ์ก์ ๋ง๋ค๊ธฐ (์ํธ) (37) | 2024.05.26 |
---|---|
[Github Action] MacOS.. ๋ ์ ARC ์ง์์ด ์๋์... - Runner with MacOS (6) | 2023.11.12 |
[Github Action] EKS, Karpenter ๊ทธ๋ฆฌ๊ณ Window Runner (7) | 2023.11.06 |
[Github Action] cmake ์ ์ผ๊ณฑ ํ์ด์ฌ (5) | 2023.10.06 |
[Github Action] ๋ cache ๋๊ฑฐ์ผ! - ccache ๋ฅผ ์ด์ฉํ c/c++ ๋น๋ (7) | 2023.10.05 |