mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
reusable
This commit is contained in:
72
.github/workflows/build-containers.yml
vendored
Normal file
72
.github/workflows/build-containers.yml
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
# Generate the containers that we use for builds.
|
||||
name: Build Containers
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
env:
|
||||
docker-registry: ghcr.io
|
||||
docker-config-path: source/ci/docker
|
||||
|
||||
jobs:
|
||||
# Build the docker container images that we will use for our Linux
|
||||
# builds. This will identify the last commit to the repository that
|
||||
# updated the docker images, and try to download the image tagged with
|
||||
# that sha. If it does not exist, we'll do a docker build and push
|
||||
# the image up to GitHub Packages for the actual CI/CD runs. We tag
|
||||
# with both the sha and "latest" so that the subsequent runs need not
|
||||
# know the sha. Only do this on CI builds (when the event is a "push")
|
||||
# because PR builds from forks lack permission to write packages.
|
||||
containers:
|
||||
strategy:
|
||||
matrix:
|
||||
container:
|
||||
- name: xenial
|
||||
- name: bionic
|
||||
- name: focal
|
||||
- name: docurium
|
||||
- name: bionic-x86
|
||||
dockerfile: bionic
|
||||
base: multiarch/ubuntu-core:x86-bionic
|
||||
qemu: true
|
||||
- name: bionic-arm32
|
||||
dockerfile: bionic
|
||||
base: multiarch/ubuntu-core:armhf-bionic
|
||||
qemu: true
|
||||
- name: bionic-arm64
|
||||
dockerfile: bionic
|
||||
base: multiarch/ubuntu-core:arm64-bionic
|
||||
qemu: true
|
||||
- name: centos7
|
||||
- name: centos8
|
||||
runs-on: ubuntu-latest
|
||||
name: "Create container: ${{ matrix.container.name }}"
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: source
|
||||
fetch-depth: 0
|
||||
if: github.event_name != 'pull_request'
|
||||
- name: Setup QEMU
|
||||
run: docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
if: matrix.container.qemu == true
|
||||
- name: Download existing container
|
||||
run: |
|
||||
"${{ github.workspace }}/source/ci/getcontainer.sh" "${{ matrix.container.name }}" "${{ matrix.container.dockerfile }}"
|
||||
env:
|
||||
DOCKER_REGISTRY: ${{ env.docker-registry }}
|
||||
GITHUB_TOKEN: ${{ secrets.github_token }}
|
||||
working-directory: ${{ env.docker-config-path }}
|
||||
if: github.event_name != 'pull_request'
|
||||
- name: Build and publish image
|
||||
run: |
|
||||
if [ "${{ matrix.container.base }}" != "" ]; then
|
||||
BASE_ARG="--build-arg BASE=${{ matrix.container.base }}"
|
||||
fi
|
||||
docker build -t ${{ env.docker-registry-container-sha }} --build-arg UID=$(id -u) --build-arg GID=$(id -g) ${BASE_ARG} -f ${{ env.dockerfile }} .
|
||||
docker tag ${{ env.docker-registry-container-sha }} ${{ env.docker-registry-container-latest }}
|
||||
docker push ${{ env.docker-registry-container-sha }}
|
||||
docker push ${{ env.docker-registry-container-latest }}
|
||||
working-directory: ${{ env.docker-config-path }}
|
||||
if: github.event_name != 'pull_request' && env.docker-container-exists != 'true'
|
||||
61
.github/workflows/main.yml
vendored
61
.github/workflows/main.yml
vendored
@@ -14,67 +14,8 @@ env:
|
||||
docker-config-path: source/ci/docker
|
||||
|
||||
jobs:
|
||||
# Build the docker container images that we will use for our Linux
|
||||
# builds. This will identify the last commit to the repository that
|
||||
# updated the docker images, and try to download the image tagged with
|
||||
# that sha. If it does not exist, we'll do a docker build and push
|
||||
# the image up to GitHub Packages for the actual CI/CD runs. We tag
|
||||
# with both the sha and "latest" so that the subsequent runs need not
|
||||
# know the sha. Only do this on CI builds (when the event is a "push")
|
||||
# because PR builds from forks lack permission to write packages.
|
||||
containers:
|
||||
strategy:
|
||||
matrix:
|
||||
container:
|
||||
- name: xenial
|
||||
- name: bionic
|
||||
- name: focal
|
||||
- name: docurium
|
||||
- name: bionic-x86
|
||||
dockerfile: bionic
|
||||
base: multiarch/ubuntu-core:x86-bionic
|
||||
qemu: true
|
||||
- name: bionic-arm32
|
||||
dockerfile: bionic
|
||||
base: multiarch/ubuntu-core:armhf-bionic
|
||||
qemu: true
|
||||
- name: bionic-arm64
|
||||
dockerfile: bionic
|
||||
base: multiarch/ubuntu-core:arm64-bionic
|
||||
qemu: true
|
||||
- name: centos7
|
||||
- name: centos8
|
||||
runs-on: ubuntu-latest
|
||||
name: "Create container: ${{ matrix.container.name }}"
|
||||
steps:
|
||||
- name: Check out repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: source
|
||||
fetch-depth: 0
|
||||
if: github.event_name != 'pull_request'
|
||||
- name: Setup QEMU
|
||||
run: docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
||||
if: matrix.container.qemu == true
|
||||
- name: Download existing container
|
||||
run: |
|
||||
"${{ github.workspace }}/source/ci/getcontainer.sh" "${{ matrix.container.name }}" "${{ matrix.container.dockerfile }}"
|
||||
env:
|
||||
DOCKER_REGISTRY: ${{ env.docker-registry }}
|
||||
GITHUB_TOKEN: ${{ secrets.github_token }}
|
||||
working-directory: ${{ env.docker-config-path }}
|
||||
if: github.event_name != 'pull_request'
|
||||
- name: Build and publish image
|
||||
run: |
|
||||
if [ "${{ matrix.container.base }}" != "" ]; then
|
||||
BASE_ARG="--build-arg BASE=${{ matrix.container.base }}"
|
||||
fi
|
||||
docker build -t ${{ env.docker-registry-container-sha }} --build-arg UID=$(id -u) --build-arg GID=$(id -g) ${BASE_ARG} -f ${{ env.dockerfile }} .
|
||||
docker tag ${{ env.docker-registry-container-sha }} ${{ env.docker-registry-container-latest }}
|
||||
docker push ${{ env.docker-registry-container-sha }}
|
||||
docker push ${{ env.docker-registry-container-latest }}
|
||||
working-directory: ${{ env.docker-config-path }}
|
||||
if: github.event_name != 'pull_request' && env.docker-container-exists != 'true'
|
||||
uses: ./.github/workflows/build-containers.yml
|
||||
|
||||
# Run our CI/CD builds. We build a matrix with the various build targets
|
||||
# and their details. Then we build either in a docker container (Linux)
|
||||
|
||||
Reference in New Issue
Block a user