ci: Purge old untagged container images #376
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: next | |
on: | |
push: | |
branches: | |
- next | |
env: | |
SHELLCHECK_VERSION: v0.7.1 | |
SHELLCHECK_SHA256: 64f17152d96d7ec261ad3086ed42d18232fcb65148b44571b564d688269d36c8 | |
NEWT_VERSION: 0.52.21 | |
NEWT_SHA256: 265eb46b55d7eaeb887fca7a1d51fe115658882dfe148164b6c49fccac5abb31 | |
jobs: | |
perform_tests: | |
name: Run tests on kas code | |
runs-on: ubuntu-20.04 | |
strategy: | |
matrix: | |
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "3.12"] | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: x64 | |
- name: Install Python dependencies of kas and tests | |
run: | | |
# install kas to have all kas dependencies: | |
pip install . | |
# checkcode dependencies: | |
pip install flake8 pycodestyle doc8 Pygments | |
# test dependencies: | |
pip install -U pytest | |
- name: Install recent shellcheck | |
run: | | |
wget -q https://github.com/koalaman/shellcheck/releases/download/$SHELLCHECK_VERSION/shellcheck-$SHELLCHECK_VERSION.linux.x86_64.tar.xz | |
echo "$SHELLCHECK_SHA256 shellcheck-$SHELLCHECK_VERSION.linux.x86_64.tar.xz" | sha256sum -c | |
tar -xJf shellcheck-$SHELLCHECK_VERSION.linux.x86_64.tar.xz | |
sudo cp shellcheck-$SHELLCHECK_VERSION/shellcheck /usr/local/bin/ | |
- name: Install python-newt | |
run: | | |
sudo apt-get update | |
sudo apt-get install libpopt-dev libslang2-dev | |
wget -q https://releases.pagure.org/newt/newt-$NEWT_VERSION.tar.gz | |
echo "$NEWT_SHA256 newt-$NEWT_VERSION.tar.gz" | sha256sum -c | |
tar -C /tmp -xzf newt-$NEWT_VERSION.tar.gz | |
cd /tmp/newt-$NEWT_VERSION | |
autoconf | |
./configure --with-python=python${{ matrix.python-version }} | |
make -j $(nproc) | |
sudo make install | |
ln -s /usr/local/lib/python${{ matrix.python-version }}/site-packages/_snack.so \ | |
$(python3 -c 'import site; print(site.getsitepackages()[0])')/ | |
ln -s /usr/local/lib/python${{ matrix.python-version }}/site-packages/snack.py \ | |
$(python3 -c 'import site; print(site.getsitepackages()[0])')/ | |
- name: Run tests | |
run: | | |
scripts/checkcode.sh . | |
TERM=xterm pytest | |
build_containers: | |
name: Build, test and deploy container images | |
needs: perform_tests | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repo | |
uses: actions/checkout@v4 | |
- name: Set up docker build | |
uses: ./.github/actions/docker-init | |
with: | |
deploy-user: ${{ secrets.PACKAGE_DEPLOY_USER }} | |
deploy-token: ${{ secrets.PACKAGE_DEPLOY_TOKEN }} | |
- name: Build amd64 kas image | |
uses: docker/build-push-action@v5 | |
with: | |
context: /home/runner/kas-clone | |
no-cache: true | |
platforms: linux/amd64 | |
build-args: | | |
SOURCE_DATE_EPOCH=${{ env.SOURCE_DATE_EPOCH }} | |
DEBIAN_TAG=${{ env.DEBIAN_TAG }} | |
outputs: type=docker,rewrite-timestamp=true | |
tags: ghcr.io/siemens/kas/kas:next | |
- name: Test kas image | |
run: | | |
cd image-tests/poky | |
KAS_IMAGE_VERSION=next ../../kas-container build kas.yml | |
- name: Build arm64 kas image | |
uses: docker/build-push-action@v5 | |
with: | |
context: /home/runner/kas-clone | |
no-cache: true | |
platforms: linux/arm64 | |
build-args: | | |
SOURCE_DATE_EPOCH=${{ env.SOURCE_DATE_EPOCH }} | |
DEBIAN_TAG=${{ env.DEBIAN_TAG }} | |
outputs: type=docker,rewrite-timestamp=true | |
tags: ghcr.io/siemens/kas/kas:next | |
- name: Deploy kas images | |
uses: docker/build-push-action@v5 | |
with: | |
context: /home/runner/kas-clone | |
platforms: linux/amd64,linux/arm64 | |
build-args: | | |
SOURCE_DATE_EPOCH=${{ env.SOURCE_DATE_EPOCH }} | |
DEBIAN_TAG=${{ env.DEBIAN_TAG }} | |
outputs: type=registry,rewrite-timestamp=true | |
tags: ghcr.io/siemens/kas/kas:next | |
- name: Build amd64 kas-isar image | |
uses: docker/build-push-action@v5 | |
with: | |
context: /home/runner/kas-clone | |
no-cache: true | |
target: kas-isar | |
platforms: linux/amd64 | |
build-args: | | |
SOURCE_DATE_EPOCH=${{ env.SOURCE_DATE_EPOCH }} | |
DEBIAN_TAG=${{ env.DEBIAN_TAG }} | |
outputs: type=docker,rewrite-timestamp=true | |
tags: ghcr.io/siemens/kas/kas-isar:next | |
- name: Test kas-isar image | |
run: | | |
cd image-tests/isar | |
KAS_IMAGE_VERSION=next ../../kas-container build kas.yml | |
- name: Build arm64 kas-isar image | |
uses: docker/build-push-action@v5 | |
with: | |
context: /home/runner/kas-clone | |
no-cache: true | |
target: kas-isar | |
platforms: linux/arm64 | |
build-args: | | |
SOURCE_DATE_EPOCH=${{ env.SOURCE_DATE_EPOCH }} | |
DEBIAN_TAG=${{ env.DEBIAN_TAG }} | |
outputs: type=docker,rewrite-timestamp=true | |
tags: ghcr.io/siemens/kas/kas-isar:next | |
- name: Deploy kas-isar images | |
uses: docker/build-push-action@v5 | |
with: | |
context: /home/runner/kas-clone | |
target: kas-isar | |
platforms: linux/amd64,linux/arm64 | |
build-args: | | |
SOURCE_DATE_EPOCH=${{ env.SOURCE_DATE_EPOCH }} | |
DEBIAN_TAG=${{ env.DEBIAN_TAG }} | |
outputs: type=registry,rewrite-timestamp=true | |
tags: ghcr.io/siemens/kas/kas-isar:next | |
- name: Purge oldest untagged kas images | |
uses: actions/delete-package-versions@v4 | |
with: | |
package-name: kas | |
package-type: container | |
min-versions-to-keep: 10 | |
delete-only-untagged-versions: true | |
- name: Purge oldest untagged kas-isar images | |
uses: actions/delete-package-versions@v4 | |
with: | |
package-name: kas-isar | |
package-type: container | |
min-versions-to-keep: 10 | |
delete-only-untagged-versions: true |