name: Build container images on: push: branches: - "master" tags: - "*" jobs: build-image: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 # set environment - name: Set BUILD_TIME env run: echo "BUILD_TIME=$(date)" >> $GITHUB_ENV - name: Set GIT_COMMIT env run: echo "GIT_COMMIT=$(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@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push uses: docker/build-push-action@v5 with: push: true context: . platforms: linux/amd64,linux/arm/v7,linux/arm64 tags: ${{ steps.image-tags.outputs.container_images }} build-args: | APP_VERSION=${{ env.APP_VERSION }} BUILD_TIME=${{ env.BUILD_TIME }} GIT_COMMIT=${{ env.GIT_COMMIT }} cache-from: type=gha cache-to: type=gha,mode=max