Skip to content

Commit

Permalink
CI process, build images for action support
Browse files Browse the repository at this point in the history
  • Loading branch information
joelmccracken committed Jan 27, 2025
1 parent 8a16574 commit f5051e3
Show file tree
Hide file tree
Showing 10 changed files with 174 additions and 17 deletions.
97 changes: 95 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,102 @@ on:
push:
branches: main

permissions:
packages: write
contents: write
attestations: write
id-token: write
actions: write
checks: write

jobs:
build:
setup:
runs-on: ubuntu-latest
steps:
- id: get_tag
run: echo "tag=$TAG" >>"$GITHUB_OUTPUT"
env:
TAG: ${{ github.event.pull_request.head.sha || github.sha }}
outputs:
tag: ${{ steps.get_tag.outputs.tag }}

otel-image:
runs-on: ubuntu-latest
needs:
- setup
steps:
- uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: ghcr.io/freckle/trace-workflow-action-otel-image
tags: |
type=edge,branch=main
type=raw,value=${{ needs.setup.outputs.tag }}
- name: Build and push Docker image
id: push
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: otel-image
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

trace-workflow-action-image:
runs-on: ubuntu-latest
needs:
- setup
steps:
- uses: actions/checkout@v4
- run: "echo 'TODO: tests'"
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: "ghcr.io"
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: ghcr.io/freckle/trace-workflow-action-image
tags: |
type=edge,branch=main
type=raw,value=${{ needs.setup.outputs.tag }}
- name: Build and push Docker image
id: push
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

# test:
# runs-on: ubuntu-latest
# needs:
# - setup
# - otel-image
# services:
# otel-collector:
# image: "ghcr.io/freckle/trace-workflow-action-otel-image:${{needs.setup.outputs.tag}}"
# ports:
# - "4317:4317"
# - "4318:4318"
# env:
# DD_API_KEY: ${{ secrets.DATADOG_API_KEY }}

# steps:
# - uses: actions/checkout@v4
# - uses: ./
# # with:
# # workflow-action-image-tag: ${{ needs.setup.outputs.tag }}
21 changes: 21 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM haskell:9.2.7 AS build

WORKDIR /opt/trace-workflow-action
COPY stack.yaml stack.yaml.lock package.yaml trace-workflow.cabal .
RUN stack build --only-dependencies

COPY app ./app
COPY src ./src

RUN mkdir bin && stack --local-bin-path ./bin build --copy-bins

FROM debian:bullseye

RUN apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates && \
rm -rf /var/lib/apt/lists/*

COPY --from=build /opt/trace-workflow-action/bin/trace-workflow /trace-workflow

ENTRYPOINT ["/trace-workflow"]
15 changes: 15 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash

set -euo pipefail

docker build --progress=plain -t freckle/trace-workflow-action .
# docker tag freckle/trace-workflow-action:latest public.ecr.aws/d6u9s6h9/freckle/trace-workflow-action:latest
# docker push public.ecr.aws/d6u9s6h9/freckle/trace-workflow-action:latest





gh repo list freckle --visibility public | awk '{ print $1 }' | while read repo; do gh search code --filename 'Dockerfile' --repo "$repo"; done;

freckle/ajax-js, freckle/react-hooks, freckle/npm-package-template, freckle/resource-status-js, freckle/non-empty-js, freckle/aws-s3-lock-action, freckle/stack-action, freckle/commenter-action, freckle/await-statuses-action, freckle/grep-action, freckle/wiz-action, freckle/typescript-action-template, freckle/halt-action, freckle/freckle-app, freckle/flakes, freckle/stack-cache-action, freckle/wai-middleware-openapi, freckle/setup-platform-action, freckle/action-gh-release, freckle/slack-notify-action, freckle/parser-js, freckle/recurly-client, freckle/haskell-library-template, freckle/maybe-js, freckle/cancelable-promise-js, freckle/query-params-js, freckle/bcp47, freckle/mergeabot-action, freckle/github-workflow-commands, freckle/github-app-token,
9 changes: 0 additions & 9 deletions otel-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,6 @@ processors:
timeout: 10s
attributes/tags:
actions:
- key: env
value: $OTLP_ENV
action: upsert
- key: service
value: $OTLP_SERVICE
action: upsert
- key: version
value: $OTLP_VERSION
action: upsert
- key: otlp
value: true
action: insert
Expand Down
3 changes: 3 additions & 0 deletions otel-image/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
FROM otel/opentelemetry-collector-contrib:0.97.0
COPY config.yml /config.yml
CMD ["--config", "/config.yml"]
40 changes: 40 additions & 0 deletions otel-image/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
extensions:
health_check:

receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318

processors:
batch:
send_batch_max_size: 100
send_batch_size: 10
timeout: 10s
attributes/tags:
actions:
- key: otlp
value: true
action: insert

exporters:
datadog:
api:
site: datadoghq.com
key: $DD_API_KEY

debug:
verbosity: detailed
sampling_initial: 5
sampling_thereafter: 200

service:
pipelines:
traces:
receivers: [otlp]
processors: [attributes/tags,batch]
exporters: [datadog, debug]
extensions: [health_check]
1 change: 0 additions & 1 deletion package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ library:
dependencies:
- aeson
- clock
- dotenv
- extra
- hs-opentelemetry-api
- hs-opentelemetry-sdk
Expand Down
2 changes: 0 additions & 2 deletions src/Freckle/TraceWorkflow/App.hs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ module Freckle.TraceWorkflow.App

import Relude

import Configuration.Dotenv qualified as Dotenv
import Freckle.TraceWorkflow.GitHub (RunWithJobs (..))
import Freckle.TraceWorkflow.GitHub qualified as GitHub
import Freckle.TraceWorkflow.OpenTelemetry
Expand All @@ -16,7 +15,6 @@ import UnliftIO (MonadUnliftIO)

main :: IO ()
main = do
Dotenv.loadFile Dotenv.defaultConfig
env <- getWorkflowEnv
mRun <-
GitHub.getRunWithJobs
Expand Down
2 changes: 0 additions & 2 deletions src/Freckle/TraceWorkflow/GitHub.hs
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,6 @@ getJobs token owner repo runId = do
page <-
github @_ @JobsPage token
$ "/repos/"
<> unpack owner
<> "/"
<> unpack repo
<> "/actions/runs/"
<> show runId
Expand Down
1 change: 0 additions & 1 deletion trace-workflow.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ library
aeson
, base
, clock
, dotenv
, extra
, hs-opentelemetry-api
, hs-opentelemetry-sdk
Expand Down

0 comments on commit f5051e3

Please sign in to comment.