Compare commits

...

45 commits

Author SHA1 Message Date
Pavel Zloi
238d20470e
Merge pull request #65 from EvilFreelancer/dependabot/docker/alpine-3.22.1
Bump alpine from 3.22.0 to 3.22.1
2025-07-27 22:39:31 +03:00
dependabot[bot]
1338176e9a
Bump alpine from 3.22.0 to 3.22.1
Bumps alpine from 3.22.0 to 3.22.1.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-21 07:01:15 +00:00
Pavel Zloi
fd17c53b8f
Merge pull request #64 from EvilFreelancer/dependabot/docker/alpine-3.22.0
Bump alpine from 3.21.3 to 3.22.0
2025-06-03 13:44:16 +03:00
dependabot[bot]
b264d35ad5
Bump alpine from 3.21.3 to 3.22.0
Bumps alpine from 3.21.3 to 3.22.0.

---
updated-dependencies:
- dependency-name: alpine
  dependency-version: 3.22.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 05:59:46 +00:00
Pavel Zloi
ceb354a293
Merge pull request #61 from jafarijason/for-pr
PR for proof of concept
2025-02-28 13:45:53 +03:00
Pavel Zloi
882706a1e7
Merge pull request #62 from EvilFreelancer/dependabot/docker/alpine-3.21.3
Bump alpine from 3.21.2 to 3.21.3
2025-02-18 14:23:36 +03:00
dependabot[bot]
f55bdcb19d
Bump alpine from 3.21.2 to 3.21.3
Bumps alpine from 3.21.2 to 3.21.3.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-17 05:26:47 +00:00
Jason Jafari
3ac118eaf9 Bring back docker repository 2025-02-03 19:40:19 -05:00
Jason Jafari
d2ee32092b WIP 2025-02-03 19:10:28 -05:00
Jason Jafari
6face9e8b5 Test 1 2025-02-03 18:49:25 -05:00
pasha
63c948b6e1 Small tunes of version in Dockerfile 2025-01-27 00:23:47 +03:00
pasha
89b36db462 Version added 2025-01-27 00:19:10 +03:00
pasha
4d98b6ff5d Legacy build logic removed 2025-01-27 00:16:33 +03:00
Pavel Zloi
15c30d792a
Merge pull request #57 from EvilFreelancer/update-routeros
Update RouterOS version to 7.17
2025-01-17 11:24:45 +03:00
Pavel Zloi
4ef7be67e4
Merge pull request #56 from EvilFreelancer/dependabot/docker/alpine-3.21.2
Bump alpine from 3.21.0 to 3.21.2
2025-01-17 11:24:32 +03:00
EvilFreelancer
482d657585 Update RouterOS version to 7.17 2025-01-17 04:22:34 +00:00
dependabot[bot]
43d16d6fd4
Bump alpine from 3.21.0 to 3.21.2
Bumps alpine from 3.21.0 to 3.21.2.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 05:29:58 +00:00
Pavel Zloi
cc5afaebf1
Merge pull request #53 from EvilFreelancer/dependabot/docker/alpine-3.21.0
Bump alpine from 3.20.3 to 3.21.0
2024-12-29 09:41:12 +03:00
Pavel Zloi
0c9f8ac998
Merge pull request #52 from EvilFreelancer/update-routeros
Update RouterOS version to 7.16.2
2024-12-29 09:41:03 +03:00
dependabot[bot]
8b2526f861
Bump alpine from 3.20.3 to 3.21.0
Bumps alpine from 3.20.3 to 3.21.0.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 05:44:07 +00:00
EvilFreelancer
82faeffceb Update RouterOS version to 7.16.2 2024-11-28 04:24:33 +00:00
Pavel Zloi
75603791e1
Merge pull request #50 from EvilFreelancer/update-routeros
Update RouterOS version to 7.16.1
2024-10-12 14:48:55 +03:00
EvilFreelancer
31c7aa7c39 Update RouterOS version to 7.16.1 2024-10-12 04:22:05 +00:00
Pavel Zloi
298fb5ddad
Update ci.yml 2024-09-25 10:49:53 +03:00
Pavel Zloi
5481323181
Update ci.yml 2024-09-25 10:46:29 +03:00
Pavel Zloi
32fcf4a0d7
Merge pull request #48 from EvilFreelancer/update-routeros
Update RouterOS version to 7.16
2024-09-25 10:02:56 +03:00
EvilFreelancer
0f3bc5fd40 Update RouterOS version to 7.16 2024-09-25 04:23:03 +00:00
Pavel Zloi
06ae0c5aea
Merge pull request #46 from EvilFreelancer/dependabot/docker/alpine-3.20.3
Bump alpine from 3.20.1 to 3.20.3
2024-09-09 12:35:06 +03:00
Pavel Zloi
6d11c0033d
Merge pull request #47 from EvilFreelancer/dependabot/github_actions/peter-evans/create-pull-request-7
Bump peter-evans/create-pull-request from 6 to 7
2024-09-09 12:34:47 +03:00
dependabot[bot]
8a8c9f87ce
Bump peter-evans/create-pull-request from 6 to 7
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 06:04:22 +00:00
dependabot[bot]
1d3260eea6
Bump alpine from 3.20.1 to 3.20.3
Bumps alpine from 3.20.1 to 3.20.3.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 06:03:08 +00:00
Pavel Zloi
5b32975011
Merge pull request #43 from EvilFreelancer/update-routeros
Update RouterOS version to 7.15.3
2024-07-26 11:28:50 +03:00
EvilFreelancer
9bc5b2ddaa Update RouterOS version to 7.15.3 2024-07-26 04:20:28 +00:00
Pavel Zloi
992a4be3fa
Merge pull request #42 from EvilFreelancer/update-routeros
Update RouterOS version to 7.15.2
2024-06-29 08:07:53 +03:00
EvilFreelancer
1585590ef9 Update RouterOS version to 7.15.2 2024-06-29 04:20:29 +00:00
Pavel Zloi
0ddeae539c
Merge pull request #41 from EvilFreelancer/dependabot/docker/alpine-3.20.1
Bump alpine from 3.19.1 to 3.20.1
2024-06-24 09:18:23 +03:00
Pavel Zloi
e8b906ef88
Merge pull request #40 from EvilFreelancer/dependabot/github_actions/docker/build-push-action-6
Bump docker/build-push-action from 5 to 6
2024-06-24 09:17:36 +03:00
dependabot[bot]
7c4b261834
Bump alpine from 3.19.1 to 3.20.1
Bumps alpine from 3.19.1 to 3.20.1.

---
updated-dependencies:
- dependency-name: alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 05:48:35 +00:00
dependabot[bot]
910158faec
Bump docker/build-push-action from 5 to 6
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-24 05:26:44 +00:00
Pavel Zloi
05934183a3
Merge pull request #37 from EvilFreelancer/update-routeros
Update RouterOS version to 7.15.1
2024-06-11 08:46:46 +03:00
EvilFreelancer
506fe6bf63 Update RouterOS version to 7.15.1 2024-06-11 04:20:27 +00:00
Pavel Zloi
e5ffee0c2f
Merge pull request #36 from EvilFreelancer/update-routeros
Update RouterOS version to 7.15
2024-05-31 10:54:26 +03:00
EvilFreelancer
f4bb2f1df3 Update RouterOS version to 7.15 2024-05-31 04:20:42 +00:00
Pavel Zloi
2ec192bca8
Merge pull request #34 from EvilFreelancer/update-routeros
Update RouterOS version to 7.14.3
2024-04-20 18:37:25 +03:00
EvilFreelancer
d6937ea5e5 Update RouterOS version to 7.14.3 2024-04-20 04:19:22 +00:00
10 changed files with 89 additions and 188 deletions

2
.github/FUNDING.yml vendored
View file

@ -1,3 +1,3 @@
# These are supported funding model platforms
custom: [https://pay.cloudtips.ru/p/937f48ac, https://boosty.to/evilfreelancer]
custom: [https://pay.cloudtips.ru/p/937f48ac, https://boosty.to/evilfreelancer]

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,linux/arm64,linux/arm/v7 \
--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@v5
with:
context: .
push: ${{ !env.ACT }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View file

@ -1,47 +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
if: env.ACT
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.4/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@v6
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 }}

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
/.idea/
/*.vdi
/docker-compose.yml
build.txt

View file

@ -1,4 +1,4 @@
FROM alpine:3.19.1
FROM alpine:3.22.1
# For access via VNC
EXPOSE 5900
@ -9,6 +9,8 @@ EXPOSE 1194 1701 1723 1812/udp 1813/udp 21 22 23 443 4500/udp 50 500/udp 51 2021
# Change work dir (it will also create this folder if is not exist)
WORKDIR /routeros
RUN mkdir -p /routeros_source
# Install dependencies
RUN set -xe \
&& apk add --no-cache --update \
@ -17,16 +19,17 @@ RUN set -xe \
bridge-utils iptables jq bash python3
# Environments which may be change
ENV ROUTEROS_VERSION="7.14.2"
ARG ROUTEROS_VERSION
ENV ROUTEROS_VERSION=${ROUTEROS_VERSION}
ENV ROUTEROS_IMAGE="chr-${ROUTEROS_VERSION}.vdi"
ENV ROUTEROS_PATH="https://cdn.mikrotik.com/routeros/${ROUTEROS_VERSION}/${ROUTEROS_IMAGE}.zip"
# Download VDI image from remote site
RUN wget "$ROUTEROS_PATH" -O "/routeros/${ROUTEROS_IMAGE}.zip" && \
unzip "/routeros/${ROUTEROS_IMAGE}.zip" -d "/routeros" && \
rm -f "/routeros/${ROUTEROS_IMAGE}.zip"
RUN wget "$ROUTEROS_PATH" -O "/routeros_source/${ROUTEROS_IMAGE}.zip" && \
unzip "/routeros_source/${ROUTEROS_IMAGE}.zip" -d "/routeros_source" && \
rm -f "/routeros_source/${ROUTEROS_IMAGE}.zip"
# Copy script to routeros folder
ADD ["./scripts", "/routeros"]
ADD ["./scripts", "/routeros_source"]
ENTRYPOINT ["/routeros/entrypoint.sh"]
ENTRYPOINT ["/routeros_source/entrypoint.sh"]

View file

@ -1,5 +1,13 @@
#!/usr/bin/env bash
if [[ ! -e "/routeros/generate-dhcpd-conf.py" ]]; then
cp -r /routeros_source/. /routeros
fi
cd /routeros
QEMU_BRIDGE_ETH1='qemubr1'
default_dev1='eth0'