aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorGravatar Abhinav Gupta <mail@abhinavg.net> 2023-04-21 23:36:30 -0700
committerGravatar GitHub <noreply@github.com> 2023-04-21 23:36:30 -0700
commit434fc43c4b5403b38db408621a286096806c4036 (patch)
tree7e17c4bc4907bf0191d3652935ae17c4dcf080fb /.github
parentbfa7ecb139e9255484b98595714a6e88c5e988e1 (diff)
downloadsally-434fc43c4b5403b38db408621a286096806c4036.tar.gz
sally-434fc43c4b5403b38db408621a286096806c4036.tar.zst
sally-434fc43c4b5403b38db408621a286096806c4036.zip
ci: Publish Docker image to ghcr.io on release (#82)
Adds a workflow that builds and publishes a Docker image to ghcr.io based on the Dockerfile in the root of the repository. This will become available at https://github.com/uber-go/sally/pkgs/container/sally. Users will be able to import it by using `ghcr.io/uber-go/sally:$tag` with `docker pull` or in the `FROM` clause of their own Docker file. As a test for this, I published it manually to my own fork. The image is at https://github.com/abhinav/sally/pkgs/container/sally. With that, I ran the following Dockerfile: FROM ghcr.io/abhinav/sally:master COPY sally.yaml / And it worked as expected.
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/docker.yml51
-rw-r--r--.github/workflows/go.yml14
2 files changed, 65 insertions, 0 deletions
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
new file mode 100644
index 0000000..11e938e
--- /dev/null
+++ b/.github/workflows/docker.yml
@@ -0,0 +1,51 @@
+name: Publish Docker Image
+
+on:
+ # Runs when a new release is tagged.
+ release:
+ types: [published]
+
+ # Or when we manually run it from the UI.
+ workflow_dispatch:
+
+env:
+ REGISTRY: ghcr.io
+ IMAGE_NAME: ${{ github.repository }}
+
+jobs:
+ build-and-push-image:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ packages: write
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ # This action inspects the GitHub event metadata
+ # and fills tags and labels (e.g. 'latest')
+ # needed for the build step.
+ - name: Extract metadata (tags, labels) for Docker
+ id: meta
+ uses: docker/metadata-action@v4
+ with:
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
+
+ - name: Log into Container Registry
+ uses: docker/login-action@v2
+ with:
+ registry: ${{ env.REGISTRY }}
+ username: ${{ github.actor }}
+ password: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Build and push image
+ uses: docker/build-push-action@v4
+ with:
+ context: .
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index 7411a85..7561b25 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -31,3 +31,17 @@ jobs:
- name: Upload coverage to codecov.io
uses: codecov/codecov-action@v1
+
+ docker:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v2
+
+ - name: Build image
+ uses: docker/build-push-action@v4
+ with:
+ context: .