Skip to content
This repository has been archived by the owner on Dec 16, 2022. It is now read-only.

Commit

Permalink
Merge pull request #24 from aryan9600/libgit2-only
Browse files Browse the repository at this point in the history
  • Loading branch information
hiddeco authored May 19, 2022
2 parents 00cf5cd + 22f29d4 commit 1282600
Show file tree
Hide file tree
Showing 8 changed files with 438 additions and 76 deletions.
78 changes: 56 additions & 22 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,15 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Test build script for darwin-amd64
- name: Test build script for darwin-amd64 - libgit2-all
run: |
TARGET_DIR=${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64 \
BUILD_ROOT_DIR=${GITHUB_WORKSPACE}/libgit2/build/amd \
./hack/static.sh all
make dev-test
rm -rf ${GITHUB_WORKSPACE}/build rm -rf ${GITHUB_WORKSPACE}/libgit2
env:
MACOSX_DEPLOYMENT_TARGET: 10.15
- name: Test cross compile script for darwin-arm64
- name: Test build script for darwin-amd64 - libgit2-only
run: |
TARGET_DIR=${GITHUB_WORKSPACE}/build/libgit2-darwin-arm64 \
BUILD_ROOT_DIR=${GITHUB_WORKSPACE}/libgit2/build/arm \
TARGET_ARCH=arm64 \
CMAKE_APPLE_SILICON_PROCESSOR=arm64 \
./hack/static.sh all
LIBGIT2_ONLY=true make dev-test
env:
MACOSX_DEPLOYMENT_TARGET: 10.15

Expand Down Expand Up @@ -83,24 +78,37 @@ jobs:
restore-keys: |
${{ runner.os }}-buildx-ghcache-
- run: cat ./hack/static.sh
- name: Build candidate image
id: build_candidate
- name: Build candidate image - libgit2 compiled with libssh2 and openssl
id: build_candidate_libgit2_all
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile
platforms: ${{ env.PLATFORMS }}
push: true
tags: localhost:5000/${{ github.repository_owner }}/golang-with-libgit2:latest
tags: localhost:5000/${{ github.repository_owner }}/golang-with-libgit2-all:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- name: Inspect candidate image
- name: Build candidate image - libgit2 only
id: build_candidate_libgti2_only
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile.libgit2-only
platforms: ${{ env.PLATFORMS }}
push: true
tags: localhost:5000/${{ github.repository_owner }}/golang-with-libgit2-only:latest
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
- name: Inspect candidate images
run: |
docker buildx imagetools inspect localhost:5000/${{ github.repository_owner }}/golang-with-libgit2:latest
- name: Test candidate image
docker buildx imagetools inspect localhost:5000/${{ github.repository_owner }}/golang-with-libgit2-all:latest
docker buildx imagetools inspect localhost:5000/${{ github.repository_owner }}/golang-with-libgit2-only:latest
- name: Test candidate images
id: test_candidate
run: |
IMG=localhost:5000/${{ github.repository_owner }}/golang-with-libgit2 make test
IMG=localhost:5000/${{ github.repository_owner }}/golang-with-libgit2-all make test
IMG=localhost:5000/${{ github.repository_owner }}/golang-with-libgit2-only LIBGIT2_ONLY=true make test
- # Temp fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
Expand All @@ -115,21 +123,21 @@ jobs:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Compose release candidate metadata
id: meta
- name: Compose release candidate metadata - golang-with-libgit2-all
id: meta_libgit2_all
uses: docker/metadata-action@v3
if: github.event_name != 'pull_request'
with:
images: |
ghcr.io/${{ github.repository_owner }}/golang-with-libgit2
ghcr.io/${{ github.repository_owner }}/golang-with-libgit2-all
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=sha
type=sha,format=long
- name: Release candidate image
id: release_candidate
- name: Release candidate image - golang-with-libgit2-all
id: release_candidate_libgit2_all
if: github.event_name != 'pull_request'
uses: docker/build-push-action@v2
with:
Expand All @@ -140,3 +148,29 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=local,src=/tmp/.buildx-cache

- name: Compose release candidate metadata - golang-with-libgit2-only
id: meta_libgit2_only
uses: docker/metadata-action@v3
if: github.event_name != 'pull_request'
with:
images: |
ghcr.io/${{ github.repository_owner }}/golang-with-libgit2-only
tags: |
type=schedule
type=ref,event=branch
type=ref,event=tag
type=sha
type=sha,format=long
- name: Release candidate image - golang-with-libgit2-only
id: release_candidate_libgit2_only
if: github.event_name != 'pull_request'
uses: docker/build-push-action@v2
with:
context: .
file: Dockerfile.libgit2-only
platforms: ${{ env.PLATFORMS }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=local,src=/tmp/.buildx-cache
118 changes: 91 additions & 27 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,28 +48,52 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build static libraries
- name: Build static libraries - libgit2 compiled with libssh2 and openssl
run: |
TARGET_DIR=${GITHUB_WORKSPACE}/build/libgit2-linux \
BUILD_ROOT_DIR=${GITHUB_WORKSPACE}/libgit2/build/amd \
./hack/static.sh all
mkdir -p ./libgit2-linux/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/include ./libgit2-linux/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/share ./libgit2-linux/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/lib ./libgit2-linux/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/lib64 ./libgit2-linux/
mkdir -p ./libgit2-linux-libgit2-all/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/include ./libgit2-linux-libgit2-all/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/share ./libgit2-linux-libgit2-all/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/lib ./libgit2-linux-libgit2-all/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/lib64 ./libgit2-linux-libgit2-all/
tar -zcvf linux-x86_64-libs.tar.gz libgit2-linux
tar -zcvf linux-x86_64-libgit2-all-libs.tar.gz libgit2-linux-libgit2-all
rm -rf ${GITHUB_WORKSPACE}/build ${GITHUB_WORKSPACE}/libgit2
- name: Upload Release Asset
id: upload-release-asset
id: upload-release-asset-libgit2-all
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ needs.github_release.outputs.release_upload_url }}
asset_path: ./linux-x86_64-libs.tar.gz
asset_name: linux-x86_64-libs.tar.gz
asset_path: ./linux-x86_64-libgit2-all-libs.tar.gz
asset_name: linux-x86_64-libgit2-all-libs.tar.gz
asset_content_type: application/gzip

- name: Build static libraries - libgit2 only
run: |
TARGET_DIR=${GITHUB_WORKSPACE}/build/libgit2-linux \
BUILD_ROOT_DIR=${GITHUB_WORKSPACE}/libgit2/build/amd \
./hack/static.sh build_libgit2_only
mkdir -p ./libgit2-linux-libgit2-only/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/include ./libgit2-linux-libgit2-only/
mv ${GITHUB_WORKSPACE}/build/libgit2-linux/lib ./libgit2-linux-libgit2-only/
tar -zcvf linux-x86_64-libgit2-only-lib.tar.gz libgit2-linux-libgit2-only
rm -rf ${GITHUB_WORKSPACE}/build ${GITHUB_WORKSPACE}/libgit2
- name: Upload Release Asset
id: upload-release-asset-libgit2-only
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ needs.github_release.outputs.release_upload_url }}
asset_path: ./linux-x86_64-libgit2-only-lib.tar.gz
asset_name: linux-x86_64-libgit2-only-lib.tar.gz
asset_content_type: application/gzip

darwin-release:
Expand All @@ -88,7 +112,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build universal static libraries for Darwin
- name: Build universal static libraries for Darwin - libgit2 compiled with libssh2 and openssl
run: |
TARGET_DIR=${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64 \
BUILD_ROOT_DIR=${GITHUB_WORKSPACE}/libgit2/build/amd \
Expand All @@ -100,40 +124,80 @@ jobs:
CMAKE_APPLE_SILICON_PROCESSOR=arm64 \
./hack/static.sh all
mkdir -p ./libgit2-darwin/lib
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/include ./libgit2-darwin/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/share ./libgit2-darwin/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/cmake ./libgit2-darwin/lib/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/engines-3 ./libgit2-darwin/lib/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/ossl-modules ./libgit2-darwin/lib/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/pkgconfig ./libgit2-darwin/lib/
mkdir -p ./libgit2-darwin-libgit2-all/lib
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/include ./libgit2-darwin-libgit2-all/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/share ./libgit2-darwin-libgit2-all/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/cmake ./libgit2-darwin-libgt2-all/lib/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/engines-3 ./libgit2-darwin-libgit2-all/lib/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/ossl-modules ./libgit2-darwin-libgit2-all/lib/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/pkgconfig ./libgit2-darwin-libgit2-all/lib/
libtool -static -o ./libgit2-darwin/lib/libcrypto.a \
libtool -static -o ./libgit2-darwin-libgit2-all/lib/libcrypto.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/libcrypto.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-arm64/lib/libcrypto.a
libtool -static -o ./libgit2-darwin/lib/libgit2.a \
libtool -static -o ./libgit2-darwin-libgit2-all/lib/libgit2.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/libgit2.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-arm64/lib/libgit2.a
libtool -static -o ./libgit2-darwin/lib/libssh2.a \
libtool -static -o ./libgit2-darwin-libgit2-all/lib/libssh2.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/libssh2.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-arm64/lib/libssh2.a
libtool -static -o ./libgit2-darwin/lib/libssl.a \
libtool -static -o ./libgit2-darwin-libgit2-all/lib/libssl.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/libssl.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-arm64/lib/libssl.a
libtool -static -o ./libgit2-darwin/lib/libz.a \
libtool -static -o ./libgit2-darwin-libgit2-all/lib/libz.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/libz.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-arm64/lib/libz.a
tar -zcvf darwin-libs.tar.gz libgit2-darwin
tar -zcvf darwin-libgit2-all-libs.tar.gz libgit2-darwin-libgit2-all
rm -rf ${GITHUB_WORKSPACE}/build ${GITHUB_WORKSPACE}/libgit2
env:
MACOSX_DEPLOYMENT_TARGET: 10.15
- name: Upload Release Asset
id: upload-release-asset-libgit2-all
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ needs.github_release.outputs.release_upload_url }}
asset_path: ./darwin-libgit2-all-libs.tar.gz
asset_name: darwin-libgit2-all-libs.tar.gz
asset_content_type: application/gzip

- name: Build universal static libraries for Darwin - libgit2 only
run: |
TARGET_DIR=${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64 \
BUILD_ROOT_DIR=${GITHUB_WORKSPACE}/libgit2/build/amd \
./hack/static.sh build_libgit2_only
TARGET_DIR=${GITHUB_WORKSPACE}/build/libgit2-darwin-arm64 \
BUILD_ROOT_DIR=${GITHUB_WORKSPACE}/libgit2/build/arm \
TARGET_ARCH=arm64 \
CMAKE_APPLE_SILICON_PROCESSOR=arm64 \
./hack/static.sh build_libgit2_only
mkdir -p ./libgit2-darwin-libgit2-only
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/include ./libgit2-darwin-libgit2-only/
mv ${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib ./libgit2-darwin-libgit2-only/
libtool -static -o ./libgit2-darwin-libgit2-only/lib/libgit2.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-amd64/lib/libgit2.a \
${GITHUB_WORKSPACE}/build/libgit2-darwin-arm64/lib/libgit2.a
tar -zcvf darwin-libs-libgit2-only.tar.gz libgit2-darwin-libgit2-only
rm -rf ${GITHUB_WORKSPACE}/build ${GITHUB_WORKSPACE}/libgit2
env:
MACOSX_DEPLOYMENT_TARGET: 10.15
- name: Upload Release Asset
id: upload-release-asset
id: upload-release-asset-libgit2-only
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
upload_url: ${{ needs.github_release.outputs.release_upload_url }}
asset_path: ./darwin-libs.tar.gz
asset_name: darwin-libs.tar.gz
asset_path: ./darwin-libs-libgit2-only.tar.gz
asset_name: darwin-libs-libgit2-only.tar.gz
asset_content_type: application/gzip
66 changes: 66 additions & 0 deletions Dockerfile.libgit2-only
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# This Dockerfile tests the hack/Makefile output against git2go.
ARG BASE_VARIANT=alpine
ARG GO_VERSION=1.17
ARG XX_VERSION=1.1.0

FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx

FROM --platform=$BUILDPLATFORM ${BASE_VARIANT} AS build-base

RUN apk add --no-cache \
bash \
curl \
build-base \
linux-headers \
perl \
cmake \
pkgconfig \
gcc \
musl-dev \
clang \
lld

COPY --from=xx / /

FROM build-base AS build-cross

ARG TARGETPLATFORM

RUN xx-apk add --no-cache \
build-base \
pkgconfig \
gcc \
musl-dev \
clang \
lld \
llvm \
linux-headers

WORKDIR /build
COPY hack/static.sh .

ENV CC=xx-clang
ENV CXX=xx-clang++

RUN ./static.sh build_libgit2_only

# trimmed removes all non necessary files (i.e. openssl binary).
FROM build-cross AS trimmed

ARG TARGETPLATFORM
RUN mkdir -p /trimmed/usr/local/$(xx-info triple)/ && \
mkdir -p /trimmed/usr/local/$(xx-info triple)/share

RUN cp -r /usr/local/$(xx-info triple)/lib/ /trimmed/usr/local/$(xx-info triple)/ && \
cp -r /usr/local/$(xx-info triple)/include/ /trimmed/usr/local/$(xx-info triple)/

FROM scratch as libs-arm64
COPY --from=trimmed /trimmed/ /

FROM scratch as libs-amd64
COPY --from=trimmed /trimmed/ /

FROM scratch as libs-armv7
COPY --from=trimmed /trimmed/ /

FROM libs-$TARGETARCH$TARGETVARIANT as libs
1 change: 0 additions & 1 deletion Dockerfile.test
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ RUN export LIBRARY_PATH="/usr/local/$(xx-info triple)/lib:/usr/local/$(xx-info t
RUN ./static.sh build_libssh2
RUN ./static.sh build_libgit2


# trimmed removes all non necessary files (i.e. openssl binary).
FROM build-cross AS trimmed

Expand Down
Loading

0 comments on commit 1282600

Please sign in to comment.