diff --git a/.github/workflows/publish-docker-image.yml b/.github/workflows/publish-docker-image.yml new file mode 100644 index 00000000..217ce1af --- /dev/null +++ b/.github/workflows/publish-docker-image.yml @@ -0,0 +1,42 @@ +name: Publish splunk-otel-js Docker image to ghcr.io + +on: + release: + types: [published] + +jobs: + publish-image: + runs-on: ubuntu-20.04 + permissions: + packages: write + contents: read + steps: + - uses: actions/checkout@v3.5.3 + + - uses: docker/setup-buildx-action@v2 + + - name: Put GITHUB_REF_NAME into env + run: echo GITHUB_REF_NAME=${GITHUB_REF_NAME} >> $GITHUB_ENV + + - name: Set the major version number + run: echo MAJOR_VERSION=${GITHUB_REF_NAME} | sed -e 's/\..*//' >> $GITHUB_ENV + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2.2.0 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: build and publish container + uses: docker/build-push-action@v4.1.1 + with: + push: true + file: Dockerfile + build-args: | + RELEASE_VER=${{ env.GITHUB_REF_NAME }} + tags: | + ghcr.io/signalfx/splunk-otel-js/splunk-otel-js:latest + ghcr.io/signalfx/splunk-otel-js/splunk-otel-js:${{ env.MAJOR_VERSION }} + ghcr.io/signalfx/splunk-otel-js/splunk-otel-js:${{ env.GITHUB_REF_NAME }} + diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..bbc9876f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM node:16 AS build + +WORKDIR /splunk-otel-js +COPY . . +RUN npm install +RUN npm run compile +RUN npm run prebuild:os '14.0.0' '15.0.0' '16.0.0' '17.0.1' '18.0.0' +RUN npm pack && tar xf splunk-otel-$(npm view @splunk/otel version).tgz +RUN npm prune --omit=dev && cp -r node_modules/ package + +FROM busybox + +LABEL org.opencontainers.image.source="https://github.com/signalfx/splunk-otel-js" +LABEL org.opencontainers.image.description="Splunk Distribution of OpenTelemetry Node.js Instrumentation" + +COPY --from=build /splunk-otel-js/package /autoinstrumentation +RUN chmod -R go+r /autoinstrumentation +RUN cd /autoinstrumentation && ln -s ./instrument.js /autoinstrumentation/autoinstrumentation.js