1
0
Fork 0
mirror of https://github.com/JasonN3/build-container-installer.git synced 2025-12-25 10:57:55 +01:00

Merge branch 'main' into make

This commit is contained in:
Jason N 2024-03-29 09:32:42 -04:00 committed by GitHub
commit 0f9e705f1c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 262 additions and 13 deletions

View file

@ -69,8 +69,9 @@ jobs:
tags: | tags: |
type=ref,event=branch type=ref,event=branch
type=ref,event=pr type=ref,event=pr
type=semver,pattern={{version}} type=semver,pattern=v{{version}}
type=semver,pattern={{major}}.{{minor}} type=semver,pattern=v{{major}}.{{minor}}
type=semver,pattern=v{{major}}.{{minor}}.{{patch}}
- name: Docker meta for PR - name: Docker meta for PR
if: inputs.pr if: inputs.pr

View file

@ -158,3 +158,114 @@ jobs:
context: ${{ env.JOB_NAME }} (${{ matrix.version }}) context: ${{ env.JOB_NAME }} (${{ matrix.version }})
sha: ${{ env.sha }} sha: ${{ env.sha }}
targetUrl: ${{ steps.jobs.outputs.html_url }} targetUrl: ${{ steps.jobs.outputs.html_url }}
build_iso_no_flatpaks:
name: Build ISO without Flatpaks
env:
JOB_NAME: Build ISO without Flatpaks
runs-on: ubuntu-latest
needs:
- load_vars
permissions:
contents: read
statuses: write
continue-on-error: false
strategy:
fail-fast: false
matrix:
version:
- 38
- 39
- 40
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Switch branch
if: inputs.pr
env:
GITHUB_USER: ${{ github.actor }}
GITHUB_TOKEN: ${{ github.token }}
run: |
sudo apt-get update
sudo apt-get install -y hub
hub pr checkout ${{ inputs.pr }}
echo "sha=$(git rev-parse HEAD)" >> $GITHUB_ENV
- name: Get Current Job Log URL
if: inputs.pr && always()
uses: Tiryoh/gha-jobid-action@v1
id: jobs
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
job_name: "${{ inputs.parent_job_name }} / ${{ env.JOB_NAME }} (${{ matrix.version }})"
- name: Set status
if: inputs.pr && always()
uses: myrotvorets/set-commit-status-action@v2.0.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
status: pending
context: ${{ env.JOB_NAME }} (${{ matrix.version }})
sha: ${{ env.sha }}
targetUrl: ${{ steps.jobs.outputs.html_url }}
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@main
with:
# this might remove tools that are actually needed,
# if set to "true" but frees about 6 GB
tool-cache: false
# all of these default to true, but feel free to set to
# "false" if necessary for your workflow
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Lowercase Registry
id: registry_case
uses: ASzc/change-string-case-action@v6
with:
string: ${{ needs.load_vars.outputs.IMAGE_REPO }}
- name: Get image version
id: meta
uses: docker/metadata-action@v5
with:
tags: |
type=ref,event=branch
type=ref,event=pr
- name: Login to Registry
run: |
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Build ISO
uses: ./
id: build
with:
arch: ${{ needs.load_vars.outputs.ARCH }}
image_name: ${{ needs.load_vars.outputs.IMAGE_NAME }}
image_repo: ${{ needs.load_vars.outputs.IMAGE_REPO }}
image_tag: ${{ matrix.version }}
version: ${{ matrix.version }}
variant: ${{ needs.load_vars.outputs.VARIANT }}
secure_boot_key_url: ${{ needs.load_vars.outputs.SECURE_BOOT_KEY_URL }}
enrollment_password: ${{ needs.load_vars.outputs.ENROLLMENT_PASSWORD }}
iso_name: ${{ needs.load_vars.outputs.IMAGE_NAME }}-${{ matrix.version }}.iso
- name: Set status
if: inputs.pr && always()
uses: myrotvorets/set-commit-status-action@v2.0.1
with:
token: ${{ secrets.GITHUB_TOKEN }}
status: ${{ job.status }}
context: ${{ env.JOB_NAME }} (${{ matrix.version }})
sha: ${{ env.sha }}
targetUrl: ${{ steps.jobs.outputs.html_url }}

143
.github/workflows/clean_repo.yml vendored Normal file
View file

@ -0,0 +1,143 @@
name: Clean Container Registry
on:
schedule:
- cron: '0 21 * * 0'
workflow_dispatch:
jobs:
delete_untagged:
name: Delete Untagged Packages
runs-on: ubuntu-latest
steps:
- name: Delete Untagged Packages
uses: Chizkiyahu/delete-untagged-ghcr-action@v3
with:
token: ${{ secrets.PACKAGE_DELETER }}
repository_owner: ${{ github.repository_owner }}
repository: ${{ github.repository }}
untagged_only: true
owner_type: user
delete_old_pr:
name: Delete Old PR Packages
runs-on: ubuntu-latest
permissions:
packages: read
steps:
- name: Delete Old PR Packages
id: all_tags
run: |
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ github.token }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/user/packages/container/build-container-installer/versions" > all_packages.json
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ github.token }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/${{ github.repository }}/pulls | \
jq -r '.[] | select(.state == "open") | .number' | \
sed 's/^/pr-/g' > open_prs
cat << EOF | python
import json
import re
prs = open("open_prs", "r")
open_prs = prs.readlines()
open_prs = [x.strip() for x in open_prs]
all_packages = open('all_packages.json')
data = json.load(all_packages)
delete_versions = open("delete_versions", "w")
for i in data:
delete = True
for tag in i['metadata']['container']['tags']:
if not re.match('pr-.*', tag):
delete = False
continue
if tag in open_prs:
delete = False
if delete:
print("delete", i['id'])
delete_versions.write(str(i['id']))
delete_versions.write("\n")
print(i['metadata']['container']['tags'])
EOF
for id in $(cat delete_versions)
do
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.PACKAGE_DELETER }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/user/packages/container/build-container-installer/versions/${id}
done
delete_old_branches:
name: Delete Old Branch Packages
runs-on: ubuntu-latest
permissions:
packages: read
steps:
- name: Delete Old Branch Packages
run: |
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ github.token }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
"https://api.github.com/user/packages/container/build-container-installer/versions" > all_packages.json
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ github.token }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/${{ github.repository }}/branches | jq -r '.[].name' > branches
cat << EOF | python
import json
import re
branches_f = open("branches", "r")
branches = branches_f.readlines()
branches = [x.strip() for x in branches]
all_packages_f = open('all_packages.json')
data = json.load(all_packages_f)
delete_versions = open("delete_versions", "w")
for i in data:
delete = True
for tag in i['metadata']['container']['tags']:
if re.match('v[0-9]+\\\.[0-9]+\\\.[0-9]+', tag):
delete = False
continue
if re.match('pr-.*', tag):
delete = False
continue
if tag in branches:
delete = False
continue
if tag == "latest":
delete = False
if delete:
print("delete", i['id'])
delete_versions.write(str(i['id']))
delete_versions.write("\n")
print(i['metadata']['container']['tags'])
EOF
for id in $(cat delete_versions)
do
curl -L \
-X DELETE \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.PACKAGE_DELETER }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/user/packages/container/build-container-installer/versions/${id}
done

View file

@ -7,7 +7,7 @@ name: Mark stale issues and pull requests
on: on:
schedule: schedule:
- cron: '39 21 * * *' - cron: '0 21 * * *'
jobs: jobs:
stale: stale:

View file

@ -1,4 +1,4 @@
![Build status](https://github.com/jasonn3/build-container-installer/actions/workflows/build-and-test.yml/badge.svg?event=push) ![Build status](https://github.com/jasonn3/build-container-installer/actions/workflows/tests.yml/badge.svg?event=push)
# Build Container Installer Action # Build Container Installer Action
This action is used to enerate an ISO for installing an OSTree stored in a container image. This utilizes the anaconda command `ostreecontainer` This action is used to enerate an ISO for installing an OSTree stored in a container image. This utilizes the anaconda command `ostreecontainer`

View file

@ -135,7 +135,7 @@ runs:
mkdir /cache/skopeo || true mkdir /cache/skopeo || true
- name: Determine Flatpak dependencies - name: Determine Flatpak dependencies
if: inputs.enable_flatpak_dependencies == 'true' if: inputs.enable_flatpak_dependencies == 'true' && (inputs.flatpak_remote_refs != '' || inputs.flatpak_remote_refs_dir != '')
id: flatpak_dependencies id: flatpak_dependencies
shell: bash shell: bash
run: | run: |
@ -206,13 +206,6 @@ runs:
then then
echo "ERROR: flatpak_remote_refs is mutually exclusive to flatpak_remote_refs_dir" echo "ERROR: flatpak_remote_refs is mutually exclusive to flatpak_remote_refs_dir"
exit 1 exit 1
else
if [[ -n "${{ inputs.flatpak_remote_refs }}" ]]
then
vars="${vars} FLATPAK_REMOTE_REFS=\"${{ inputs.flatpak_remote_refs }}\""
else
vars="${vars} FLATPAK_REMOTE_REFS_DIR=\"${{ inputs.flatpak_remote_refs_dir }}\""
fi
fi fi
docker run --privileged --volume ${{ github.workspace }}:/github/workspace/ ${cache} ${image}:${tag} \ docker run --privileged --volume ${{ github.workspace }}:/github/workspace/ ${cache} ${image}:${tag} \
ADDITIONAL_TEMPLATES="${{ inputs.additional_templates }}" \ ADDITIONAL_TEMPLATES="${{ inputs.additional_templates }}" \
@ -220,7 +213,8 @@ runs:
DNF_CACHE="/cache/dnf" \ DNF_CACHE="/cache/dnf" \
ENROLLMENT_PASSWORD="${{ inputs.enrollment_password }}" \ ENROLLMENT_PASSWORD="${{ inputs.enrollment_password }}" \
FLATPAK_REMOTE_NAME="${{ inputs.flatpak_remote_name }}" \ FLATPAK_REMOTE_NAME="${{ inputs.flatpak_remote_name }}" \
${vars} \ FLATPAK_REMOTE_REFS="${{ inputs.flatpak_remote_refs }}" \
FLATPAK_REMOTE_REFS_DIR="${{ inputs.flatpak_remote_refs_dir }}" \
FLATPAK_REMOTE_URL="${{ inputs.flatpak_remote_url }}" \ FLATPAK_REMOTE_URL="${{ inputs.flatpak_remote_url }}" \
FLATPAK_DIR="${{ steps.flatpak_dependencies.outputs.flatpak_dir && format('/github/workspace/{0}', steps.flatpak_dependencies.outputs.flatpak_dir) || '' }}" \ FLATPAK_DIR="${{ steps.flatpak_dependencies.outputs.flatpak_dir && format('/github/workspace/{0}', steps.flatpak_dependencies.outputs.flatpak_dir) || '' }}" \
IMAGE_NAME="${{ inputs.image_name }}" \ IMAGE_NAME="${{ inputs.image_name }}" \