From 1e1ece5c6f314c94a23af094e5ff9fd08fb9354f Mon Sep 17 00:00:00 2001 From: Tine Jozelj Date: Tue, 22 Dec 2020 15:34:31 +0100 Subject: [PATCH] feat(packages): add starship mutliarch build --- .github/workflows/package-starship.yaml | 62 +++++++++++++++++++++++++ packages/Dockerfile.starship | 16 +++++++ 2 files changed, 78 insertions(+) create mode 100644 .github/workflows/package-starship.yaml create mode 100644 packages/Dockerfile.starship diff --git a/.github/workflows/package-starship.yaml b/.github/workflows/package-starship.yaml new file mode 100644 index 0000000..ac490a7 --- /dev/null +++ b/.github/workflows/package-starship.yaml @@ -0,0 +1,62 @@ +name: Packages + +on: + pull_request: + branches: main + push: + branches: main + +jobs: + starship: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Prepare + id: prepare + run: | + DOCKER_IMAGE=ghcr.io/mentos1386/starship + DOCKER_PLATFORMS=linux/amd64,linux/arm/v7,linux/arm64 + VERSION=0.47.0 + + TAGS="--tag ${DOCKER_IMAGE}:${VERSION} --tag ${DOCKER_IMAGE}:latest" + + echo ::set-output name=docker_image::${DOCKER_IMAGE} + echo ::set-output name=version::${VERSION} + echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} \ + --build-arg VERSION=${VERSION} \ + --build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \ + --build-arg VCS_REF=${GITHUB_SHA::8} \ + --cache-from "type=local,src=/tmp/.buildx-cache" \ + --cache-to "type=local,dest=/tmp/.buildx-cache" \ + ${TAGS} --file ./packages/Dockerfile.starship . + - name: Cache Docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - name: Docker Buildx (build) + run: | + docker buildx build --output "type=image,push=false" ${{ steps.prepare.outputs.buildx_args }} + - name: Login to Github Registry + if: success() && github.event_name != 'pull_request' + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.CR_PAT }} + - name: Docker Buildx (push) + if: success() && github.event_name != 'pull_request' + run: | + docker buildx build --output "type=image,push=true" ${{ steps.prepare.outputs.buildx_args }} + - name: Inspect image + if: always() && github.event_name != 'pull_request' + run: | + docker buildx imagetools inspect ${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }} + diff --git a/packages/Dockerfile.starship b/packages/Dockerfile.starship new file mode 100644 index 0000000..1027c3d --- /dev/null +++ b/packages/Dockerfile.starship @@ -0,0 +1,16 @@ +FROM rust:1 as build + +WORKDIR /usr/src/starship + +ARG VERSION=0.47.0 + +RUN git clone https://github.com/starship/starship.git . \ +&& git checkout tags/v$VERSION + +RUN cargo build --release + +RUN strip target/release/starship + +FROM scratch AS binaries +COPY --from=build /usr/src/starship/target/$TARGETPLATFORM/release/starship / +