-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
25 changed files
with
625 additions
and
13 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# To get started with Dependabot version updates, you'll need to specify which | ||
# package ecosystems to update and where the package manifests are located. | ||
# Please see the documentation for all configuration options: | ||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates | ||
|
||
version: 2 | ||
updates: | ||
- package-ecosystem: "github-actions" # See documentation for possible values | ||
directory: "/" # Location of package manifests | ||
schedule: | ||
interval: "weekly" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
name: integration testing | ||
on: | ||
pull_request: | ||
merge_group: | ||
push: | ||
branches: | ||
- main | ||
workflow_dispatch: | ||
|
||
jobs: | ||
push-ghcr: | ||
name: Build and test image | ||
runs-on: ubuntu-24.04 | ||
permissions: | ||
contents: read | ||
packages: write | ||
id-token: write | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
major_version: [40, 41] | ||
include: | ||
- major_version: 40 | ||
is_latest_version: false | ||
is_stable_version: true | ||
- major_version: 41 | ||
is_latest_version: true | ||
is_stable_version: false | ||
steps: | ||
# Checkout push-to-registry action GitHub repository | ||
- name: Checkout Push to Registry action | ||
uses: actions/checkout@v4 | ||
|
||
- name: Install Deps | ||
run: | | ||
sudo apt-get install just podman | ||
- name: Build Image | ||
id: build_image | ||
env: | ||
FEDORA_MAJOR_VERSION: ${{ matrix.major_version }} | ||
run: | | ||
just container-build | ||
- name: Test Image | ||
id: test_image | ||
run: | | ||
just container-test |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
name: build development package | ||
on: | ||
pull_request: | ||
merge_group: | ||
push: | ||
branches: | ||
- main | ||
workflow_dispatch: | ||
env: | ||
IMAGE_NAME: ublue-update | ||
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} | ||
|
||
jobs: | ||
push-ghcr: | ||
name: Build and push image | ||
runs-on: ubuntu-24.04 | ||
permissions: | ||
contents: read | ||
packages: write | ||
id-token: write | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
major_version: [40, 41] | ||
include: | ||
- major_version: 40 | ||
is_latest_version: true | ||
is_stable_version: false | ||
- major_version: 41 | ||
is_latest_version: false | ||
is_stable_version: false | ||
steps: | ||
# Checkout push-to-registry action GitHub repository | ||
- name: Checkout Push to Registry action | ||
uses: actions/checkout@v4 | ||
|
||
- name: Generate tags | ||
id: generate-tags | ||
shell: bash | ||
run: | | ||
# Generate a timestamp for creating an image version history | ||
TIMESTAMP="$(date +%Y%m%d)" | ||
MAJOR_VERSION="${{ matrix.major_version }}" | ||
COMMIT_TAGS=() | ||
BUILD_TAGS=() | ||
# Have tags for tracking builds during pull request | ||
SHA_SHORT="${GITHUB_SHA::7}" | ||
COMMIT_TAGS+=("pr-${{ github.event.pull_request.number }}-${MAJOR_VERSION}") | ||
COMMIT_TAGS+=("${SHA_SHORT}-${MAJOR_VERSION}") | ||
if [[ "${{ matrix.is_latest_version }}" == "true" ]] && \ | ||
[[ "${{ matrix.is_stable_version }}" == "true" ]]; then | ||
COMMIT_TAGS+=("pr-${{ github.event.pull_request.number }}") | ||
COMMIT_TAGS+=("${SHA_SHORT}") | ||
fi | ||
BUILD_TAGS=("${MAJOR_VERSION}" "${MAJOR_VERSION}-${TIMESTAMP}") | ||
if [[ "${{ matrix.is_latest_version }}" == "true" ]] && \ | ||
[[ "${{ matrix.is_stable_version }}" == "true" ]]; then | ||
BUILD_TAGS+=("latest") | ||
fi | ||
if [[ "${{ github.event_name }}" == "pull_request" ]]; then | ||
echo "Generated the following commit tags: " | ||
for TAG in "${COMMIT_TAGS[@]}"; do | ||
echo "${TAG}" | ||
done | ||
alias_tags=("${COMMIT_TAGS[@]}") | ||
else | ||
alias_tags=("${BUILD_TAGS[@]}") | ||
fi | ||
echo "Generated the following build tags: " | ||
for TAG in "${BUILD_TAGS[@]}"; do | ||
echo "${TAG}" | ||
done | ||
echo "alias_tags=${alias_tags[*]}" >> $GITHUB_OUTPUT | ||
# Build image using Buildah action | ||
- name: Build Image | ||
id: build_image | ||
uses: redhat-actions/buildah-build@v2 | ||
with: | ||
containerfiles: | | ||
./Containerfile.builder | ||
image: ${{ env.IMAGE_NAME }} | ||
tags: | | ||
${{ steps.generate-tags.outputs.alias_tags }} | ||
build-args: | | ||
FEDORA_MAJOR_VERSION=${{ matrix.major_version }} | ||
oci: true | ||
|
||
# Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR. | ||
# https://github.com/macbre/push-to-ghcr/issues/12 | ||
- name: Lowercase Registry | ||
id: registry_case | ||
uses: ASzc/change-string-case-action@v6 | ||
with: | ||
string: ${{ env.IMAGE_REGISTRY }} | ||
|
||
# Push the image to GHCR (Image Registry) | ||
- name: Push To GHCR | ||
uses: redhat-actions/push-to-registry@v2 | ||
id: push | ||
if: github.event_name != 'pull_request' | ||
env: | ||
REGISTRY_USER: ${{ github.actor }} | ||
REGISTRY_PASSWORD: ${{ github.token }} | ||
with: | ||
image: ${{ steps.build_image.outputs.image }} | ||
tags: ${{ steps.build_image.outputs.tags }} | ||
registry: ${{ steps.registry_case.outputs.lowercase }} | ||
username: ${{ env.REGISTRY_USER }} | ||
password: ${{ env.REGISTRY_PASSWORD }} | ||
extra-args: | | ||
--disable-content-trust | ||
- name: Login to GitHub Container Registry | ||
uses: docker/login-action@v3 | ||
if: github.event_name != 'pull_request' | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
# Sign container | ||
- uses: sigstore/[email protected] | ||
if: github.event_name != 'pull_request' | ||
|
||
- name: Sign container image | ||
if: github.event_name != 'pull_request' | ||
run: | | ||
cosign sign -y --key env://COSIGN_PRIVATE_KEY ${{ steps.registry_case.outputs.lowercase }}/${{ env.IMAGE_NAME }}@${TAGS} | ||
env: | ||
TAGS: ${{ steps.push.outputs.digest }} | ||
COSIGN_EXPERIMENTAL: false | ||
COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }} | ||
|
||
- name: Echo outputs | ||
if: github.event_name != 'pull_request' | ||
run: | | ||
echo "${{ toJSON(steps.push.outputs) }}" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
name: build release package | ||
on: | ||
merge_group: | ||
branches: | ||
- main | ||
workflow_dispatch: | ||
env: | ||
IMAGE_NAME: ublue-update | ||
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} | ||
|
||
jobs: | ||
release-please: | ||
permissions: | ||
contents: write | ||
pull-requests: write | ||
runs-on: ubuntu-latest | ||
outputs: | ||
releases_created: ${{ steps.release-please.outputs.releases_created }} | ||
tag: ${{ steps.release-please.outputs.tag_name }} | ||
upload_url: ${{ steps.release-please.outputs.upload_url }} | ||
steps: | ||
- uses: googleapis/release-please-action@v4 | ||
id: release-please | ||
with: | ||
release-type: simple | ||
package-name: release-please-action | ||
|
||
build-release: | ||
name: Build and push rpm package | ||
runs-on: ubuntu-24.04 | ||
permissions: | ||
contents: write | ||
packages: write | ||
id-token: write | ||
needs: release-please | ||
if: needs.release-please.outputs.releases_created | ||
steps: | ||
# Checkout push-to-registry action GitHub repository | ||
- name: Checkout Push to Registry action | ||
uses: actions/checkout@v4 | ||
|
||
# Build image using Buildah action | ||
- name: Build package using containerized build environment | ||
id: build_image | ||
uses: redhat-actions/buildah-build@v2 | ||
with: | ||
containerfiles: | | ||
./Containerfile.builder | ||
image: ${{ env.IMAGE_NAME }} | ||
tags: | | ||
${{ needs.release-please.outputs.tag }} | ||
oci: true | ||
extra-args: | | ||
-v ${{ github.workspace }}:/app | ||
--target rpm | ||
- name: upload output artifacts as release artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ublue-updater-rpms | ||
path: output/ | ||
|
||
- name: upload rpm packages | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
run: | | ||
find output/ -type f -name '*.rpm' -print0 | \ | ||
xargs -0 -tI{} gh release upload \ | ||
${{ needs.release-please.outputs.tag }} \ | ||
{} \ | ||
--repo ${{ github.repository_owner }}/${{ github.event.repository.name }} \ | ||
--clobber |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,3 +24,4 @@ go.work.sum | |
# env file | ||
.env | ||
ublue-upd | ||
output/* |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
ARG TEST_IMAGE="${TEST_IMAGE:-ghcr.io/ublue-os/base-main:41}" | ||
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-41}" | ||
|
||
FROM registry.fedoraproject.org/fedora:${FEDORA_MAJOR_VERSION} AS builder | ||
|
||
ENV UBLUE_ROOT=/app/output | ||
|
||
WORKDIR /app | ||
|
||
ADD . /app | ||
|
||
RUN dnf install -y just | ||
|
||
RUN just container-rpm-build | ||
|
||
FROM ${TEST_IMAGE} | ||
|
||
ENV UBLUE_ROOT=/app/output | ||
|
||
|
||
COPY --from=builder ${UBLUE_ROOT}/ublue-os/rpms /tmp/rpms | ||
RUN dnf install /tmp/rpms/ublue-upd.rpm | ||
|
||
# FROM: https://github.com/containers/image_build/blob/main/podman/Containerfile, sets up podman to work in the container | ||
RUN useradd -G wheel podman && \ | ||
echo -e "podman:1:999\npodman:1001:64535" > /etc/subuid && \ | ||
echo -e "podman:1:999\npodman:1001:64535" > /etc/subgid && \ | ||
echo "podman:" | chpasswd | ||
|
||
ADD ./containers.conf /etc/containers/containers.conf | ||
ADD ./podman-containers.conf /home/podman/.config/containers/containers.conf | ||
|
||
RUN mkdir -p /home/podman/.local/share/containers && \ | ||
chown podman:podman -R /home/podman && \ | ||
chmod 644 /etc/containers/containers.conf | ||
|
||
# Copy & modify the defaults to provide reference if runtime changes needed. | ||
# Changes here are required for running with fuse-overlay storage inside container. | ||
RUN sed -e 's|^#mount_program|mount_program|g' \ | ||
-e '/additionalimage.*/a "/var/lib/shared",' \ | ||
-e 's|^mountopt[[:space:]]*=.*$|mountopt = "nodev,fsync=0"|g' \ | ||
/usr/share/containers/storage.conf \ | ||
> /etc/containers/storage.conf | ||
|
||
# Setup internal Podman to pass subscriptions down from host to internal container | ||
RUN printf '/run/secrets/etc-pki-entitlement:/run/secrets/etc-pki-entitlement\n/run/secrets/rhsm:/run/secrets/rhsm\n' > /etc/containers/mounts.conf | ||
|
||
# Note VOLUME options must always happen after the chown call above | ||
# RUN commands can not modify existing volumes | ||
VOLUME /var/lib/containers | ||
VOLUME /home/podman/.local/share/containers | ||
|
||
RUN mkdir -p /var/lib/shared/overlay-images \ | ||
/var/lib/shared/overlay-layers \ | ||
/var/lib/shared/vfs-images \ | ||
/var/lib/shared/vfs-layers && \ | ||
touch /var/lib/shared/overlay-images/images.lock && \ | ||
touch /var/lib/shared/overlay-layers/layers.lock && \ | ||
touch /var/lib/shared/vfs-images/images.lock && \ | ||
touch /var/lib/shared/vfs-layers/layers.lock | ||
|
||
ENV _CONTAINERS_USERNS_CONFIGURED="" \ | ||
BUILDAH_ISOLATION=chroot | ||
# RUN useradd -m -G wheel user && echo "user:" | chpasswd | ||
|
||
CMD [ "/sbin/init" ] |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-41}" | ||
|
||
FROM registry.fedoraproject.org/fedora:${FEDORA_MAJOR_VERSION} AS builder | ||
|
||
ENV UBLUE_ROOT=/app/output | ||
|
||
WORKDIR /app | ||
ADD . /app | ||
|
||
RUN dnf install -y just git | ||
|
||
RUN just container-rpm-build | ||
|
||
FROM scratch | ||
|
||
ENV UBLUE_ROOT=/app/output | ||
COPY --from=builder ${UBLUE_ROOT}/ublue-os/rpms /tmp/rpms |
Oops, something went wrong.