name: build-image-from-tag on: workflow_dispatch: push: branches: [main] pull_request: branches: [main] jobs: build: # Don't build the image if the registry credentials are not set, the ref is not a tag or it doesn't contain '-v' if: ${{ vars.REGISTRY_USER != '' && secrets.REGISTRY_PASS != '' && startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-v') }} runs-on: docker container: image: git.badblocks.dev/oci/pkmntrade-club_web:latest # Mount the dind socket on the container at the default location options: -v /dind/docker.sock:/var/run/docker.sock steps: - name: Extract image name and tag from git and get registry name from env id: job_data run: | echo "::set-output name=img_name::${GITHUB_REF_NAME%%-v*}" echo "::set-output name=img_tag::${GITHUB_REF_NAME##*-v}" echo "::set-output name=registry::$( echo "${{ github.server_url }}" | sed -e 's%https://%%' )" echo "::set-output name=oci_registry_prefix::$( echo "${{ github.server_url }}/oci" | sed -e 's%https://%%' )" - name: Checkout the repo uses: actions/checkout@v4 - name: Export build dir and Dockerfile id: build_data run: | img="${{ steps.job_data.outputs.img_name }}" build_dir="$(pwd)/${img}" dockerfile="${build_dir}/Dockerfile" if [ -f "$dockerfile" ]; then echo "::set-output name=build_dir::$build_dir" echo "::set-output name=dockerfile::$dockerfile" else echo "Couldn't find the Dockerfile for the '$img' image" exit 1 fi - name: Login to the Container Registry uses: docker/login-action@v3 with: registry: ${{ steps.job_data.outputs.registry }} username: ${{ vars.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASS }} - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and Push uses: docker/build-push-action@v6 with: push: true tags: | ${{ steps.job_data.outputs.oci_registry_prefix }}/${{ steps.job_data.outputs.img_name }}:${{ steps.job_data.outputs.img_tag }} ${{ steps.job_data.outputs.oci_registry_prefix }}/${{ steps.job_data.outputs.img_name }}:latest context: ${{ steps.build_data.outputs.build_dir }} file: ${{ steps.build_data.outputs.dockerfile }} build-args: | OCI_REGISTRY_PREFIX=${{ steps.job_data.outputs.oci_registry_prefix }}/