Skip to content

Commit

Permalink
Copy actions from my meal repository
Browse files Browse the repository at this point in the history
  • Loading branch information
SantaClaas committed Dec 27, 2024
1 parent b242ce9 commit 005f28c
Show file tree
Hide file tree
Showing 3 changed files with 128 additions and 0 deletions.
80 changes: 80 additions & 0 deletions .github/workflows/build-docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Create and publish docker image

# Configures this workflow to run every time a change is pushed to the branch called `release`.
on:
# Make it reusable
workflow_call:
inputs:
image_name:
required: true
type: string
permissions:
packages: write
contents: read
attestations: write
id-token: write

# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
env:
REGISTRY: ghcr.io

# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu.
jobs:
build-and-push-image:
runs-on: ubuntu-latest
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
# This needs to be set in the calling workflows too
# permissions:
# packages: write
# contents: read
# attestations: write
# id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938

# Set driver to 'docker-container' instead of 'docker' as the latter does not work with GitHub Actions Cache
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@988b5a0280414f521da01fcc63a27aeeb4b104db
with:
driver: docker-container

# Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here.
- name: Log in to the Container registry
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels.
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
with:
images: ${{ env.REGISTRY }}/${{ inputs.image_name }}

# This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages.
# It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository.
# It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step.
- name: Build and push Docker image
id: push
uses: docker/build-push-action@32945a339266b759abcbdc89316275140b0fc960
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
# Min caches only epxorted layers. Max caches all layers https://docs.docker.com/build/cache/backends/#cache-mode
cache-to: type=gha,mode=max
# Don't use linux/arm64 until dedicated runners for arm are available to speed this up
platforms: linux/amd64

# Does not work with podman pull afaik
# - name: Generate artifact attestation
# uses: actions/attest-build-provenance@v1
# with:
# subject-name: ${{ env.REGISTRY }}/${{ inputs.image_name }}
# subject-digest: ${{ steps.push.outputs.digest }}
# push-to-registry: true
25 changes: 25 additions & 0 deletions .github/workflows/build-quex.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Deploy quex

on:
push:
paths-ignore:
- ".github/workflows/deploy.yml"
# See "if:" below
# branches:
# - main

jobs:
build:
# There is currently no way to combine event triggers "if branch is main AND file is changed"
if: github.ref_name == 'main'
uses: ./.github/workflows/build-docker.yml
permissions:
packages: write
contents: read
attestations: write
id-token: write
with:
image_name: ${{ github.repository }}
deploy:
needs: build
uses: ./.github/workflows/deploy.yml
23 changes: 23 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Deploy Development Environment

concurrency:
group: development
cancel-in-progress: true

on:
registry_package:
types: [updated, published]
# Allow manual update
workflow_dispatch:
workflow_call:

jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: development
url: https://melt.claa.sh/
if: github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_call' || github.event.registry_package.package_version.container_metadata.tag.name == 'quex'
steps:
- name: deploy
run: 'curl --fail --show-error -H "Authorization: Bearer ${{ secrets.QUEX_TOKEN }}" https://tugboat.claa.sh/update'

0 comments on commit 005f28c

Please sign in to comment.