Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix merge conflicts #9

Merged
merged 13 commits into from
Mar 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 166 additions & 0 deletions .github/workflows/publish-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
name: Publish Pacstall Docker Images

on:
workflow_dispatch:
inputs:
vertag:
description: 'Version Tag'
required: false
push:
branches:
- develop
- master
tags:
- '*'
env:
INPUT_VERTAG: ${{ github.event.inputs.vertag }}
REGISTRY: ghcr.io

jobs:

build:
strategy:
matrix:
OS: ["ubuntu:latest", "ubuntu:devel", "ubuntu:rolling", "debian:stable", "debian:testing", "debian:unstable"]
platform: ["linux/amd64", "linux/arm64"]
fail-fast: true
runs-on: ubuntu-latest
permissions:
contents: read
packages: write

steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build Dockerfile
run: |
vertag=${{ env.INPUT_VERTAG }}
if [[ -z ${vertag} ]]; then
vertag=${{ github.ref_name }}
fi
platform=${{ matrix.platform }}
arch=${platform#*/}
distro=${{ matrix.OS }}
distro_tag="${distro/:/-}"
curl -fsSL https://raw.githubusercontent.com/pacstall/docker/master/pacstall-docker-builder -o pacstall-docker-builder
chmod +x pacstall-docker-builder
./pacstall-docker-builder -f -a ${arch} -d ${distro} -v ${vertag}
echo "BUILT_DOCKFILE=Dockerfile-Pacstall-${vertag}-${arch}-${distro_tag}-$(date +%Y%m%d)" >> $GITHUB_ENV
echo "DOCK_LABEL=${vertag}" >> $GITHUB_ENV
echo "PLATFORM_PAIR=${distro_tag}-${arch}" >> $GITHUB_ENV
echo "REGISTRY_IMAGE=${{ env.REGISTRY }}/${{ github.repository_owner }}/${distro_tag}" >> $GITHUB_ENV

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=raw,value=${{ env.DOCK_LABEL }}
flavor: latest=true

- name: Login to registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push by digest
id: build
uses: docker/build-push-action@v5
with:
context: .
file: ./${{ env.BUILT_DOCKFILE }}
platforms: ${{ matrix.platform }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true

- name: Export digest
run: |
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"

- name: Upload digest
uses: actions/upload-artifact@v4
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1

merge:
strategy:
matrix:
OS: ["ubuntu:latest", "ubuntu:devel", "ubuntu:rolling", "debian:stable", "debian:testing", "debian:unstable"]
fail-fast: true
runs-on: ubuntu-latest
needs: [build]
steps:
- name: Load envars
run: |
vertag=${{ env.INPUT_VERTAG }}
if [[ -z ${vertag} ]]; then
vertag=${{ github.ref_name }}
fi
distro=${{ matrix.OS }}
distro_tag="${distro/:/-}"
echo "DOCK_LABEL=${vertag}" >> $GITHUB_ENV
if [[ ${vertag} == "develop" ]]; then
echo "FLAVOR_LATEST=false" >> $GITHUB_ENV
echo "HASH_DOCK_LABEL=${vertag}-${GITHUB_SHA:0:8}" >> $GITHUB_ENV
elif [[ ${vertag} == "master" ]]; then
echo "FLAVOR_LATEST=true" >> $GITHUB_ENV
echo "HASH_DOCK_LABEL=${vertag}-${GITHUB_SHA:0:8}" >> $GITHUB_ENV
else
echo "FLAVOR_LATEST=true" >> $GITHUB_ENV
fi
echo "DISTRO_TAG=${distro_tag}" >> $GITHUB_ENV
echo "REGISTRY_IMAGE=${{ env.REGISTRY }}/${{ github.repository_owner }}/${distro_tag}" >> $GITHUB_ENV

- name: Download digests
uses: actions/download-artifact@v4
with:
path: /tmp/digests
pattern: digests-${{ env.DISTRO_TAG }}*
merge-multiple: true

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: v0.12.0

- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=raw,value=${{ env.DOCK_LABEL }}
type=raw,value=${{ env.HASH_DOCK_LABEL }}
flavor: latest=${{ env.FLAVOR_LATEST }}

- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create \
--annotation "index:org.opencontainers.image.description=Contains amd64/x86_64 + arm64/aarch64 pacstall:${{ env.DOCK_LABEL }} images for ${{ matrix.OS }}, from $(date +%Y%m%d)." \
$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)

- name: Inspect image
run: |
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
6 changes: 3 additions & 3 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -117,16 +117,16 @@ apt-get install -qq -y curl wget build-essential unzip git zstd iputils-ping lsb

LOGDIR="/var/lib/pacstall/metadata"
STGDIR="/usr/share/pacstall"
SRCDIR="/tmp/pacstall"
PACDIR="/tmp/pacstall"
PACSTALL_USER=$(logname 2> /dev/null || echo "${SUDO_USER:-${USER}}")

fancy_message info "Making directories"
mkdir -p "$STGDIR"
mkdir -p "$STGDIR/scripts"
mkdir -p "$STGDIR/repo"

mkdir -p "$SRCDIR"
chown "$PACSTALL_USER" -R "$SRCDIR"
mkdir -p "$PACDIR"
chown "$PACSTALL_USER" -R "$PACDIR"

mkdir -p "$LOGDIR"
mkdir -p "/var/log/pacstall/error_log"
Expand Down
Loading