ci: split workflow per arch to fix cross-arch PVC scheduling
ci/woodpecker/push/arm64 Pipeline was successful
ci/woodpecker/push/amd64 Pipeline was successful

A single-workflow with steps spanning amd64 and arm64 shares one
PVC. The clone step binds the PV to whichever arch ran first, and
the other arch's pod is then permanently Unschedulable (node
affinity mismatch on the PV). Splitting into separate workflow
files gives each arch its own clone, its own PVC, and its own node
binding.
This commit is contained in:
Oleks
2026-05-12 21:27:34 +03:00
parent d5101ea3fe
commit bbf81d6ac5
3 changed files with 76 additions and 79 deletions
-79
View File
@@ -1,79 +0,0 @@
# Build flake-hub packages for all architectures and push to attic
when:
- event: push
branch: main
clone:
- name: clone
image: woodpeckerci/plugin-git
environment:
CI_NETRC_MACHINE: git.oleks.space
CI_NETRC_USERNAME: oleks
CI_NETRC_PASSWORD:
from_secret: gitea_clone_token
PLUGIN_TAGS: "false"
PLUGIN_DEPTH: "1"
# Build packages for each architecture in parallel
steps:
- name: build-amd64
image: git.oleks.space/oleks/nix-ci:latest
depends_on: []
environment:
ATTIC_TOKEN:
from_secret: attic_token
GITEA_CLONE_TOKEN:
from_secret: gitea_clone_token
backend_options:
kubernetes:
nodeSelector:
kubernetes.io/arch: amd64
labels:
commit-tag: "${CI_COMMIT_TAG}"
commit-branch: "${CI_COMMIT_BRANCH}"
pipeline-number: "${CI_PIPELINE_NUMBER}"
commands:
- sh ci/setup.sh
- python3 ci/build.py x86_64-linux
- name: build-arm64
image: git.oleks.space/oleks/nix-ci:latest
depends_on: []
environment:
ATTIC_TOKEN:
from_secret: attic_token
GITEA_CLONE_TOKEN:
from_secret: gitea_clone_token
backend_options:
kubernetes:
nodeSelector:
kubernetes.io/arch: arm64
labels:
commit-tag: "${CI_COMMIT_TAG}"
commit-branch: "${CI_COMMIT_BRANCH}"
pipeline-number: "${CI_PIPELINE_NUMBER}"
commands:
- sh ci/setup.sh
- python3 ci/build.py aarch64-linux
# s390x disabled: no builder available
# - name: build-s390x
# image: git.oleks.space/oleks/nix-ci:latest
# depends_on: []
# environment:
# ATTIC_TOKEN:
# from_secret: attic_token
# GITEA_CLONE_TOKEN:
# from_secret: gitea_clone_token
# backend_options:
# kubernetes:
# nodeSelector:
# kubernetes.io/arch: amd64
# labels:
# commit-tag: "${CI_COMMIT_TAG}"
# commit-branch: "${CI_COMMIT_BRANCH}"
# pipeline-number: "${CI_PIPELINE_NUMBER}"
# commands:
# - sh ci/setup.sh
# - python3 ci/build.py s390x-linux
+39
View File
@@ -0,0 +1,39 @@
# Build flake-hub packages for x86_64-linux and push to attic.
# Separate workflow per arch — sharing one PVC across arches makes
# the second pod permanently Unschedulable (PV node affinity binds
# to the first arch's node).
when:
- event: push
branch: main
clone:
- name: clone
image: woodpeckerci/plugin-git
environment:
CI_NETRC_MACHINE: git.oleks.space
CI_NETRC_USERNAME: oleks
CI_NETRC_PASSWORD:
from_secret: gitea_clone_token
PLUGIN_TAGS: "false"
PLUGIN_DEPTH: "1"
steps:
- name: build-amd64
image: git.oleks.space/oleks/nix-ci:latest
environment:
ATTIC_TOKEN:
from_secret: attic_token
GITEA_CLONE_TOKEN:
from_secret: gitea_clone_token
backend_options:
kubernetes:
nodeSelector:
kubernetes.io/arch: amd64
labels:
commit-tag: "${CI_COMMIT_TAG}"
commit-branch: "${CI_COMMIT_BRANCH}"
pipeline-number: "${CI_PIPELINE_NUMBER}"
commands:
- sh ci/setup.sh
- python3 ci/build.py x86_64-linux
+37
View File
@@ -0,0 +1,37 @@
# Build flake-hub packages for aarch64-linux and push to attic.
# Separate workflow per arch — see amd64.yaml for rationale.
when:
- event: push
branch: main
clone:
- name: clone
image: woodpeckerci/plugin-git
environment:
CI_NETRC_MACHINE: git.oleks.space
CI_NETRC_USERNAME: oleks
CI_NETRC_PASSWORD:
from_secret: gitea_clone_token
PLUGIN_TAGS: "false"
PLUGIN_DEPTH: "1"
steps:
- name: build-arm64
image: git.oleks.space/oleks/nix-ci:latest
environment:
ATTIC_TOKEN:
from_secret: attic_token
GITEA_CLONE_TOKEN:
from_secret: gitea_clone_token
backend_options:
kubernetes:
nodeSelector:
kubernetes.io/arch: arm64
labels:
commit-tag: "${CI_COMMIT_TAG}"
commit-branch: "${CI_COMMIT_BRANCH}"
pipeline-number: "${CI_PIPELINE_NUMBER}"
commands:
- sh ci/setup.sh
- python3 ci/build.py aarch64-linux