name: ci on: [push, pull_request] jobs: build_linux: runs-on: ubuntu-latest steps: - name: Checkout source uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Convert to lowercase id: github_repository_to_lowercase run: | # Grab the value (you can also use `${{ github.ref }}`, `${{ secrets.MY_SECRET }}`, etc.) raw_value="${{ github.repository }}" # Convert to lower case lower_value=$(echo "$raw_value" | tr '[:upper:]' '[:lower:]') # Export it to the workflow environment # echo "MY_LOWER=$lower_value" >> $GITHUB_ENV # If you want to use it as an output of this step: echo "lowercase=$lower_value" >> $GITHUB_OUTPUT - name: Convert ref to buildx safe value id: docker_tag_from_ref shell: bash run: | # Grab the raw ref REF="${{ github.ref }}" # Strip the "refs/*/" prefix (refs/heads/, refs/tags/…) TAG=${REF#refs/*/} # Replace characters that Docker tags disallow # * "/" → "-" # * ":" → "-" # * Any other non‑alphanumeric / . / _ / - → "-" TAG=${TAG//\//-} TAG=${TAG//:/-} TAG=${TAG//[^a-zA-Z0-9._-]/-} # (Optional) force lower‑case – Docker tags are case‑sensitive, # but many people prefer lower‑case TAG=${TAG,,} # Export to the action's output echo "docker-tag=${TAG}" >> $GITHUB_OUTPUT - name: Cache Docker layers uses: actions/cache@v3 with: path: /tmp/.buildx-cache key: ${{ runner.os }}-buildx-${{ github.sha }} restore-keys: | ${{ runner.os }}-buildx- - name: Build image id: build uses: docker/build-push-action@v5 with: context: . file: TinfoilVibeServer/Dockerfile # do not push yet push: false tags: | ${{ vars.REGISTRY_HOST }}/${{ steps.github_repository_to_lowercase.outputs.lowercase }}:${{ github.sha }} ${{ vars.REGISTRY_HOST }}/${{ steps.github_repository_to_lowercase.outputs.lowercase }}:${{ steps.docker_tag_from_ref.outputs.docker-tag }} ${{ vars.REGISTRY_HOST }}/${{ steps.github_repository_to_lowercase.outputs.lowercase }}:latest build-args: | # Add any build args here # ARG_NAME=VALUE cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache