diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 0000000..b4bc91f --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,99 @@ +name: Build container images + +on: + push: + branches: + - "master" + tags: + - "*" + +jobs: + build-image: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + # set environment + - name: Set APP_VERSION env + run: echo "APP_VERSION=$(echo ${GITHUB_REF} | rev | cut -d'/' -f 1 | rev )" >> $GITHUB_ENV + + - name: Set BUILD_TIME env + run: echo "BUILD_TIME=$(date)" >> $GITHUB_ENV + + - name: Set COMMIT env + run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV + + - name: Environment printer + uses: managedkaos/print-env@v1.0 + + - name: Prepare image tags + id: image-tags + run: | + base=ngoduykhanh/wireguard-ui + app_version=dev + + ## Set git tag as image tag + ## + if [[ '${{ github.ref }}' == *"refs/tags/"* ]]; then + github_tag="${GITHUB_REF#refs/*/}" + + SEMVER_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$" + if [[ "$github_tag" =~ $SEMVER_REGEX ]]; then + github_tag=$(echo "${github_tag}" | sed 's/^v//') + fi + + app_version=${github_tag} + + container_images=$(cat <> $GITHUB_OUTPUT + echo "$container_images" >> $GITHUB_OUTPUT + echo "EOF" >> $GITHUB_OUTPUT + + ## Set APP_VERSION env + # + echo "APP_VERSION=${app_version}" >> $GITHUB_ENV + + # set up docker and build images + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker 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: Build and push + uses: docker/build-push-action@v4 + with: + push: true + context: . + platforms: linux/amd64,linux/arm/v7 + tags: ${{ steps.image-tags.outputs.container_images }} + build-args: | + APP_VERSION=${{ env.APP_VERSION }} + BUILD_TIME=${{ env.BUILD_TIME }} + COMMIT=${{ env.COMMIT }} diff --git a/Dockerfile b/Dockerfile index 8bc96e8..945623d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,9 @@ LABEL maintainer="Khanh Ngo