|
@@ -18,16 +18,13 @@ on:
|
|
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
|
jobs:
|
|
|
# This workflow contains a single job called "build"
|
|
|
- build:
|
|
|
+ build-amd64:
|
|
|
# The type of runner that the job will run on
|
|
|
runs-on: ubuntu-latest
|
|
|
-
|
|
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
|
|
steps:
|
|
|
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
|
- uses: actions/checkout@v3
|
|
|
-
|
|
|
- # Runs a set of commands using the runners shell
|
|
|
- name: get latest url
|
|
|
run: |
|
|
|
BASE_URL="https://www.softether-download.com"
|
|
@@ -39,42 +36,89 @@ jobs:
|
|
|
echo -e "\nURL for $FOLDER_STRING: "
|
|
|
echo "$BASE_URL/$LATEST" | tee latest_url-$FOLDER_STRING.txt
|
|
|
done
|
|
|
- - name: build container
|
|
|
+ - name: build image - AMD64
|
|
|
+ env:
|
|
|
+ ARCH: AMD64
|
|
|
+ run: |
|
|
|
+ LATEST_URL=$( cat latest_url-*$ARCH*.txt )
|
|
|
+ echo "Latest URL: $LATEST_URL"
|
|
|
+ [ -z "$LATEST_URL" ] && { echo "Latest url not found"; exit 1; }
|
|
|
+ curl -L -o files/softether.tar.gz "$LATEST_URL"
|
|
|
+ ls -hal files/softether.tar.gz
|
|
|
+ SOFTETHER_VERSION=$( basename $LATEST_URL | sed "s@softether-vpnserver-@@g" | cut -f1-3 -d'-' )
|
|
|
+ echo "Softether version: $SOFTETHER_VERSION"
|
|
|
+ [ -z "$SOFTETHER_VERSION" ] && { echo "Softether version not defined"; exit 1; }
|
|
|
+ echo -e "\n\nDockerfile:\n$( cat Dockerfile )\n\n"
|
|
|
+
|
|
|
+ docker build --rm -t croc/softether -f Dockerfile . || { echo "Docker image build fail"; exit 1; }
|
|
|
+ docker tag croc/softether croc/softether:$SOFTETHER_VERSION
|
|
|
+ - name: push container
|
|
|
+ env:
|
|
|
+ DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
|
|
+ DOCKERHUB_PASS: ${{ secrets.DOCKERHUB_PASS }}
|
|
|
+ run: |
|
|
|
+ docker images
|
|
|
+ echo "$DOCKERHUB_PASS" | docker login --username=$DOCKERHUB_USER --password-stdin
|
|
|
+ docker images | grep -i softether
|
|
|
+ # push latest images
|
|
|
+ docker push croc/softether || { echo "latest image push error"; exit 1; }
|
|
|
+ # push version
|
|
|
+ VERSION=$( docker images | grep -i croc/softether | awk '{ print $2 }' | grep -i '^v' | sort | uniq )
|
|
|
+ echo "Image version: $VERSION"
|
|
|
+ docker push croc/softether:$VERSION || { echo "version ($VERSION) image push error"; exit 1; }
|
|
|
+ build-arm64:
|
|
|
+ # The type of runner that the job will run on
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ # Steps represent a sequence of tasks that will be executed as part of the job
|
|
|
+ steps:
|
|
|
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
|
|
|
+ - uses: actions/checkout@v3
|
|
|
+ - name: get latest url
|
|
|
run: |
|
|
|
- for ARCH in "AMD64" "ARM"
|
|
|
+ BASE_URL="https://www.softether-download.com"
|
|
|
+ LATEST_FOLDER=$( curl -s $BASE_URL/files/softether/ | tr ';' '\n' | grep -i href | awk -F'"' '{ print $2 }' | sort -n | tail -n1 )
|
|
|
+ echo "Latest folder is $LATEST_FOLDER"
|
|
|
+ for FOLDER_STRING in "Intel_x64_or_AMD64" "ARM_64bit"
|
|
|
do
|
|
|
- echo "Creating container for $ARCH ..."
|
|
|
- cp -f Dockerfile Dockerfile-$ARCH
|
|
|
- LATEST_URL=$( cat latest_url-*$ARCH*.txt )
|
|
|
- echo "Latest URL: $LATEST_URL"
|
|
|
- [ -z "$LATEST_URL" ] && { echo "Latest url not found"; exit 1; }
|
|
|
- curl -L -o files/softether.tar.gz "$LATEST_URL"
|
|
|
- ls -hal files/softether.tar.gz
|
|
|
- SOFTETHER_VERSION=$( basename $LATEST_URL | sed "s@softether-vpnserver-@@g" | cut -f1-3 -d'-' )
|
|
|
- echo "Softether version: $SOFTETHER_VERSION"
|
|
|
- [ -z "$SOFTETHER_VERSION" ] && { echo "Softether version not defined"; exit 1; }
|
|
|
- echo -e "\n\nDockerfile:\n$( cat Dockerfile-$ARCH )\n\n"
|
|
|
- case $ARCH in
|
|
|
- "ARM" )
|
|
|
- echo " Using docker buildx method ..."
|
|
|
- docker buildx build --rm --platform linux/arm64 -t croc/softether-arm64 -f Dockerfile-$ARCH .
|
|
|
- docker tag croc/softether croc/softether-arm64:$SOFTETHER_VERSION
|
|
|
- ;;
|
|
|
- * )
|
|
|
- echo " Using normal docker build method ..."
|
|
|
- docker build -t croc/softether -f Dockerfile-$ARCH .
|
|
|
- docker tag croc/softether croc/softether:$SOFTETHER_VERSION
|
|
|
- ;;
|
|
|
- esac
|
|
|
- docker images | grep -i softether
|
|
|
+ LATEST=$( curl -s "$BASE_URL/$LATEST_FOLDER/Linux/SoftEther_VPN_Server/64bit_-_$FOLDER_STRING/" | tr '<' '\n' | grep -i href | grep -i tar.gz | awk -F '"' '{ print $2 }' )
|
|
|
+ echo -e "\nURL for $FOLDER_STRING: "
|
|
|
+ echo "$BASE_URL/$LATEST" | tee latest_url-$FOLDER_STRING.txt
|
|
|
done
|
|
|
+ # buildx with quemu
|
|
|
+ - name: qemu setup for buildx for arm build
|
|
|
+ uses: docker/setup-qemu-action@v2
|
|
|
+ - name: setup buildx for arm build
|
|
|
+ id: buildx
|
|
|
+ uses: docker/setup-buildx-action@v2
|
|
|
+ - name: build image - ARM 64bit
|
|
|
+ env:
|
|
|
+ ARCH: ARM
|
|
|
+ run: |
|
|
|
+ echo "Buildx supported platforms: ${{ steps.buildx.outputs.platforms }}"
|
|
|
+
|
|
|
+ LATEST_URL=$( cat latest_url-*$ARCH*.txt )
|
|
|
+ echo "Latest URL: $LATEST_URL"
|
|
|
+ [ -z "$LATEST_URL" ] && { echo "Latest url not found"; exit 1; }
|
|
|
+ curl -L -o files/softether.tar.gz "$LATEST_URL"
|
|
|
+ ls -hal files/softether.tar.gz
|
|
|
+ SOFTETHER_VERSION=$( basename $LATEST_URL | sed "s@softether-vpnserver-@@g" | cut -f1-3 -d'-' )
|
|
|
+ echo "Softether version: $SOFTETHER_VERSION"
|
|
|
+ [ -z "$SOFTETHER_VERSION" ] && { echo "Softether version not defined"; exit 1; }
|
|
|
+ echo -e "\n\nDockerfile:\n$( cat Dockerfile )\n\n"
|
|
|
+
|
|
|
+ docker build --rm --platform linux/arm64 -t croc/softether-arm64 -f Dockerfile . || { echo "Docker image build fail - ARM64"; exit 1; }
|
|
|
+ docker tag croc/softether-arm64 croc/softether-arm64:$SOFTETHER_VERSION
|
|
|
- name: push container
|
|
|
env:
|
|
|
DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
|
|
|
DOCKERHUB_PASS: ${{ secrets.DOCKERHUB_PASS }}
|
|
|
run: |
|
|
|
docker images
|
|
|
- echo $DOCKERHUB_USER | base64 -w0 -i
|
|
|
- echo $DOCKERHUB_PASS | base64 -w0 -i
|
|
|
echo "$DOCKERHUB_PASS" | docker login --username=$DOCKERHUB_USER --password-stdin
|
|
|
- docker push croc/onedrive
|
|
|
+ docker images | grep -i softether
|
|
|
+ # push latest images
|
|
|
+ docker push croc/softether-arm64 || { echo "latest image push error - arm64"; exit 1; }
|
|
|
+ # push version
|
|
|
+ VERSION=$( docker images | grep -i croc/softether | awk '{ print $2 }' | grep -i '^v' | sort | uniq )
|
|
|
+ echo "Image version: $VERSION"
|
|
|
+ docker push croc/softether-arm64:$VERSION || { echo "version ($VERSION) image push error - arm64"; exit 1; }
|