| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- # This is a basic workflow to help you get started with Actions
- name: Auto-CI
- # Controls when the workflow will run
- on:
- # Triggers the workflow on push or pull request events but only for the "master" branch
- push:
- branches:
- pull_request:
- branches: [ "master" ]
- schedule:
- - cron: '00 5 * * 6' # every Sunday at 5:00
- # Allows you to run this workflow manually from the Actions tab
- workflow_dispatch:
- # 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-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
- - name: get latest url
- run: |
- 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
- 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
- - 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" || { echo "Softether download error"; exit 1; }
- 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 . || { 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: |
- 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
- 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" || { echo "Softether download error"; exit 1; }
- 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 . || { 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_PASS" | docker login --username=$DOCKERHUB_USER --password-stdin
- 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; }
|