main.yml 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # This is a basic workflow to help you get started with Actions
  2. name: Auto-CI
  3. # Controls when the workflow will run
  4. on:
  5. # Triggers the workflow on push or pull request events but only for the "master" branch
  6. push:
  7. branches: [ "master" ]
  8. pull_request:
  9. branches: [ "master" ]
  10. # schedule:
  11. # - cron: '00 5 * * 6' # every Sunday at 5:00
  12. # Allows you to run this workflow manually from the Actions tab
  13. workflow_dispatch:
  14. # A workflow run is made up of one or more jobs that can run sequentially or in parallel
  15. jobs:
  16. # This workflow contains a single job called "build"
  17. build:
  18. # The type of runner that the job will run on
  19. runs-on: ubuntu-latest
  20. # Steps represent a sequence of tasks that will be executed as part of the job
  21. steps:
  22. # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
  23. - uses: actions/checkout@v3
  24. # Runs a set of commands using the runners shell
  25. - name: get latest url
  26. run: |
  27. BASE_URL="https://www.softether-download.com"
  28. LATEST_FOLDER=$( curl -s $BASE_URL/files/softether/ | tr ';' '\n' | grep -i href | awk -F'"' '{ print $2 }' | sort -n | tail -n1 )
  29. echo "Latest folder is $LATEST_FOLDER"
  30. for FOLDER_STRING in "Intel_x64_or_AMD64" "ARM_64bit"
  31. do
  32. 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 }' )
  33. echo -e "\nURL for $FOLDER_STRING: "
  34. echo "$BASE_URL/$LATEST" | tee latest_url-$FOLDER_STRING.txt
  35. done
  36. - name: build container
  37. run: |
  38. for ARCH in AMD64 ARM; do
  39. echo "Creating container for $ARCH ..."
  40. cp -f Dockerfile Dockerfile-$ARCH
  41. cat latest_url-*$ARCH*.txt
  42. LATEST_URL=$( cat latest_url-*$ARCH*.txt )
  43. echo "Latest URL: $LATEST_URL"
  44. [ -z "$LATEST_URL" ] && { echo "Latest url not found"; exit 1; }
  45. sed -i "s@ENV.*DOWNLOAD_URL.*@ENV DOWNLOAD_URL $LATEST_URL@g" Dockerfile-$ARCH
  46. VERSION_DOWNLOAD_URL=$( grep DOWNLOAD_URL Dockerfile-$ARCH | awk '{ print $3 }' )
  47. SOFTETHER_VERSION=$( basename $VERSION_DOWNLOAD_URL | sed "s@softether-vpnserver-@@g" | cut -f1-3 -d'-' )
  48. echo "Softether version: $SOFTETHER_VERSION"
  49. [ -z "$SOFTETHER_VERSION" ] && { echo "Softether version not defined"; exit 1; }
  50. echo -e "\n\nDockerfile:\n$( cat Dockerfile-$ARCH )\n\n"
  51. case $ARCH in
  52. "ARM" )
  53. echo " Using docker buildx method ..."
  54. docker buildx build --rm --platform linux/arm64 -t croc/softether-arm64 -f Dockerfile-$ARCH .
  55. docker tag croc/softether croc/softether-arm64:$SOFTETHER_VERSION
  56. ;;
  57. * )
  58. echo " Using normal docker build method ..."
  59. docker build -t croc/softether -f Dockerfile-$ARCH .
  60. docker tag croc/softether croc/softether:$SOFTETHER_VERSION
  61. ;;
  62. esac
  63. docker images | grep -i softether
  64. done
  65. # - name: push container
  66. # env:
  67. # DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
  68. # DOCKERHUB_PASS: ${{ secrets.DOCKERHUB_PASS }}
  69. # run: |
  70. # docker images
  71. # echo $DOCKERHUB_USER | base64 -w0 -i
  72. # echo $DOCKERHUB_PASS | base64 -w0 -i
  73. # echo "$DOCKERHUB_PASS" | docker login --username=$DOCKERHUB_USER --password-stdin
  74. # docker push croc/onedrive