diff --git a/.github/workflows/cd.yaml b/.github/workflows/cd.yaml index c18f144..c1767c5 100644 --- a/.github/workflows/cd.yaml +++ b/.github/workflows/cd.yaml @@ -3,6 +3,11 @@ on: push: tags: - "v[0-9]+.[0-9]+.[0-9]+" + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + jobs: goreleaser: runs-on: ubuntu-latest @@ -22,4 +27,35 @@ jobs: args: release --rm-dist env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} \ No newline at end of file + HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} + + # ref: https://docs.github.com/ja/actions/publishing-packages/publishing-docker-images#github-packages%E3%81%B8%E3%81%AE%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%E3%81%AE%E5%85%AC%E9%96%8B + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Log in to the Container registry + uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push Docker image + uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a72afde --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +# syntax=docker/dockerfile:1 +FROM golang:1.18-alpine AS builder +WORKDIR /github.com/ddddddO/gtree +COPY go.* *.go ./ +WORKDIR /github.com/ddddddO/gtree/cmd/gtree +COPY cmd/gtree/*.go ./ +RUN go build -o gtree . + +FROM alpine:latest +WORKDIR /app +COPY --from=builder /github.com/ddddddO/gtree/cmd/gtree/gtree ./ +ENTRYPOINT ["./gtree"] diff --git a/README_CLI.md b/README_CLI.md index 0f655d0..667dc85 100644 --- a/README_CLI.md +++ b/README_CLI.md @@ -5,12 +5,27 @@ go version requires 1.18 or later. ```console -go install github.com/ddddddO/gtree/cmd/gtree@latest +$ go install github.com/ddddddO/gtree/cmd/gtree@latest ``` or using Homebrew. ```console -brew install ddddddO/tap/gtree +$ brew install ddddddO/tap/gtree +``` + +or [docker image](https://github.com/ddddddO/gtree/pkgs/container/gtree). +```console +$ docker pull ghcr.io/ddddddo/gtree:docker +$ docker run ghcr.io/ddddddo/gtree:docker template | docker run -i ghcr.io/ddddddo/gtree:docker output +gtree +├── cmd +│ └── gtree +│ └── main.go +├── testdata +│ ├── sample1.md +│ └── sample2.md +├── makefile +└── tree.go ``` **or, download binary from [here](https://github.com/ddddddO/gtree/releases).**