--- /dev/null
+# 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
# 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:
name: Upload Release Asset
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Build project
run: |
yarn install
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
+++ /dev/null
-# 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"]
+++ /dev/null
-# 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"]
+++ /dev/null
-#!/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
+++ /dev/null
-#!/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