Skip to content

chore(flake/nix2container): cc96df7c -> 5fb215a1 #3578

chore(flake/nix2container): cc96df7c -> 5fb215a1

chore(flake/nix2container): cc96df7c -> 5fb215a1 #3578

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
concurrency:
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
commitlint:
if: ${{ github.event_name == 'pull_request' }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: cachix/install-nix-action@v30
with:
nix_path: nixpkgs=channel:nixos-unstable-small
- uses: cachix/cachix-action@v15
with:
name: protoletariat
extraPullNames: nix-community,poetry2nix
- name: commitlint
run: nix shell -L -f '<nixpkgs>' commitlint -c commitlint --from=${{ github.event.pull_request.base.sha }} --to=${{ github.sha }} --verbose
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v30
with:
nix_path: nixpkgs=channel:nixos-unstable-small
- uses: cachix/cachix-action@v15
with:
name: protoletariat
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: nix-community,poetry2nix
- run: nix develop -c pre-commit run --all-files
nix:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
python-version:
- "39"
- "310"
- "311"
- "312"
exclude:
- os: macos-latest
python-version: "310"
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v30
with:
nix_path: nixpkgs=channel:nixos-unstable-small
- uses: cachix/cachix-action@v15
with:
name: protoletariat
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: nix-community,poetry2nix
- name: build package and run tests
run: nix build --print-build-logs --no-link --keep-going '.#protoletariat${{ matrix.python-version }}'
- name: show closure info
run: nix path-info --closure-size --human-readable --recursive '.#protoletariat${{ matrix.python-version }}'
docker-image:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: cachix/install-nix-action@v30
with:
nix_path: nixpkgs=channel:nixos-unstable-small
- uses: cachix/cachix-action@v15
with:
name: protoletariat
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: nix-community,poetry2nix
- name: build and load docker image
run: nix run --print-build-logs --keep-going '.#protoletariat-image.copyToDockerDaemon'
- run: docker images protoletariat
- name: smoke test docker image
run: |
set -euo pipefail
imagetag="$(nix eval --raw '.#protoletariat-image.imageTag')"
docker run --rm "protoletariat:${imagetag}"
poetry:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
python-version:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
buf:
- true
- false
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: bufbuild/buf-setup-action@v1.46.0
if: matrix.buf
with:
github_token: ${{ github.token }}
- uses: arduino/setup-protoc@v3
with:
repo-token: ${{ github.token }}
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: install poetry
run: pip install poetry
- name: install env
run: poetry install
- name: run tests
run: poetry run pytest -ra
tensorflow:
runs-on: ubuntu-latest
env:
PYTHON_OUT: /tmp/tensorflow-gen
TENSORFLOW_HOME: ${{ github.workspace }}/tensorflow
steps:
- uses: actions/checkout@v4
with:
path: protoletariat
- uses: cachix/install-nix-action@v30
with:
nix_path: nixpkgs=channel:nixos-unstable-small
- uses: cachix/cachix-action@v15
with:
name: protoletariat
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
extraPullNames: nix-community,poetry2nix
- name: Clone Tensorflow
uses: actions/checkout@v4
with:
repository: tensorflow/tensorflow
path: tensorflow
- run: mkdir -p "$PYTHON_OUT"
- name: Generate tensorflow Python proto code
working-directory: protoletariat
run: |
set -euo pipefail
mapfile -t files < <(find "$TENSORFLOW_HOME" -name '*.proto')
nix develop -c \
protoc \
--python_out "$PYTHON_OUT" \
--proto_path "$TENSORFLOW_HOME/third_party/xla/third_party/tsl" \
--proto_path "$TENSORFLOW_HOME/third_party/xla" \
--proto_path "$TENSORFLOW_HOME" \
"${files[@]}"
- name: Test tensorflow rewriting
working-directory: protoletariat
run: |
set -euo pipefail
mapfile -t files < <(find "$TENSORFLOW_HOME" -name '*.proto')
nix run '.#protoletariat' \
-- \
--in-place \
--create-package \
--python-out "$PYTHON_OUT" \
protoc \
--proto-path "$TENSORFLOW_HOME/third_party/xla/third_party/tsl" \
--proto-path "$TENSORFLOW_HOME/third_party/xla" \
--proto-path "$TENSORFLOW_HOME" \
"${files[@]}"
- name: Check for absolute imports
run: grep -vq -R '^import tensorflow' "$PYTHON_OUT"
dry-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: cachix/install-nix-action@v30
with:
nix_path: nixpkgs=channel:nixos-unstable-small
- uses: cachix/cachix-action@v15
with:
name: protoletariat
extraPullNames: nix-community,poetry2nix
- name: Configure git info
run: |
set -euo pipefail
# not incredibly important what user we use here
#
# we're making a commit in a temporary worktree that is thrown away
# if the process exits successfully
#
# git requires user information to make commits
git config user.name 'phillip-ground[bot]'
git config user.email 'phillip-ground[bot]@users.noreply.github.com'
- name: run semantic-release
run: ./ci/release/dry_run.sh
release:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'pull_request' }}
needs:
- nix
- poetry
- docker-image
- pre-commit
- tensorflow
- dry-release
steps:
- uses: actions/create-github-app-token@v1
id: generate_token
with:
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ steps.generate_token.outputs.token }}
- uses: cachix/install-nix-action@v30
with:
nix_path: nixpkgs=channel:nixos-unstable-small
- uses: cachix/cachix-action@v15
with:
name: protoletariat
extraPullNames: nix-community,poetry2nix
- name: run semantic-release
run: ./ci/release/run.sh
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }}