diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 21766bc..5070f60 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -6,66 +6,34 @@ on: tags: - v* +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + jobs: - build: + build-and-push-image: runs-on: ubuntu-latest + permissions: + contents: read + packages: write steps: - - uses: actions/checkout@v2 - - - name: Prepare - id: prepare - run: | - DOCKER_IMAGE=averagemarcus/tailscale-exporter - DOCKER_PLATFORMS=linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/386,linux/ppc64le,linux/s390x - - VERSION=latest - if [[ $GITHUB_REF == refs/tags/* ]]; then - VERSION=${GITHUB_REF#refs/tags/} - fi - - TAGS="--tag ${DOCKER_IMAGE}:${VERSION}" - if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then - TAGS="$TAGS --tag ${DOCKER_IMAGE}:latest" - fi - - echo ::set-output name=tags::${TAGS} - echo ::set-output name=platforms::${DOCKER_PLATFORMS} - - - name: Set up Docker Buildx - uses: crazy-max/ghaction-docker-buildx@v3 - - - name: Cache Docker layers - uses: actions/cache@v2 - id: cache - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - - name: Docker Buildx (build) - run: | - docker buildx build \ - --cache-from "type=local,src=/tmp/.buildx-cache" \ - --cache-to "type=local,dest=/tmp/.buildx-cache" \ - --platform ${{ steps.prepare.outputs.platforms }} \ - --output "type=image,push=false" \ - ${{ steps.prepare.outputs.tags }} \ - . - - - name: Docker Login - env: - DOCKER_USERNAME: averagemarcus - DOCKER_PASSWORD: ${{ secrets.DOCKER_TOKEN }} - run: | - echo "${DOCKER_PASSWORD}" | docker login --username "${DOCKER_USERNAME}" --password-stdin - - - name: Docker Buildx (push) - run: | - docker buildx build \ - --cache-from "type=local,src=/tmp/.buildx-cache" \ - --cache-to "type=local,dest=/tmp/.buildx-cache" \ - --platform ${{ steps.prepare.outputs.platforms }} \ - --output "type=image,push=true" \ - ${{ steps.prepare.outputs.tags }} \ - . + - name: Checkout repository + uses: actions/checkout@v3 + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/README.md b/README.md index 4653816..5c94868 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ The following environment variable can be used to configure the exporter: ```shell export TAILSCALE_API_KEY="my-tailscale-api-key" export TAILSCALE_TAILNET="my-tailnet.github" -docker run --rm -it -p 8080:8080 -e TAILSCALE_API_KEY -e TAILSCALE_TAILNET averagemarcus/tailscale-exporter:latest +docker run --rm -it -p 8080:8080 -e TAILSCALE_API_KEY -e TAILSCALE_TAILNET ghcr.io/averagemarcus/tailscale-exporter:latest ``` Then visit: [http://localhost:8080/metrics](http://localhost:8080/metrics) @@ -76,7 +76,7 @@ spec: spec: containers: - name: tailscale-exporter - image: averagemarcus/tailscale-exporter:latest + image: ghcr.io/averagemarcus/tailscale-exporter:latest imagePullPolicy: Always ports: - containerPort: 8080