Compare commits

..

1 commit
v0.0.1 ... main

Author SHA1 Message Date
899b75f47d Squash all commits into one
remember to login to OCI

add nightly build

build nightly off commit

Squashed all commits into one
2024-11-03 14:12:44 -08:00
3 changed files with 88 additions and 39 deletions

View file

@ -1,4 +1,4 @@
name: Build and Publish Docker Image on Commit
name: Build Docker Image on Commit
on:
push:
@ -15,17 +15,26 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
- name: Test Docker Hello World
- name: Set REPO_VARS
id: repo-url
run: |
echo "Testing Docker connection..."
docker run hello-world
echo "REPO_HOST=$(echo "${{ github.server_url }}" | sed 's~http[s]*://~~g')" >> $GITHUB_ENV
echo "REPO_PATH=${{ github.repository }}" >> $GITHUB_ENV
- name: Login to OCI registry
run: |
echo "${{ secrets.OCI_TOKEN }}" | docker login git.merith.xyz -u "${{ secrets.OCI_USER }}" --password-stdin
echo "${{ secrets.OCI_TOKEN }}" | docker login $REPO_HOST -u "${{ secrets.OCI_USER }}" --password-stdin
- name: Build and push Docker image
- name: Build and push Docker images
run: |
REPO=git.merith.xyz/${{ github.repository }}
# Build and push multi-platform Docker images
docker build -t $REPO:${{ github.sha }} --push .
# Build Docker image with commit SHA
docker build -t $REPO_HOST/$REPO_PATH:${{ github.sha }} .
docker push $REPO_HOST/$REPO_PATH:${{ github.sha }}
# Build Docker image with nightly tag
docker tag $REPO_HOST/$REPO_PATH:${{ github.sha }} $REPO_HOST/$REPO_PATH:nightly
docker push $REPO_HOST/$REPO_PATH:nightly
# Remove local images to save storage
docker rmi $REPO_HOST/$REPO_PATH:${{ github.sha }}
docker rmi $REPO_HOST/$REPO_PATH:nightly

View file

@ -13,21 +13,25 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
- name: Test Docker Hello World
- name: Set REPO_VARS
id: repo-url
run: |
echo "Testing Docker connection..."
docker run hello-world
echo "REPO_HOST=$(echo "${{ github.server_url }}" | sed 's~http[s]*://~~g')" >> $GITHUB_ENV
echo "REPO_PATH=${{ github.repository }}" >> $GITHUB_ENV
- name: Login to OCI registry
run: |
echo "${{ secrets.OCI_TOKEN }}" | docker login git.merith.xyz -u "${{ secrets.OCI_USER }}" --password-stdin
echo "${{ secrets.OCI_TOKEN }}" | docker login $REPO_HOST -u "${{ secrets.OCI_USER }}" --password-stdin
- name: Build and push Docker image
run: |
REPO=git.merith.xyz/${{ github.repository }}
TAG=${{ github.ref_name }} # Get the tag name from the context
# Build and push multi-platform Docker images
docker build -t $REPO:$TAG --push .
docker build -t $REPO_HOST/$REPO_PATH:$TAG --push .
# Tag and push latest
docker tag $REPO:$TAG $REPO:latest
docker push $REPO:latest
docker tag $REPO_HOST/$REPO_PATH:$TAG $REPO_HOST/$REPO_PATH:latest
docker push $REPO_HOST/$REPO_PATH:latest
# Remove the local image to save storage
docker rmi $REPO_HOST/$REPO_PATH:$TAG
docker rmi $REPO_HOST/$REPO_PATH:latest

36
Readme.md Normal file
View file

@ -0,0 +1,36 @@
# README for Docker Image Build and Publish Workflows
## Overview
This repository contains two GitHub Actions workflows that automate the building and publishing of Docker images to an OCI registry.
### Workflows
1. **On Commit to Main**
- **Trigger:** Activates on commits to the `main` branch (tags are excluded).
- **Purpose:** Builds and publishes a Docker image for each commit.
2. **On Tag Push**
- **Trigger:** Activates when a new tag is pushed.
- **Purpose:** Builds and publishes a Docker image for the tag and tags it as `latest`.
## Prerequisites
- **Secrets Needed:**
- `OCI_TOKEN`: Your OCI registry token.
- `OCI_USER`: Your OCI registry username.
## How to Use
1. **Clone the Repository:** Get a local copy of this repository.
2. **Modify Dockerfile:** Update the `Dockerfile` for your application.
3. **Push Changes:** Push changes to the `main` branch or create a new tag.
4. **Check Workflow Status:** View the Actions tab in Forgjo to monitor workflow runs.
## Notes
- Ensure your Docker environment is compatible with multi-platform builds if necessary.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.