main.yml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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:
  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-amd64:
  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. - name: get latest url
  25. run: |
  26. BASE_URL="https://www.softether-download.com"
  27. LATEST_FOLDER=$( curl -s $BASE_URL/files/softether/ | tr ';' '\n' | grep -i href | awk -F'"' '{ print $2 }' | sort -n | tail -n1 )
  28. echo "Latest folder is $LATEST_FOLDER"
  29. for FOLDER_STRING in "Intel_x64_or_AMD64" "ARM_64bit"
  30. do
  31. 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 }' )
  32. echo -e "\nURL for $FOLDER_STRING: "
  33. echo "$BASE_URL/$LATEST" | tee latest_url-$FOLDER_STRING.txt
  34. done
  35. - name: build image - AMD64
  36. env:
  37. ARCH: AMD64
  38. run: |
  39. LATEST_URL=$( cat latest_url-*$ARCH*.txt )
  40. echo "Latest URL: $LATEST_URL"
  41. [ -z "$LATEST_URL" ] && { echo "Latest url not found"; exit 1; }
  42. curl -L -o files/softether.tar.gz "$LATEST_URL" || { echo "Softether download error"; exit 1; }
  43. ls -hal files/softether.tar.gz
  44. SOFTETHER_VERSION=$( basename $LATEST_URL | sed "s@softether-vpnserver-@@g" | cut -f1-3 -d'-' )
  45. echo "Softether version: $SOFTETHER_VERSION"
  46. [ -z "$SOFTETHER_VERSION" ] && { echo "Softether version not defined"; exit 1; }
  47. echo -e "\n\nDockerfile:\n$( cat Dockerfile )\n\n"
  48. docker build --rm -t croc/softether . || { echo "Docker image build fail"; exit 1; }
  49. docker tag croc/softether croc/softether:$SOFTETHER_VERSION
  50. - name: push container
  51. env:
  52. DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
  53. DOCKERHUB_PASS: ${{ secrets.DOCKERHUB_PASS }}
  54. run: |
  55. docker images
  56. echo "$DOCKERHUB_PASS" | docker login --username=$DOCKERHUB_USER --password-stdin
  57. docker images | grep -i softether
  58. # push latest images
  59. docker push croc/softether || { echo "latest image push error"; exit 1; }
  60. # push version
  61. VERSION=$( docker images | grep -i croc/softether | awk '{ print $2 }' | grep -i '^v' | sort | uniq )
  62. echo "Image version: $VERSION"
  63. docker push croc/softether:$VERSION || { echo "version ($VERSION) image push error"; exit 1; }
  64. build-arm64:
  65. # The type of runner that the job will run on
  66. runs-on: ubuntu-latest
  67. # Steps represent a sequence of tasks that will be executed as part of the job
  68. steps:
  69. # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
  70. - uses: actions/checkout@v3
  71. - name: get latest url
  72. run: |
  73. BASE_URL="https://www.softether-download.com"
  74. LATEST_FOLDER=$( curl -s $BASE_URL/files/softether/ | tr ';' '\n' | grep -i href | awk -F'"' '{ print $2 }' | sort -n | tail -n1 )
  75. echo "Latest folder is $LATEST_FOLDER"
  76. for FOLDER_STRING in "Intel_x64_or_AMD64" "ARM_64bit"
  77. do
  78. 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 }' )
  79. echo -e "\nURL for $FOLDER_STRING: "
  80. echo "$BASE_URL/$LATEST" | tee latest_url-$FOLDER_STRING.txt
  81. done
  82. - name: build image - ARM 64bit
  83. env:
  84. ARCH: ARM
  85. run: |
  86. LATEST_URL=$( cat latest_url-*$ARCH*.txt )
  87. echo "Latest URL: $LATEST_URL"
  88. [ -z "$LATEST_URL" ] && { echo "Latest url not found"; exit 1; }
  89. curl -L -o files/softether.tar.gz "$LATEST_URL" || { echo "Softether download error"; exit 1; }
  90. ls -hal files/softether.tar.gz
  91. SOFTETHER_VERSION=$( basename $LATEST_URL | sed "s@softether-vpnserver-@@g" | cut -f1-3 -d'-' )
  92. echo "Softether version: $SOFTETHER_VERSION"
  93. [ -z "$SOFTETHER_VERSION" ] && { echo "Softether version not defined"; exit 1; }
  94. echo -e "\n\nDockerfile:\n$( cat Dockerfile )\n\n"
  95. docker run --rm --privileged multiarch/qemu-user-static --reset -p yes || { echo "Multiarch setup error"; exit 1; }
  96. ls $PWD
  97. docker run -ti --rm -v $PWD:/workspace gcr.io/kaniko-project/executor --context /workspace --customPlatform linux/arm64/v8 --no-push
  98. docker images
  99. - name: push container
  100. env:
  101. DOCKERHUB_USER: ${{ secrets.DOCKERHUB_USER }}
  102. DOCKERHUB_PASS: ${{ secrets.DOCKERHUB_PASS }}
  103. run: |
  104. docker images
  105. echo "$DOCKERHUB_PASS" | docker login --username=$DOCKERHUB_USER --password-stdin
  106. docker images | grep -i softether
  107. # push latest images
  108. docker push croc/softether-arm64 || { echo "latest image push error - arm64"; exit 1; }
  109. # push version
  110. VERSION=$( docker images | grep -i croc/softether | awk '{ print $2 }' | grep -i '^v' | sort | uniq )
  111. echo "Image version: $VERSION"
  112. docker push croc/softether-arm64:$VERSION || { echo "version ($VERSION) image push error - arm64"; exit 1; }