parent
							
								
									c6e28024fe
								
							
						
					
					
						commit
						89c22dbe7a
					
				| @ -0,0 +1,33 @@ | ||||
| name: CI | ||||
| on: [push] | ||||
| jobs: | ||||
| 
 | ||||
|   build: | ||||
|     name: Build | ||||
|     runs-on: macos-latest | ||||
|     strategy: | ||||
|       matrix: | ||||
|         goVer: [1.13, 1.14] | ||||
| 
 | ||||
|     steps: | ||||
|     - name: Set up Go ${{ matrix.goVer }} | ||||
|       uses: actions/setup-go@v1 | ||||
|       with: | ||||
|         go-version: ${{ matrix.goVer }} | ||||
|       id: go | ||||
| 
 | ||||
|     - name: Check out code into the Go module directory | ||||
|       uses: actions/checkout@v2 | ||||
| 
 | ||||
|     - name: Get dependencies | ||||
|       run: | | ||||
|         go get -v -t -d ./... | ||||
|         go get gopkg.in/check.v1 | ||||
|     - name: Build | ||||
|       run: go build -v . | ||||
| 
 | ||||
|     - name: Format | ||||
|       run: diff -u <(echo -n) <(gofmt -d .) | ||||
| 
 | ||||
|     - name: Test | ||||
|       run: go test -v ./... | ||||
| @ -1,39 +1,147 @@ | ||||
| on: release | ||||
| name: Build Release | ||||
| name: Build Hack-Browser-Data Release | ||||
| on: | ||||
|     release: | ||||
|         types: [created] | ||||
| 
 | ||||
| jobs: | ||||
|   release-darwin-amd64: | ||||
|     name: release darwin/amd64 | ||||
|     runs-on: macos-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@master | ||||
|     - name: compile and release | ||||
|       uses: ngs/go-release.action@v1.0.1 | ||||
|       env: | ||||
|         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|         GOARCH: amd64 | ||||
|         GOOS: darwin | ||||
|         EXTRA_FILES: "LICENSE" | ||||
|   release-windows-386: | ||||
|     name: release windows/386 | ||||
|     runs-on: windows-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@master | ||||
|     - name: compile and release | ||||
|       uses: ngs/go-release.action@v1.0.1 | ||||
|       env: | ||||
|         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|         GOARCH: "386" | ||||
|         GOOS: windows | ||||
|         EXTRA_FILES: "LICENSE" | ||||
|   release-windows-amd64: | ||||
|     name: release windows/amd64 | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - uses: actions/checkout@master | ||||
|     - name: compile and release | ||||
|       uses: ngs/go-release.action@v1.0.1 | ||||
|       env: | ||||
|         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||||
|         GOARCH: amd64 | ||||
|         GOOS: windows | ||||
|         EXTRA_FILES: "LICENSE" | ||||
|     build: | ||||
|         name: Build Binary | ||||
|         runs-on: ${{ matrix.os }} | ||||
|         strategy: | ||||
|             matrix: | ||||
|                 os: [windows-latest, macos-latest] | ||||
|                 arch: [amd64] | ||||
|                 # We sometimes use different verbiage for things (e.g. "darwin" | ||||
|                 # for the GOOS build flag and "osx" in the actual release ZIP). | ||||
|                 # We need to specify those here. | ||||
|                 include: | ||||
|                     - os: windows-latest | ||||
|                       goos: windows | ||||
|                       bin: 'hack-browser-data.exe' | ||||
|                       releaseos: windows | ||||
|                     - os: macos-latest | ||||
|                       goos: darwin | ||||
|                       bin: 'hack-browser-data' | ||||
|                       releaseos: osx | ||||
|                 # Don't build windows-32bit due to missing MinGW dependencies | ||||
|                 # Don't build osx-32bit due to eventual drop in Go support | ||||
|                 exclude: | ||||
|                     - os: windows-latest | ||||
|                       arch: '386' | ||||
|                     - os: macos-latest | ||||
|                       arch: '386' | ||||
|         steps: | ||||
|             - name: Set up Go | ||||
|               uses: actions/setup-go@v2 | ||||
|               with: | ||||
|                 go-version: 1.14 | ||||
|             # - if: matrix.os == 'ubuntu-latest' | ||||
|             #  run: sudo apt-get update && sudo apt-get install -y gcc-multilib | ||||
|             # - if: matrix.arch == '386' | ||||
|             #  run: echo "::set-env name=RELEASE::gophish-${{ github.event.release.tag_name }}-${{ matrix.releaseos}}-32bit" | ||||
|             - if: matrix.arch == 'amd64' | ||||
|               run: echo "::set-env name=RELEASE::hack-browser-data-${{ github.event.release.tag_name}}-${{ matrix.releaseos}}-64bit" | ||||
|             - uses: actions/checkout@v2 | ||||
|             - name: Build ${{ matrix.goos }}/${{ matrix.arch }} | ||||
|               run: go build -o ${{ matrix.bin }} | ||||
|               env: | ||||
|                 GOOS: ${{ matrix.goos }} | ||||
|                 GOARCH: ${{ matrix.arch }} | ||||
|                 CGO_ENABLED: 1 | ||||
|             - name: Upload to artifacts | ||||
|               uses: actions/upload-artifact@v2 | ||||
|               with: | ||||
|                 name: ${{ env.RELEASE }} | ||||
|                 path: ${{ matrix.bin }} | ||||
| 
 | ||||
|     package: | ||||
|         name: Package Assets | ||||
|         runs-on: ubuntu-latest | ||||
|         needs: build | ||||
|         steps: | ||||
|             - uses: actions/checkout@v2 | ||||
|             - uses: actions/download-artifact@v2 | ||||
|               with: | ||||
|                 path: bin | ||||
|             - name: Package Releases | ||||
|               run: | | ||||
|                 mkdir releases; | ||||
|                 for RELEASE_DIR in bin/* | ||||
|                 do | ||||
|                   echo "Creating release $RELEASE_DIR" | ||||
|                   for BINARY in $RELEASE_DIR/* | ||||
|                   do | ||||
|                     cp $BINARY .; | ||||
|                     zip -r releases/$(basename $RELEASE_DIR).zip \ | ||||
|                       $(basename ${BINARY}) \ | ||||
|                       static/js/dist \ | ||||
|                       static/js/src/vendor/ckeditor \ | ||||
|                       static/css/dist \ | ||||
|                       static/images \ | ||||
|                       static/font \ | ||||
|                       static/db \ | ||||
|                       db \ | ||||
|                       templates \ | ||||
|                       README.md \ | ||||
|                       VERSION \ | ||||
|                       LICENSE \ | ||||
|                       config.json; | ||||
|                     rm $BINARY; | ||||
|                   done | ||||
|                 done | ||||
|             - name: Upload to artifacts | ||||
|               uses: actions/upload-artifact@v2 | ||||
|               with: | ||||
|                 name: releases | ||||
|                 path: releases/*.zip | ||||
| 
 | ||||
|     upload: | ||||
|         name: Upload to the Release | ||||
|         runs-on: ubuntu-latest | ||||
|         needs: package | ||||
|         steps: | ||||
|             - uses: actions/download-artifact@v2 | ||||
|               with: | ||||
|                 name: releases | ||||
|                 path: releases/ | ||||
|             # I would love to use @actions/upload-release-asset, but they don't | ||||
|             # support wildcards in the asset path. Ref #9, #24, and #47 | ||||
|             - name: Upload Archives to Release | ||||
|               env: | ||||
|                 UPLOAD_URL: ${{ github.event.release.upload_url }} | ||||
|                 API_HEADER: "Accept: application/vnd.github.v3+json" | ||||
|                 AUTH_HEADER: "Authorization: token ${{ secrets.GITHUB_TOKEN }}" | ||||
|               run: | | ||||
|                 UPLOAD_URL=$(echo -n $UPLOAD_URL | sed s/\{.*//g) | ||||
|                 for FILE in releases/* | ||||
|                 do | ||||
|                   echo "Uploading ${FILE}"; | ||||
|                   curl \ | ||||
|                     -H "${API_HEADER}" \ | ||||
|                     -H "${AUTH_HEADER}" \ | ||||
|                     -H "Content-Type: $(file -b --mime-type ${FILE})" \ | ||||
|                     --data-binary "@${FILE}" \ | ||||
|                     "${UPLOAD_URL}?name=$(basename ${FILE})"; | ||||
|                 done | ||||
|             - name: Generate SHA256 Hashes | ||||
|               env: | ||||
|                 API_HEADER: "Accept: application/vnd.github.v3+json" | ||||
|                 AUTH_HEADER: "Authorization: token ${{ secrets.GITHUB_TOKEN }}" | ||||
|                 RELEASE_URL: ${{ github.event.release.url }} | ||||
|               run: | | ||||
|                 HASH_TABLE="| SHA256 Hash | Filename |" | ||||
|                 HASH_TABLE="${HASH_TABLE}\n|-----|-----|\n" | ||||
|                 for FILE in releases/* | ||||
|                 do | ||||
|                   FILENAME=$(basename ${FILE}) | ||||
|                   HASH=$(sha256sum ${FILE} | cut -d ' ' -f 1) | ||||
|                   HASH_TABLE="${HASH_TABLE}|${HASH}|${FILENAME}|\n" | ||||
|                 done | ||||
|                 echo "${HASH_TABLE}" | ||||
|                 curl \ | ||||
|                   -XPATCH \ | ||||
|                   -H "${API_HEADER}" \ | ||||
|                   -H "${AUTH_HEADER}" \ | ||||
|                   -H "Content-Type: application/json" \ | ||||
|                   -d "{\"body\": \"${HASH_TABLE}\"}" \ | ||||
|                   "${RELEASE_URL}"; | ||||
|  | ||||
| @ -1,26 +0,0 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| set -eux | ||||
| 
 | ||||
| PROJECT_ROOT="/go/src/github.com/${GITHUB_REPOSITORY}" | ||||
| 
 | ||||
| mkdir -p $PROJECT_ROOT | ||||
| rmdir $PROJECT_ROOT | ||||
| ln -s $GITHUB_WORKSPACE $PROJECT_ROOT | ||||
| cd $PROJECT_ROOT | ||||
| go get -v ./... | ||||
| 
 | ||||
| EXT='' | ||||
| 
 | ||||
| if [ $GOOS == 'windows' ]; then | ||||
| EXT='.exe' | ||||
| fi | ||||
| 
 | ||||
| if [ -x "./build.sh" ]; then | ||||
|   OUTPUT=`./build.sh "${CMD_PATH}"` | ||||
| else | ||||
|   go build "${CMD_PATH}" | ||||
|   OUTPUT="${PROJECT_NAME}${EXT}" | ||||
| fi | ||||
| 
 | ||||
| echo ${OUTPUT} | ||||
| @ -1,54 +0,0 @@ | ||||
| 
 | ||||
| #!/bin/sh | ||||
| 
 | ||||
| set -eux | ||||
| 
 | ||||
| if [ -z "${CMD_PATH+x}" ]; then | ||||
|   echo "::warning file=entrypoint.sh,line=6,col=1::CMD_PATH not set" | ||||
|   export CMD_PATH="" | ||||
| fi | ||||
| 
 | ||||
| FILE_LIST=`/build.sh` | ||||
| 
 | ||||
| #echo "::warning file=/build.sh,line=1,col=5::${FILE_LIST}" | ||||
| 
 | ||||
| EVENT_DATA=$(cat $GITHUB_EVENT_PATH) | ||||
| echo $EVENT_DATA | jq . | ||||
| UPLOAD_URL=$(echo $EVENT_DATA | jq -r .release.upload_url) | ||||
| UPLOAD_URL=${UPLOAD_URL/\{?name,label\}/} | ||||
| RELEASE_NAME=$(echo $EVENT_DATA | jq -r .release.tag_name) | ||||
| PROJECT_NAME=$(basename $GITHUB_REPOSITORY) | ||||
| NAME="${NAME:-${PROJECT_NAME}_${RELEASE_NAME}}_${GOOS}_${GOARCH}" | ||||
| 
 | ||||
| if [ -z "${EXTRA_FILES+x}" ]; then | ||||
| echo "::warning file=entrypoint.sh,line=22,col=1::EXTRA_FILES not set" | ||||
| fi | ||||
| 
 | ||||
| FILE_LIST="${FILE_LIST} ${EXTRA_FILES}" | ||||
| 
 | ||||
| FILE_LIST=`echo "${FILE_LIST}" | awk '{$1=$1};1'` | ||||
| 
 | ||||
| 
 | ||||
| if [ $GOOS == 'windows' ]; then | ||||
| ARCHIVE=tmp.zip | ||||
| zip -9r $ARCHIVE ${FILE_LIST} | ||||
| else | ||||
| ARCHIVE=tmp.tgz | ||||
| tar cvfz $ARCHIVE ${FILE_LIST} | ||||
| fi | ||||
| 
 | ||||
| CHECKSUM=$(md5sum ${ARCHIVE} | cut -d ' ' -f 1) | ||||
| 
 | ||||
| curl \ | ||||
|   -X POST \ | ||||
|   --data-binary @${ARCHIVE} \ | ||||
|   -H 'Content-Type: application/octet-stream' \ | ||||
|   -H "Authorization: Bearer ${GITHUB_TOKEN}" \ | ||||
|   "${UPLOAD_URL}?name=${NAME}.${ARCHIVE/tmp./}" | ||||
| 
 | ||||
| curl \ | ||||
|   -X POST \ | ||||
|   --data $CHECKSUM \ | ||||
|   -H 'Content-Type: text/plain' \ | ||||
|   -H "Authorization: Bearer ${GITHUB_TOKEN}" \ | ||||
|   "${UPLOAD_URL}?name=${NAME}_checksum.txt" | ||||
					Loading…
					
					
				
		Reference in new issue