Skip to content

pkg: remove wheels #257

pkg: remove wheels

pkg: remove wheels #257

Workflow file for this run

name: Build, Test, and (if needed) Publish Image
on:
push:
branches:
- master
- dev
release:
types: ['published']
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
x86-build-and-push-image:
runs-on: ubuntu-22.04
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
permissions:
contents: read
packages: write
#
steps:
- uses: docker/[email protected]
with:
driver-opts: image=moby/buildkit
- uses: docker/[email protected]
id: meta
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=sha,format=long
type=semver,pattern={{version}}
- uses: docker/[email protected]
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Build image (X86)
id: build
uses: docker/[email protected]
with:
load: true
push: false
tags: pyda_tmp
platforms: linux/amd64
provenance: false
cache-from: type=gha
- name: Test (X86)
run: |
docker run --cap-add=SYS_PTRACE -e PYTHONUNBUFFERED=1 --rm --workdir /opt/pyda/tests --entrypoint /bin/bash pyda_tmp -c "cat /proc/sys/kernel/pid_max && cat /proc/sys/vm/max_map_count"
docker run --cap-add=SYS_PTRACE -e PYTHONUNBUFFERED=1 --rm --workdir /opt/pyda/tests --entrypoint python3 pyda_tmp run_tests.py --ci --debug
- name: Push image
uses: docker/[email protected]
if: github.event_name != 'pull_request'
with:
push: true
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/amd64
provenance: false
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Export digest
run: |
rm -rf /tmp/digests
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-linux-amd64
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
arm64-build-and-push-image:
runs-on: ubuntu-22.04-arm
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
permissions:
contents: read
packages: write
steps:
- uses: docker/[email protected]
with:
driver-opts: image=moby/buildkit
- uses: docker/[email protected]
id: meta
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=sha,format=long
type=semver,pattern={{version}}
- uses: docker/[email protected]
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Build image (ARM64)
id: build
uses: docker/[email protected]
with:
load: true
push: false
tags: pyda_tmp
platforms: linux/arm64
provenance: false
cache-from: type=gha
- name: Test (ARM64)
run: |
docker run --cap-add=SYS_PTRACE -e PYTHONUNBUFFERED=1 --rm --workdir /opt/pyda/tests --entrypoint python3 pyda_tmp run_tests.py --ci --debug
- name: Push image
uses: docker/[email protected]
if: github.event_name != 'pull_request'
with:
push: true
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/arm64
provenance: false
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Export digest
run: |
rm -rf /tmp/digests
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-linux-arm64
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
pip-install:
name: pip-install-test-${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-14, ubuntu-22.04]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: pip install
run: |
python3 -m venv venv
source venv/bin/activate
pip install .
pip install pwntools
- name: Test installation (Linux)
if: runner.os == 'Linux'
run: |
source venv/bin/activate
python3 -c "import pwnlib"
cd tests
sudo capsh --keep=1 --caps="cap_sys_ptrace+eip" --print -- -c "HOME=$HOME PATH=$PATH python3 run_tests.py --ci --debug --ntrials 1"
- name: Test installation (macOS)
if: runner.os == 'macOS'
run: |
source venv/bin/activate
python3 -c "import pwnlib"
cd tests
PYTHONUNBUFFERED=1 python3 run_tests.py --ci --debug --ntrials 1
# Attempt to merge the two architecture images into a single image
merge:
runs-on: ubuntu-22.04
permissions:
contents: read
packages: write
needs:
- x86-build-and-push-image
- arm64-build-and-push-image
if: github.event_name != 'pull_request'
steps:
- name: Download digests
uses: actions/download-artifact@v4
with:
path: /tmp/digests
pattern: digests-*
merge-multiple: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- uses: docker/metadata-action@v5
id: meta
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=sha,format=long
type=semver,pattern={{version}}
- uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf 'ghcr.io/${{ github.repository }}@sha256:%s ' *)
- name: Inspect image
run: |
docker buildx imagetools inspect ghcr.io/${{ github.repository }}:${{ steps.meta.outputs.version }}
build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
run: pipx run build --sdist
- uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz
upload_pypi:
needs: [build_sdist]
runs-on: ubuntu-latest
environment: pypi
permissions:
id-token: write
if: github.event_name == 'release' && github.event.action == 'published'
# or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this)
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/download-artifact@v4
with:
# unpacks all CIBW artifacts into dist/
pattern: cibw-*
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/