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 }}