123 lines
5.0 KiB
YAML
123 lines
5.0 KiB
YAML
name: 'Build docker container'
|
|
on:
|
|
push:
|
|
tags:
|
|
- '*'
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ GITHUB_WORKSPACE }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Install Docker
|
|
run: |
|
|
echo "Checking docker installation"
|
|
if command -v docker &> /dev/null; then
|
|
echo "Docker installation found"
|
|
else
|
|
echo "Docker installation not found. Docker will be installed"
|
|
curl -fsSL https://get.docker.com | sh
|
|
fi
|
|
- name: Install npm dependencies
|
|
run: |
|
|
echo "Installing fetch"
|
|
install_node=$false
|
|
if ! command -v node &> /dev/null; then
|
|
echo "No version of NodeJS detected"
|
|
install_node=true
|
|
else
|
|
node_version=$(node -v)
|
|
node_version=${node_version:1} # Remove 'v' at the beginning
|
|
node_version=${node_version%\.*} # Remove trailing ".*".
|
|
node_version=${node_version%\.*} # Remove trailing ".*".
|
|
node_version=$(($node_version)) # Convert the NodeJS version number from a string to an integer.
|
|
if [ $node_version -lt 24 ]; then
|
|
echo "node version : " $node_version
|
|
echo $"removing outdated npm version"
|
|
install_node=true
|
|
apt-get remove nodejs npm
|
|
apt-get purge nodejs
|
|
rm -rf /usr/local/bin/npm
|
|
rm -rf /usr/local/share/man/man1/node*
|
|
rm -rf /usr/local/lib/dtrace/node.d
|
|
rm -rf ~/.npm
|
|
rm -rf ~/.node-gyp
|
|
rm -rf /opt/local/bin/node
|
|
rm -rf opt/local/include/node
|
|
rm -rf /opt/local/lib/node_modules
|
|
rm -rf /usr/local/lib/node*
|
|
rm -rf /usr/local/include/node*
|
|
rm -rf /usr/local/bin/node*
|
|
fi
|
|
fi
|
|
|
|
if $install_node; then
|
|
NODE_MAJOR=24
|
|
echo "Installing node ${NODE_MAJOR}"
|
|
if test -f /etc/apt/keyrings/nodesource.gpg; then
|
|
rm /etc/apt/keyrings/nodesource.gpg
|
|
fi
|
|
if test -f /etc/apt/sources.list.d/nodesource.list; then
|
|
rm /etc/apt/sources.list.d/nodesource.list
|
|
fi
|
|
apt-get update
|
|
apt-get install -y -q ca-certificates curl gnupg
|
|
mkdir -p /etc/apt/keyrings
|
|
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
|
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_MAJOR}.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
|
|
apt-get update
|
|
apt-get install -y -q nodejs
|
|
npm install npm --global
|
|
fi
|
|
|
|
echo "node version : " $(node -v)
|
|
|
|
package='node-fetch'
|
|
if [ `npm list -g | grep -c $package` -eq 0 ]; then
|
|
npm install -g $package
|
|
fi
|
|
- name: Set up Docker Buildx
|
|
uses: https://github.com/docker/setup-buildx-action@v3
|
|
- name: Login to Gitea container registry
|
|
uses: https://github.com/docker/login-action@v3
|
|
with:
|
|
registry: git.claeyscloud.com
|
|
username: nologin
|
|
password: ${{ secrets.PACKAGE_TOKEN }}
|
|
- name: Login to DockerHub container registry
|
|
uses: https://github.com/docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
|
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
|
- name: Extract metadata (tags, labels) for Docker
|
|
id: meta
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
labels: |
|
|
org.opencontainers.image.title=epg-info
|
|
org.opencontainers.image.description=Docker image of https://github.com/iptv-org/epg
|
|
org.opencontainers.image.authors=Davidquinonescl
|
|
org.opencontainers.image.documentation=https://git.claeyscloud.com/david/epg-info-docker/src/branch/main/README.md
|
|
images: |
|
|
davidquinonescl/epg-info
|
|
git.claeyscloud.com/david/epg-info
|
|
tags: |
|
|
type=semver,pattern={{raw}}
|
|
type=sha
|
|
- name: Update docker Hub Description
|
|
uses: https://github.com/peter-evans/dockerhub-description@v5
|
|
with:
|
|
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
|
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
|
repository: davidquinonescl/epg-info
|
|
- name: Build and push
|
|
uses: https://github.com/docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
push: true
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|