Explorar el Código

Merge pull request #1020 from netbootxyz/rolling

Adds rolling release deploy
Antony Messerli hace 3 años
padre
commit
f6044813de
Se han modificado 2 ficheros con 100 adiciones y 25 borrados
  1. 68 0
      .github/workflows/rolling.yml
  2. 32 25
      script/build_release

+ 68 - 0
.github/workflows/rolling.yml

@@ -0,0 +1,68 @@
+name: rolling
+
+on:
+  push:
+    paths:
+      - 'endpoints.yml'
+      - 'roles/netbootxyz/defaults/main.yml'
+    branches:
+      - development
+
+env:
+  DISCORD_HOOK_URL: ${{ secrets.DISCORD_HOOK_URL }}
+  GITHUB_SHA: ${{ github.sha }}
+
+jobs:
+  rolling:
+    name: Build Release
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v2
+      with:
+        ref: 'master'
+
+    - name: Retrieve Certs
+      run: |
+        ./script/retrieve_certs
+      env:
+        GIT_USER: ${{ secrets.GIT_USER }}
+        GIT_AUTH: ${{ secrets.GIT_AUTH }}
+        GIT_URL: ${{ secrets.GIT_URL }}
+        CERTS_KEY: ${{ secrets.CERTS_KEY }}
+
+    - name: Set Release Tag
+      run: echo "release_tag=$(cat version.txt)" >> $GITHUB_ENV
+
+    - name: Download endpoints.yml and main.yml from Development
+      run: |
+        wget https://raw.githubusercontent.com/netbootxyz/netboot.xyz/development/endpoints.yml -O endpoints.yml
+        wget https://raw.githubusercontent.com/netbootxyz/netboot.xyz/development/roles/netbootxyz/defaults/main.yml -O roles/netbootxyz/defaults/main.yml
+
+    - name: Build release
+      run: |
+        ./script/build_release rolling
+
+    - name: Configure AWS credentials
+      uses: aws-actions/configure-aws-credentials@v1
+      with:
+        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
+        aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
+        aws-region: ${{ secrets.AWS_ACCESS_REGION }}
+
+    - name: Deploy master to rolling bucket
+      run: |
+        aws s3 sync --no-progress --acl public-read s3out-latest s3://${{ secrets.AWS_S3_BUCKET_PROD }}
+
+    - name: Invalidate Cloudfront
+      run: |
+        aws cloudfront create-invalidation --distribution-id ${{ secrets.CLOUDFRONT_DIST_ID_PROD }} --paths "/*" "/ipxe/*"
+
+    - name: Notify Discord on failure
+      if: failure()
+      run: |
+        ./script/message failure
+
+    - name: Notify Discord on completion
+      if: success()
+      run: |
+        ./script/message live-push

+ 32 - 25
script/build_release

@@ -23,38 +23,45 @@ elif [[ "${TYPE}" == "rc" ]]; then
 elif [[ "${TYPE}" == "release" ]]; then
   BOOT_VERSION=$(cat version.txt)
   BOOT_DOMAIN="${PROD_URL}/${BOOT_VERSION}"
+elif [[ "${TYPE}" == "rolling" ]]; then
+  HARD_RELEASE="2.x"
+  PROD_URL="boot.netboot.xyz"
 fi
-sed -i \
-  "/^#boot_version/c\boot_version: \"${BOOT_VERSION}\"" \
-  user_overrides.yml
-sed -i \
-  "/^#boot_domain/c\boot_domain: ${BOOT_DOMAIN}" \
-  user_overrides.yml
 
-# Build release
-docker build -t localbuild -f ${DOCKER_FILE} .
-docker run --rm -i -v $(pwd):/buildout localbuild
+# build release files 
+if ! [[ "${TYPE}" == "rolling" ]]; then
+  sed -i \
+    "/^#boot_version/c\boot_version: \"${BOOT_VERSION}\"" \
+    user_overrides.yml
+  sed -i \
+    "/^#boot_domain/c\boot_domain: ${BOOT_DOMAIN}" \
+    user_overrides.yml
 
-# Generate folder outputs
-mkdir -p s3out
-mkdir -p s3outver
-cp -r buildout/* s3out/
-cp buildout/version.ipxe s3outver/
-mkdir -p githubout
-mv buildout/ipxe/* githubout/
-cd buildout
-rm -Rf ipxe
-tar -czf menus.tar.gz *
-mv menus.tar.gz ../githubout
-cd ..
-if [[ "${TYPE}" == "dev" ]]; then
-  cp githubout/menus.tar.gz s3out/
+  # Build release
+  docker build -t localbuild -f ${DOCKER_FILE} .
+  docker run --rm -i -v $(pwd):/buildout localbuild
+
+  # Generate folder outputs
+  mkdir -p s3out
+  mkdir -p s3outver
+  cp -r buildout/* s3out/
+  cp buildout/version.ipxe s3outver/
+  mkdir -p githubout
+  mv buildout/ipxe/* githubout/
+  cd buildout
+  rm -Rf ipxe
+  tar -czf menus.tar.gz *
+  mv menus.tar.gz ../githubout
+  cd ..
+  if [[ "${TYPE}" == "dev" ]]; then
+    cp githubout/menus.tar.gz s3out/
+  fi
 fi
 
 # Latest style endpoints for RC and Live
-if [[ "${TYPE}" == "release" ]] || [[ "${TYPE}" == "rc" ]]; then
+if [[ "${TYPE}" == "release" ]] || [[ "${TYPE}" == "rolling" ]] || [[ "${TYPE}" == "rc" ]]; then
   rm -Rf buildout/
-  if [[ "${TYPE}" == "release" ]]; then
+  if [[ "${TYPE}" == "release" ]] || [[ "${TYPE}" == "rolling" ]]; then
     sed -i \
       -e "/^boot_version/c\boot_version: \"${HARD_RELEASE}\"" \
       -e "/^boot_domain/c\boot_domain: ${PROD_URL}" \