Legacy build logic removed

This commit is contained in:
pasha 2025-01-27 00:16:33 +03:00
parent 15c30d792a
commit 4d98b6ff5d
6 changed files with 69 additions and 179 deletions

69
.github/workflows/build-and-push.yml vendored Normal file
View file

@ -0,0 +1,69 @@
name: Check for new RouterOS versions, build and push containers
on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *' # Every day at midnight
jobs:
check-and-build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
run: sudo apt-get install -y curl jq
- name: Get latest RouterOS version
id: get_routeros_version
run: |
VERSION=$(
curl https://mikrotik.com/download/archive -o - 2>/dev/null | \
grep -o '<a href=['"'"'"][^"'"'"']*['"'"'"]' | \
sed -e 's/^<a href=["'"'"']//' -e 's/["'"'"']$//' | \
grep -i c-stable | \
sed -r 's/\#c-stable-v//gi' | \
sed -r 's/_/\./gi' | \
sort -V | \
tail -n 1
)
echo "Latest RouterOS version: $VERSION"
echo "version=$VERSION" >> $GITHUB_OUTPUT
- name: Get Docker Hub tags
id: docker_hub_tags
run: |
OWNER="evilfreelancer"
REPO="docker-routeros"
URL="https://registry.hub.docker.com/v2/repositories/${OWNER}/${REPO}/tags/"
TAGS=$(curl -s "$URL" | jq -r '.results[].name' | grep -v "latest")
echo "tags=$(echo $TAGS | tr '\n' ' ')" >> $GITHUB_OUTPUT
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and test if new version
if: ${{ !contains(steps.docker_hub_tags.outputs.tags, steps.get_routeros_version.outputs.version) }}
run: |
VERSION="${{ steps.get_routeros_version.outputs.version }}"
OWNER="evilfreelancer"
REPO="docker-routeros"
# Set up Docker Buildx
docker buildx create --use --name routeros_builder
# Build and push images
docker buildx build --push \
--platform linux/amd64 \
--tag $OWNER/$REPO:$VERSION \
--tag $OWNER/$REPO:latest \
--build-arg ROUTEROS_VERSION=$VERSION .
- name: Skip build
if: ${{ contains(steps.docker_hub_tags.outputs.tags, steps.get_routeros_version.outputs.version) }}
run: echo "Version ${{ steps.get_routeros_version.outputs.version }} already exists. Skipping build."

View file

@ -1,34 +0,0 @@
name: "Build docker image and push to DockerHub when a tag is pushed"
on:
workflow_dispatch:
push:
tags:
- '*'
jobs:
build:
name: "Build images"
runs-on: "ubuntu-latest"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Docker metadata from Git
id: meta
uses: docker/metadata-action@v5
with:
images: evilfreelancer/docker-routeros
- name: Login to DockerHub
if: ${{ !env.ACT }}
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build with Docker
uses: docker/build-push-action@v6
with:
context: .
push: ${{ !env.ACT }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View file

@ -1,46 +0,0 @@
name: "Continuous Integration Tests"
on:
push:
pull_request:
workflow_dispatch:
workflow_call:
jobs:
test:
name: "Build & Test images"
runs-on: "ubuntu-latest"
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download docker-compose when using act
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/v2.29.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- name: Test with Docker
run: |
# start the container
docker-compose -f docker-compose.dist.yml up --build -d routeros-local
# wait for the container to start
sleep 5
DOCKERID=$(docker ps --format '{{.ID}}.{{.Names}}.{{.Image}}'|grep evilfreelancer/docker-routeros|cut -f 1 -d '.')
echo "Watching $DOCKERID for Mikrotik login..."
while true
do
if docker logs "$DOCKERID" 2>&1|grep 'MikroTik'
then
break
fi
echo "Not found yet, sleeping..."
sleep 5
done
# display logs
echo "Container logs:"
docker logs "$DOCKERID"
# download resource and check platform is Mikrotik
curl --retry 12 --retry-all-errors -k -u admin: http://127.0.0.1:7777/rest/system/resource | jq .platform |grep -i mikrotik
- name: Stop container
run: docker-compose -f docker-compose.dist.yml down

View file

@ -1,14 +0,0 @@
name: Lint github-action
on: [ 'pull_request' ]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Lint
uses: docker://rhysd/actionlint:1.6.26
with:
args: -color

View file

@ -1,47 +0,0 @@
name: "Check for update on Mikrotik website and generate a PR if necessary"
on:
workflow_dispatch:
schedule:
- cron: "0 4 * * *"
jobs:
routeros:
name: "Build & Test images"
runs-on: "ubuntu-latest"
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: '1'
- name: Check new release
id: check_release
run: |
LAST_MIKROTIK_RELEASE=$( curl https://mikrotik.com/download/archive -o - 2>/dev/null | grep -o '<a href=['"'"'"][^"'"'"']*['"'"'"]' | sed -e 's/^<a href=["'"'"']//' -e 's/["'"'"']$//' | grep -i c-stable | sed -r 's/\#c-stable-v//gi'|sed -r 's/_/\./gi'|sort -V|tail -n 1)
NEW_TAG=$(grep "ROUTEROS_VERSION=\"" Dockerfile |cut -d "\"" -f 2)
if [ "$LAST_MIKROTIK_RELEASE" != "$NEW_TAG" ]; then
echo "New version found: $LAST_MIKROTIK_RELEASE"
echo "Current version: $NEW_TAG"
echo "release=$LAST_MIKROTIK_RELEASE" > "$GITHUB_OUTPUT"
echo "new=true" >> "$GITHUB_OUTPUT"
else
echo "No new version found"
echo "new=false" >> "$GITHUB_OUTPUT"
fi
- name: Edit Dockerfile
if: ${{ steps.check_release.outputs.new == 'true' }}
run: |
sed -r "s/(ROUTEROS_VERSION=\")(.*)(\")/\1${{ steps.check_release.outputs.release }}\3/g" -i Dockerfile
git diff
- name: Create Pull Request
if: ${{ steps.check_release.outputs.new == 'true' && !env.ACT }}
uses: peter-evans/create-pull-request@v7
with:
commit-message: "Update RouterOS version to ${{ steps.check_release.outputs.release }}"
committer: "GitHub Actions<github-actions@users.noreply.github.com>"
body: 'Created by Github action'
title: 'Update RouterOS version to ${{ steps.check_release.outputs.release }}'
branch: update-routeros

View file

@ -1,38 +0,0 @@
name: "Tag master with new version of RouterOS when CI pass"
on:
push:
branches:
- "master"
permissions:
contents: write
pull-requests: read
jobs:
call_test:
uses: EvilFreelancer/docker-routeros/.github/workflows/ci.yml@master
tag:
name: "Add a tag to git"
runs-on: "ubuntu-latest"
needs: call_test
if: always() && needs.call_test.result == 'success'
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: '0'
- name: Add new tag on git
id: tag
run: |
NEW_TAG=$(grep 'ROUTEROS_VERSION="' Dockerfile |cut -d '"' -f 2)
git config user.name 'GitHub Actions'
git config user.email 'github-actions@users.noreply.github.com'
git tag "$NEW_TAG"
echo "new_tag=$NEW_TAG" >> "$GITHUB_OUTPUT"
- name: Push new tag to git
if: ${{ !env.ACT }}
run: git push origin ${{ steps.tag.outputs.new_tag }}