From a43fe354ec6e6226a41ecfd98cd0343a54e5a428 Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Sun, 12 Jun 2022 16:15:54 +0200 Subject: [PATCH] Simplified & updated CI/CD --- .github/workflows/dockerhub.yml | 44 +++++++++++++++++++++++++++ .github/workflows/integration.yml | 2 +- .github/workflows/release.yml | 24 ++++----------- Dockerfile.arm32v7 | 49 ------------------------------- Dockerfile.arm64v8 | 49 ------------------------------- hooks/post_push | 8 ----- hooks/pre_build | 8 ----- 7 files changed, 51 insertions(+), 133 deletions(-) create mode 100644 .github/workflows/dockerhub.yml delete mode 100644 Dockerfile.arm32v7 delete mode 100644 Dockerfile.arm64v8 delete mode 100644 hooks/post_push delete mode 100644 hooks/pre_build diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml new file mode 100644 index 000000000..68e3d6772 --- /dev/null +++ b/.github/workflows/dockerhub.yml @@ -0,0 +1,44 @@ +# Build & publish docker images +name: Dockerhub + +on: + push: + tags: [v*] + branches: [ main ] + + +jobs: + dockerhub: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - + name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + - + name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - + name: Set tag name + run: | + if [[ ${{ github.ref_type }} == "tag" ]]; then + echo "IMAGE_TAG=${{ github.ref_name }}" >> $GITHUB_ENV + else + echo "IMAGE_TAG=latest" >> $GITHUB_ENV + fi + - + name: Build and push + uses: docker/build-push-action@v3 + with: + push: true + tags: b4bz/buildx-test:${{env.IMAGE_TAG}} + platforms: linux/amd64,linux/arm/v7,linux/arm64 \ No newline at end of file diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 8d1a7ad07..257f7582e 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -20,7 +20,7 @@ jobs: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v2 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 886556dce..62c15a84b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,7 +10,7 @@ jobs: name: Upload Release Asset runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Build project run: | yarn install @@ -20,21 +20,9 @@ jobs: run: zip -r ../homer.zip ./* - name: Create Release id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: softprops/action-gh-release@v1 with: - tag_name: ${{ github.ref }} - release_name: Release ${{ github.ref }} - draft: false - prerelease: false - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./homer.zip - asset_name: homer.zip - asset_content_type: application/zip + token: ${{ secrets.GITHUB_TOKEN }} + generate_release_notes: true + files: | + homer.zip \ No newline at end of file diff --git a/Dockerfile.arm32v7 b/Dockerfile.arm32v7 deleted file mode 100644 index 270d7b53b..000000000 --- a/Dockerfile.arm32v7 +++ /dev/null @@ -1,49 +0,0 @@ -# build stage -FROM node:lts-alpine as build-stage - -WORKDIR /app - -COPY package*.json ./ -RUN yarn install --frozen-lockfile - -COPY . . -RUN yarn build - -# Multi arch build support -FROM alpine as qemu - -ARG QEMU_VERSION="v4.2.0-7" - -RUN wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-arm-static && chmod +x qemu-arm-static - -# production stage -FROM arm32v7/alpine:3.16 - -COPY --from=qemu qemu-arm-static /usr/bin/ - -ENV GID 1000 -ENV UID 1000 -ENV PORT 8080 -ENV SUBFOLDER "/_" -ENV INIT_ASSETS 1 - -RUN addgroup -S lighttpd -g ${GID} && adduser -D -S -u ${UID} lighttpd lighttpd && \ - apk add -U --no-cache lighttpd && \ - rm /usr/bin/qemu-arm-static - -WORKDIR /www - -COPY lighttpd.conf /lighttpd.conf -COPY entrypoint.sh /entrypoint.sh -COPY --from=build-stage --chown=${UID}:${GID} /app/dist /www/ -COPY --from=build-stage --chown=${UID}:${GID} /app/dist/assets /www/default-assets - -USER ${UID}:${GID} - -HEALTHCHECK --interval=30s --timeout=5s --retries=3 \ - CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:${PORT}/ || exit 1 - -EXPOSE ${PORT} -VOLUME /www/assets - -CMD ["lighttpd", "-D", "-f", "/lighttpd.conf"] diff --git a/Dockerfile.arm64v8 b/Dockerfile.arm64v8 deleted file mode 100644 index f940bde45..000000000 --- a/Dockerfile.arm64v8 +++ /dev/null @@ -1,49 +0,0 @@ -# build stage -FROM node:lts-alpine as build-stage - -WORKDIR /app - -COPY package*.json ./ -RUN yarn install --frozen-lockfile - -COPY . . -RUN yarn build - -# Multi arch build support -FROM alpine as qemu - -ARG QEMU_VERSION="v4.2.0-7" - -RUN wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-aarch64-static && chmod +x qemu-aarch64-static - -# production stage -FROM arm64v8/alpine:3.16 - -COPY --from=qemu qemu-aarch64-static /usr/bin/ - -ENV GID 1000 -ENV UID 1000 -ENV PORT 8080 -ENV SUBFOLDER "/_" -ENV INIT_ASSETS 1 - -RUN addgroup -S lighttpd -g ${GID} && adduser -D -S -u ${UID} lighttpd lighttpd && \ - apk add -U --no-cache lighttpd && \ - rm /usr/bin/qemu-aarch64-static - -WORKDIR /www - -COPY lighttpd.conf /lighttpd.conf -COPY entrypoint.sh /entrypoint.sh -COPY --from=build-stage --chown=${UID}:${GID} /app/dist /www/ -COPY --from=build-stage --chown=${UID}:${GID} /app/dist/assets /www/default-assets - -USER ${UID}:${GID} - -HEALTHCHECK --interval=30s --timeout=5s --retries=3 \ - CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:${PORT}/ || exit 1 - -EXPOSE ${PORT} -VOLUME /www/assets - -CMD ["lighttpd", "-D", "-f", "/lighttpd.conf"] diff --git a/hooks/post_push b/hooks/post_push deleted file mode 100644 index 3d4830d2b..000000000 --- a/hooks/post_push +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -IFS='-' read -r TAG string <<< "$DOCKER_TAG" - -docker manifest create b4bz/homer:$TAG b4bz/homer:$TAG-amd64 b4bz/homer:$TAG-arm32v7 b4bz/homer:$TAG-arm64v8 -docker manifest annotate b4bz/homer:$TAG b4bz/homer:$TAG-arm32v7 --os linux --arch arm -docker manifest annotate b4bz/homer:$TAG b4bz/homer:$TAG-arm64v8 --os linux --arch arm64 --variant v8 -docker manifest push --purge b4bz/homer:$TAG diff --git a/hooks/pre_build b/hooks/pre_build deleted file mode 100644 index bc1b6fe2b..000000000 --- a/hooks/pre_build +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -# Update to docker-ee 18.x for manifests -apt-get -y update -apt-get -y --only-upgrade install docker-ee -# Register qemu-*-static for all supported processors except the -# current one, but also remove all registered binfmt_misc before -docker run --rm --privileged multiarch/qemu-user-static:register --reset \ No newline at end of file