name: Build & Release on: push: branches: - master jobs: build: name: Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Install buildah run: | sudo apt-get install -qq -y software-properties-common sudo add-apt-repository -y ppa:projectatomic/ppa sudo apt-get update -qq sudo apt-get -qq -y install buildah - name: Free disk space run: | sudo swapoff -a sudo rm -f /swapfile sudo apt clean docker rmi $(docker image ls -aq) df -h - name: Build & push the Docker image env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | buildah bud --format=docker --layers -t embarkstudios/wireguard-ui:latest -t embarkstudios/wireguard-ui:$GITHUB_SHA -f Dockerfile . buildah push --creds $DOCKER_USERNAME:$DOCKER_PASSWORD --format=v2s2 embarkstudios/wireguard-ui release: name: Release needs: build if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest steps: - uses: actions/checkout@master - name: Setup NodeJS uses: actions/setup-node@v1 with: node-verison: '12.x' - name: npm install & build run: | make ui - name: Setup Go uses: actions/setup-go@v2 with: go-version: '1.14' - name: Insert assets into go run: | make assets - name: Build wg-ui for Linux (AMD64) run: | name=wg-ui tag=$(git describe --tags --abbrev=0) target=linux-amd64 release_name="$name-$tag-$target" release_tar="$release_name.tar.gz" env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o "$release_name" tar czvf "$release_tar" "$release_name" echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256" rm "$release_name" - name: Build wg-ui for Linux (ARMv5) run: | name=wg-ui tag=$(git describe --tags --abbrev=0) target=linux-armv5 release_name="$name-$tag-$target" release_tar="$release_name.tar.gz" env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=5 go build -o "$release_name" tar czvf "$release_tar" "$release_name" echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256" rm "$release_name" - name: Build wg-ui for Linux (ARMv6) run: | name=wg-ui tag=$(git describe --tags --abbrev=0) target=linux-armv6 release_name="$name-$tag-$target" release_tar="$release_name.tar.gz" env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build -o "$release_name" tar czvf "$release_tar" "$release_name" echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256" rm "$release_name" - name: Build wg-ui for Linux (ARMv7) run: | name=wg-ui tag=$(git describe --tags --abbrev=0) target=linux-armv7 release_name="$name-$tag-$target" release_tar="$release_name.tar.gz" env CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o "$release_name" tar czvf "$release_tar" "$release_name" echo -n "$(shasum -ba 256 "${release_tar}" | cut -d " " -f 1)" > "${release_tar}.sha256" rm "$release_name" - name: Install buildah run: | sudo apt-get install -qq -y software-properties-common sudo add-apt-repository -y ppa:projectatomic/ppa sudo apt-get update -qq sudo apt-get -qq -y install buildah - name: Build & push wg-ui to docker hub env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | tag=$(git describe --tags --abbrev=0) buildah bud --format=docker --layers -t embarkstudios/wireguard-ui:$tag -t embarkstudios/wireguard-ui:$GITHUB_SHA -f Dockerfile . buildah push --creds $DOCKER_USERNAME:$DOCKER_PASSWORD --format=v2s2 embarkstudios/wireguard-ui - name: Publish release uses: softprops/action-gh-release@v1 with: draft: true files: "wg-ui*" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}