Skip to content

Commit b1edd94

Browse files
Add Dockerfile for containerized CLI + update workflow to push Zipapp and container image (#209)
Add containerisation steps permission change and added secrets Add DockerHub Support to push images
1 parent ee79e5c commit b1edd94

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

.github/workflows/release.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ on:
55
tags:
66
- "v*"
77

8+
permissions:
9+
id-token: write
10+
contents: read
811
jobs:
912
build:
1013
runs-on: ubuntu-latest
@@ -43,3 +46,26 @@ jobs:
4346
asset_path: ./cloudsmith-${{ env.VERSION }}.pyz
4447
asset_name: cloudsmith-${{ env.VERSION }}.pyz
4548
asset_content_type: application/zip
49+
- name: Install and authenticate Cloudsmith CLI
50+
uses: cloudsmith-io/[email protected]
51+
with:
52+
oidc-namespace: ${{ vars.CLOUDSMITH_NAMESPACE }}
53+
oidc-service-slug: ${{ vars.CLOUDSMITH_SVC_SLUG }}
54+
- name: Push Zipapp to Cloudsmith
55+
id: push_zipapp
56+
run: cloudsmith push raw ${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp ./cloudsmith-${{ env.VERSION }}.pyz
57+
- name: Build Docker image
58+
id: build_cli_image
59+
run: |
60+
docker build --build-arg CLOUDSMITH_CLI_VERSION=${{ env.VERSION }} -t docker.cloudsmith.io/${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp/cloudsmith-cli:${{ env.VERSION }} .
61+
- name: Push Dockerised CLI to Cloudsmith
62+
id: push_dockerised_cli_cloudsmith
63+
run: |
64+
echo "${CLOUDSMITH_API_KEY}" | docker login docker.cloudsmith.io -u ${{ vars.CLOUDSMITH_SVC_SLUG }} --password-stdin
65+
docker push docker.cloudsmith.io/${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp/cloudsmith-cli:${{ env.VERSION }}
66+
- name: Push Dockerised CLI to DockerHub
67+
id: push_dockerised_cli_dockerhub
68+
run: |
69+
docker tag docker.cloudsmith.io/${{ vars.CLOUDSMITH_NAMESPACE }}/cli-zipapp/cloudsmith-cli:${{ env.VERSION }} cloudsmith/cloudsmith-cli:${{ env.VERSION }}
70+
echo "${{ secrets.DOCKERHUB_PAT }}" | docker login -u ${{ vars.DOCKERHUB_USER }} --password-stdin
71+
docker push cloudsmith/cloudsmith-cli:${{ env.VERSION }}

Dockerfile

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
FROM python:3.12-alpine
2+
3+
LABEL maintainer="[email protected]"
4+
LABEL description="Official Cloudsmith CLI, now served in a handy container"
5+
6+
ENV PYTHONDONTWRITEBYTECODE=1 \
7+
PIP_NO_CACHE_DIR=1 \
8+
PATH="/opt/cloudsmith:${PATH}"
9+
10+
RUN apk add --no-cache curl bash ca-certificates
11+
ARG CLOUDSMITH_CLI_VERSION
12+
13+
RUN mkdir -p /opt/cloudsmith \
14+
&& curl -1sLf -o /opt/cloudsmith/cloudsmith "https://dl.cloudsmith.io/public/cloudsmith/cli-zipapp/raw/names/cloudsmith-cli/versions/${CLOUDSMITH_CLI_VERSION}/cloudsmith-${CLOUDSMITH_CLI_VERSION}.pyz" \
15+
&& chmod +x /opt/cloudsmith/cloudsmith
16+
17+
# Default command
18+
ENTRYPOINT [ "cloudsmith" ]

0 commit comments

Comments
 (0)