From 3bb18167d8a8bdaff9a11bf07b47c073df52b7dc Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Tue, 17 May 2022 12:07:44 +0200 Subject: [PATCH 01/21] Generate app zip files and homebrew file --- .github/workflows/release.yml | 180 ++++++++++++++++++++-------------- client/ui/Info.plist | 10 ++ client/ui/Netbird.icns | Bin 0 -> 101540 bytes client/ui/netbird-ui.rb.tmpl | 20 ++++ 4 files changed, 135 insertions(+), 75 deletions(-) create mode 100644 client/ui/Info.plist create mode 100644 client/ui/Netbird.icns create mode 100644 client/ui/netbird-ui.rb.tmpl diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a98c89823..5129efbad 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,78 +9,78 @@ on: pull_request: jobs: - release: - runs-on: ubuntu-latest - steps: - - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 # It is required for GoReleaser to work properly - - - name: Generate syso with DLL - run: bash -x wireguard_nt.sh - working-directory: client - - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.18 - - - name: Cache Go modules - uses: actions/cache@v1 - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - - name: Install modules - run: go mod tidy - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - - name: Login to Docker hub - if: github.event_name != 'pull_request' - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKER_USER }} - password: ${{ secrets.DOCKER_TOKEN }} - - name: Install dependencies - run: sudo apt update && sudo apt install -y -q libgtk-3-dev libappindicator3-dev libayatana-appindicator3-dev libgl1-mesa-dev xorg-dev gcc-mingw-w64-x86-64 - - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v2 - with: - version: v1.6.3 - args: release --rm-dist - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} - UPLOAD_DEBIAN_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} - UPLOAD_YUM_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} - - - - name: Trigger Windows binaries sign pipeline - uses: benc-uk/workflow-dispatch@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - workflow: Sign windows bin and installer - repo: wiretrustee/windows-sign-pipeline - ref: v0.0.2 - token: ${{ secrets.SIGN_GITHUB_TOKEN }} - inputs: '{ "tag": "${{ github.ref }}" }' - - - name: upload non tags for debug purposes - uses: actions/upload-artifact@v2 - with: - name: build - path: dist/ - retention-days: 3 +# release: +# runs-on: ubuntu-latest +# steps: +# - +# name: Checkout +# uses: actions/checkout@v2 +# with: +# fetch-depth: 0 # It is required for GoReleaser to work properly +# +# - name: Generate syso with DLL +# run: bash -x wireguard_nt.sh +# working-directory: client +# - +# name: Set up Go +# uses: actions/setup-go@v2 +# with: +# go-version: 1.18 +# - +# name: Cache Go modules +# uses: actions/cache@v1 +# with: +# path: ~/go/pkg/mod +# key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} +# restore-keys: | +# ${{ runner.os }}-go- +# - +# name: Install modules +# run: go mod tidy +# - +# name: Set up QEMU +# uses: docker/setup-qemu-action@v1 +# - +# name: Set up Docker Buildx +# uses: docker/setup-buildx-action@v1 +# - +# name: Login to Docker hub +# if: github.event_name != 'pull_request' +# uses: docker/login-action@v1 +# with: +# username: ${{ secrets.DOCKER_USER }} +# password: ${{ secrets.DOCKER_TOKEN }} +# - name: Install dependencies +# run: sudo apt update && sudo apt install -y -q libgtk-3-dev libappindicator3-dev libayatana-appindicator3-dev libgl1-mesa-dev xorg-dev gcc-mingw-w64-x86-64 +# - +# name: Run GoReleaser +# uses: goreleaser/goreleaser-action@v2 +# with: +# version: v1.6.3 +# args: release --rm-dist +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} +# UPLOAD_DEBIAN_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} +# UPLOAD_YUM_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} +# +# - +# name: Trigger Windows binaries sign pipeline +# uses: benc-uk/workflow-dispatch@v1 +# if: startsWith(github.ref, 'refs/tags/') +# with: +# workflow: Sign windows bin and installer +# repo: wiretrustee/windows-sign-pipeline +# ref: v0.0.2 +# token: ${{ secrets.SIGN_GITHUB_TOKEN }} +# inputs: '{ "tag": "${{ github.ref }}" }' +# - +# name: upload non tags for debug purposes +# uses: actions/upload-artifact@v2 +# with: +# name: build +# path: dist/ +# retention-days: 3 release_ui: runs-on: macos-latest @@ -108,15 +108,45 @@ jobs: run: go mod tidy - name: Run GoReleaser + id: goreleaser uses: goreleaser/goreleaser-action@v2 with: version: v1.6.3 args: release --config .goreleaser_ui_darwin.yaml --rm-dist env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} - UPLOAD_DEBIAN_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} - UPLOAD_YUM_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} + - + name: Checkout homebrew + uses: actions/checkout@v2 + with: + repository: mlsmaycon/homebrew-client + fetch-depth: 0 # It is required for GoReleaser to work properly + path: 'template' + clean: false + ref: main + + - run: rm -fr template/.git + + - run: brew install gomplate + - run: | + echo ${{ steps.goreleaser.outputs.metadata}} || true + echo ${{ steps.goreleaser.outputs.Metadata}} || true + export PROJECT=netbird-ui + export AMD=$(ls -1 dist/${PROJECT}*amd64.zip) + export ARM=$(ls -1 dist/${PROJECT}*amd64.zip) + export VERSION=$(echo $AMD|egrep -o "${PROJECT}.+zip"|sed -E 's/.+app_(.+)_darwin_amd64.zip/\1/') + gomplate -f client/ui/netbird-ui.rb.tmpl -o template/netbird-ui.rb + + - name: Pushes to another repository + uses: cpina/github-action-push-to-another-repository@main + env: + API_TOKEN_GITHUB: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} + with: + source-directory: 'template' + destination-github-username: 'mlsmaycon' + destination-repository-name: 'homebrew-client' + user-email: ci@netbird.io + target-branch: main - name: upload non tags for debug purposes uses: actions/upload-artifact@v2 diff --git a/client/ui/Info.plist b/client/ui/Info.plist new file mode 100644 index 000000000..8f515c889 --- /dev/null +++ b/client/ui/Info.plist @@ -0,0 +1,10 @@ + + + + + CFBundleExecutable + netbird-ui + CFBundleIconFile + Netbird + + diff --git a/client/ui/Netbird.icns b/client/ui/Netbird.icns new file mode 100644 index 0000000000000000000000000000000000000000..59615c19366a654bc6391219cdb6dd2e96aad700 GIT binary patch literal 101540 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

b5q@6*%gH?jG|bC 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 Date: Tue, 17 May 2022 12:09:19 +0200 Subject: [PATCH 02/21] Generate app zip files and homebrew file --- .goreleaser_ui_darwin.yaml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.goreleaser_ui_darwin.yaml b/.goreleaser_ui_darwin.yaml index 04d6fb44e..e4bc55ccc 100644 --- a/.goreleaser_ui_darwin.yaml +++ b/.goreleaser_ui_darwin.yaml @@ -1,8 +1,8 @@ -project_name: wiretrustee-ui +project_name: netbird-ui builds: - - id: wiretrustee-ui-darwin + - id: netbird-ui-darwin dir: client/ui - binary: wiretrustee-ui + binary: netbird-ui env: [CGO_ENABLED=1] goos: @@ -21,18 +21,18 @@ builds: archives: - builds: - - wiretrustee-ui-darwin + - netbird-ui-darwin -brews: - - - tap: - owner: wiretrustee - name: homebrew-client - token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}" - commit_author: - name: Wiretrustee - email: wiretrustee@wiretrustee.com - description: Wiretrustee project. - download_strategy: CurlDownloadStrategy - homepage: https://wiretrustee.com/ - license: "BSD3" + - id: netbird-app + builds: + - netbird-ui-darwin + format: zip + name_template: "{{ .ProjectName }}_app_{{ .Version }}_{{ .Os }}_{{ .Arch }}" + wrap_in_directory: true + files: + - src: client/ui/Info.plist + strip_parent: true + dst: ./ + - src: client/ui/Netbird.icns + dst: ./ + strip_parent: true From bf762d607099fd70144b274d4cd5793e3233a107 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Tue, 17 May 2022 12:10:58 +0200 Subject: [PATCH 03/21] Generate app zip files and homebrew file --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5129efbad..9abf3bf95 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -135,6 +135,7 @@ jobs: export AMD=$(ls -1 dist/${PROJECT}*amd64.zip) export ARM=$(ls -1 dist/${PROJECT}*amd64.zip) export VERSION=$(echo $AMD|egrep -o "${PROJECT}.+zip"|sed -E 's/.+app_(.+)_darwin_amd64.zip/\1/') + env | egrep 'AMD|ARM|PROJECT|VERSION' gomplate -f client/ui/netbird-ui.rb.tmpl -o template/netbird-ui.rb - name: Pushes to another repository From e4d21a0b29b480862c9c14636fe6878e14a3569f Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Fri, 20 May 2022 22:51:20 +0200 Subject: [PATCH 04/21] New packaging name --- client/installer.nsis | 27 +++++++++++++-------------- client/manifest.xml | 4 ++-- client/resources.rc | 2 +- client/ui/netbird.ico | Bin 0 -> 106176 bytes 4 files changed, 16 insertions(+), 17 deletions(-) create mode 100644 client/ui/netbird.ico diff --git a/client/installer.nsis b/client/installer.nsis index b92cb9bc1..77dce79e2 100644 --- a/client/installer.nsis +++ b/client/installer.nsis @@ -1,12 +1,12 @@ -!define APP_NAME "Wiretrustee" -!define COMP_NAME "Wiretrustee" -!define WEB_SITE "wiretrustee.com" +!define APP_NAME "Netbird" +!define COMP_NAME "Netbird" +!define WEB_SITE "Netbird.io" !define VERSION $%APPVER% -!define COPYRIGHT "Wiretrustee Authors, 2021" +!define COPYRIGHT "Netbird Authors, 2021" !define DESCRIPTION "A WireGuard®-based mesh network that connects your devices into a single private network" -!define INSTALLER_NAME "wiretrustee-installer.exe" -!define MAIN_APP_EXE "Wiretrustee" -!define ICON "ui\\wiretrustee.ico" +!define INSTALLER_NAME "netbird-installer.exe" +!define MAIN_APP_EXE "Netbird" +!define ICON "ui\\netbird.ico" !define BANNER "ui\\banner.bmp" !define LICENSE_DATA "..\\LICENSE" @@ -16,8 +16,8 @@ !define REG_APP_PATH "Software\Microsoft\Windows\CurrentVersion\App Paths\${MAIN_APP_EXE}" !define UNINSTALL_PATH "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APP_NAME}" -!define UI_APP_NAME "Wiretrustee UI" -!define UI_APP_EXE "Wiretrustee-ui" +!define UI_APP_NAME "Netbird UI" +!define UI_APP_EXE "Netbird-ui" !define UI_REG_APP_PATH "Software\Microsoft\Windows\CurrentVersion\App Paths\${UI_APP_EXE}" !define UI_UNINSTALL_PATH "Software\Microsoft\Windows\CurrentVersion\Uninstall\${UI_APP_NAME}" @@ -83,8 +83,7 @@ Section -MainProgram ${INSTALL_TYPE} SetOverwrite ifnewer SetOutPath "$INSTDIR" - File /r "..\\dist\\wiretrustee_windows_amd64\\" - File /r "..\\dist\\wiretrustee-ui_windows_amd64\\" + File /r "..\\dist\\netbird_windows_amd64\\" SectionEnd @@ -92,18 +91,18 @@ SectionEnd Section -Icons_Reg SetOutPath "$INSTDIR" -WriteUninstaller "$INSTDIR\wiretrustee_uninstall.exe" +WriteUninstaller "$INSTDIR\netbird_uninstall.exe" WriteRegStr ${REG_ROOT} "${REG_APP_PATH}" "" "$INSTDIR\${MAIN_APP_EXE}" WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayName" "${APP_NAME}" -WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\wiretrustee_uninstall.exe" +WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\netbird_uninstall.exe" WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayIcon" "$INSTDIR\${MAIN_APP_EXE}" WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "${VERSION}" WriteRegStr ${REG_ROOT} "${UNINSTALL_PATH}" "Publisher" "${COMP_NAME}" WriteRegStr ${REG_ROOT} "${UI_REG_APP_PATH}" "" "$INSTDIR\${UI_APP_EXE}" WriteRegStr ${REG_ROOT} "${UI_UNINSTALL_PATH}" "DisplayName" "${UI_APP_NAME}" -WriteRegStr ${REG_ROOT} "${UI_UNINSTALL_PATH}" "UninstallString" "$INSTDIR\wiretrustee_uninstall.exe" +WriteRegStr ${REG_ROOT} "${UI_UNINSTALL_PATH}" "UninstallString" "$INSTDIR\netbird_uninstall.exe" WriteRegStr ${REG_ROOT} "${UI_UNINSTALL_PATH}" "DisplayIcon" "$INSTDIR\${UI_APP_EXE}" WriteRegStr ${REG_ROOT} "${UI_UNINSTALL_PATH}" "DisplayVersion" "${VERSION}" WriteRegStr ${REG_ROOT} "${UI_UNINSTALL_PATH}" "Publisher" "${COMP_NAME}" diff --git a/client/manifest.xml b/client/manifest.xml index 392a6f7ff..77c0eade8 100644 --- a/client/manifest.xml +++ b/client/manifest.xml @@ -3,10 +3,10 @@ - Wiretrustee application + Netbird application diff --git a/client/resources.rc b/client/resources.rc index 8459d85c0..cd8a28284 100644 --- a/client/resources.rc +++ b/client/resources.rc @@ -5,5 +5,5 @@ #define STRINGIZE(x) #x #define EXPAND(x) STRINGIZE(x) CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST manifest.xml -7 ICON ui/wiretrustee.ico +7 ICON ui/netbird.ico wireguard.dll RCDATA wireguard.dll diff --git a/client/ui/netbird.ico b/client/ui/netbird.ico new file mode 100644 index 0000000000000000000000000000000000000000..2bab8a503d92aad4dd9bb5eccc02f044762a7f6b GIT binary patch literal 106176 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 Date: Fri, 20 May 2022 22:54:50 +0200 Subject: [PATCH 05/21] Enable main release and call new sign-pipelines --- .github/workflows/release.yml | 189 +++++++++++++++------------------- 1 file changed, 85 insertions(+), 104 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9abf3bf95..df05eeaf9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,79 +8,81 @@ on: - main pull_request: +env: + SIGN_PIPE_VER: main + jobs: -# release: -# runs-on: ubuntu-latest -# steps: -# - -# name: Checkout -# uses: actions/checkout@v2 -# with: -# fetch-depth: 0 # It is required for GoReleaser to work properly -# -# - name: Generate syso with DLL -# run: bash -x wireguard_nt.sh -# working-directory: client -# - -# name: Set up Go -# uses: actions/setup-go@v2 -# with: -# go-version: 1.18 -# - -# name: Cache Go modules -# uses: actions/cache@v1 -# with: -# path: ~/go/pkg/mod -# key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} -# restore-keys: | -# ${{ runner.os }}-go- -# - -# name: Install modules -# run: go mod tidy -# - -# name: Set up QEMU -# uses: docker/setup-qemu-action@v1 -# - -# name: Set up Docker Buildx -# uses: docker/setup-buildx-action@v1 -# - -# name: Login to Docker hub -# if: github.event_name != 'pull_request' -# uses: docker/login-action@v1 -# with: -# username: ${{ secrets.DOCKER_USER }} -# password: ${{ secrets.DOCKER_TOKEN }} -# - name: Install dependencies -# run: sudo apt update && sudo apt install -y -q libgtk-3-dev libappindicator3-dev libayatana-appindicator3-dev libgl1-mesa-dev xorg-dev gcc-mingw-w64-x86-64 -# - -# name: Run GoReleaser -# uses: goreleaser/goreleaser-action@v2 -# with: -# version: v1.6.3 -# args: release --rm-dist -# env: -# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -# HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} -# UPLOAD_DEBIAN_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} -# UPLOAD_YUM_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} -# -# - -# name: Trigger Windows binaries sign pipeline -# uses: benc-uk/workflow-dispatch@v1 -# if: startsWith(github.ref, 'refs/tags/') -# with: -# workflow: Sign windows bin and installer -# repo: wiretrustee/windows-sign-pipeline -# ref: v0.0.2 -# token: ${{ secrets.SIGN_GITHUB_TOKEN }} -# inputs: '{ "tag": "${{ github.ref }}" }' -# - -# name: upload non tags for debug purposes -# uses: actions/upload-artifact@v2 -# with: -# name: build -# path: dist/ -# retention-days: 3 + release: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 # It is required for GoReleaser to work properly + + - name: Generate syso with DLL + run: bash -x wireguard_nt.sh + working-directory: client + - + name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.18 + - + name: Cache Go modules + uses: actions/cache@v1 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - + name: Install modules + run: go mod tidy + - + name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Login to Docker hub + if: github.event_name != 'pull_request' + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USER }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Install dependencies + run: sudo apt update && sudo apt install -y -q libgtk-3-dev libappindicator3-dev libayatana-appindicator3-dev libgl1-mesa-dev xorg-dev gcc-mingw-w64-x86-64 + - + name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: v1.6.3 + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} + UPLOAD_DEBIAN_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} + UPLOAD_YUM_SECRET: ${{ secrets.PKG_UPLOAD_SECRET }} + - + name: Trigger Windows binaries sign pipeline + uses: benc-uk/workflow-dispatch@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + workflow: Sign windows bin and installer + repo: netbirdio/sign-pipelines + ref: ${{ env.SIGN_PIPE_VER }} + token: ${{ secrets.SIGN_GITHUB_TOKEN }} + inputs: '{ "tag": "${{ github.ref }}" }' + - + name: upload non tags for debug purposes + uses: actions/upload-artifact@v2 + with: + name: build + path: dist/ + retention-days: 3 release_ui: runs-on: macos-latest @@ -115,43 +117,22 @@ jobs: args: release --config .goreleaser_ui_darwin.yaml --rm-dist env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - - name: Checkout homebrew - uses: actions/checkout@v2 + name: Trigger Darwin App binaries sign pipeline + uses: benc-uk/workflow-dispatch@v1 + if: startsWith(github.ref, 'refs/tags/') with: - repository: mlsmaycon/homebrew-client - fetch-depth: 0 # It is required for GoReleaser to work properly - path: 'template' - clean: false - ref: main + workflow: Sign darwin ui app + repo: netbirdio/sign-pipelines + ref: ${{ env.SIGN_PIPE_VER }} + token: ${{ secrets.SIGN_GITHUB_TOKEN }} + inputs: '{ "tag": "${{ github.ref }}" }' - - run: rm -fr template/.git - - - run: brew install gomplate - - run: | - echo ${{ steps.goreleaser.outputs.metadata}} || true - echo ${{ steps.goreleaser.outputs.Metadata}} || true - export PROJECT=netbird-ui - export AMD=$(ls -1 dist/${PROJECT}*amd64.zip) - export ARM=$(ls -1 dist/${PROJECT}*amd64.zip) - export VERSION=$(echo $AMD|egrep -o "${PROJECT}.+zip"|sed -E 's/.+app_(.+)_darwin_amd64.zip/\1/') - env | egrep 'AMD|ARM|PROJECT|VERSION' - gomplate -f client/ui/netbird-ui.rb.tmpl -o template/netbird-ui.rb - - - name: Pushes to another repository - uses: cpina/github-action-push-to-another-repository@main - env: - API_TOKEN_GITHUB: ${{ secrets.HOMEBREW_TAP_GITHUB_TOKEN }} - with: - source-directory: 'template' - destination-github-username: 'mlsmaycon' - destination-repository-name: 'homebrew-client' - user-email: ci@netbird.io - target-branch: main - - + - name: upload non tags for debug purposes uses: actions/upload-artifact@v2 with: name: build-ui-darwin path: dist/ - retention-days: 3 + retention-days: 3 From ec1cb5f028fc68e16933ea40e0ac43bb8ee0eb8a Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Fri, 20 May 2022 23:09:55 +0200 Subject: [PATCH 06/21] Update Goreleaser build names Update Dockerfile --- .goreleaser.yaml | 150 +++++++++++++++++++++++----------------------- client/Dockerfile | 4 +- 2 files changed, 78 insertions(+), 76 deletions(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 345810e35..9e10537a2 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,8 +1,8 @@ -project_name: wiretrustee +project_name: netbird builds: - - id: wiretrustee + - id: netbird dir: client - binary: wiretrustee + binary: netbird env: [CGO_ENABLED=0] goos: - linux @@ -55,9 +55,9 @@ builds: - -s -w -X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.CommitDate}} -X main.builtBy=goreleaser mod_timestamp: '{{ .CommitTimestamp }}' - - id: wiretrustee-ui + - id: netbird-ui dir: client/ui - binary: wiretrustee-ui + binary: netbird-ui env: - CGO_ENABLED=1 goos: @@ -68,9 +68,9 @@ builds: - -s -w -X github.com/netbirdio/netbird/client/ui/system.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.CommitDate}} -X main.builtBy=goreleaser mod_timestamp: '{{ .CommitTimestamp }}' - - id: wiretrustee-ui-windows + - id: netbird-ui-windows dir: client/ui - binary: wiretrustee-ui-windows + binary: netbird-ui env: - CGO_ENABLED=1 - CC=x86_64-w64-mingw32-gcc @@ -84,17 +84,19 @@ builds: archives: - builds: - - wiretrustee + - netbird + - netbird-ui + - netbird-ui-windows nfpms: - - maintainer: Wiretrustee - description: Wiretrustee client UI. - homepage: https://wiretrustee.com/ - id: wiretrustee-ui-deb - package_name: wiretrustee-ui + - maintainer: Netbird + description: Netbird client UI. + homepage: https://netbird.io/ + id: netbird-ui-deb + package_name: netbird-ui builds: - - wiretrustee-ui + - netbird-ui formats: - deb - rpm @@ -108,13 +110,13 @@ nfpms: - libgtk-3-dev - libappindicator3-dev - - maintainer: Wiretrustee - description: Wiretrustee client. - homepage: https://wiretrustee.com/ - id: wiretrustee-deb + - maintainer: Netbird + description: Netbird client. + homepage: https://netbird.io/ + id: netbird-deb bindir: /usr/bin builds: - - wiretrustee + - netbird formats: - deb @@ -122,13 +124,13 @@ nfpms: postinstall: "release_files/post_install.sh" preremove: "release_files/pre_remove.sh" - - maintainer: Wiretrustee - description: Wiretrustee client. - homepage: https://wiretrustee.com/ - id: wiretrustee-rpm + - maintainer: Netbird + description: Netbird client. + homepage: https://netbird.io/ + id: netbird-rpm bindir: /usr/bin builds: - - wiretrustee + - netbird formats: - rpm @@ -137,9 +139,9 @@ nfpms: preremove: "release_files/pre_remove.sh" dockers: - image_templates: - - wiretrustee/wiretrustee:{{ .Version }}-amd64 + - netbirdio/netbird:{{ .Version }}-amd64 ids: - - wiretrustee + - netbird goarch: amd64 use: buildx dockerfile: client/Dockerfile @@ -150,11 +152,11 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - - "--label=maintainer=wiretrustee@wiretrustee.com" + - "--label=maintainer=dev@netbird.io" - image_templates: - - wiretrustee/wiretrustee:{{ .Version }}-arm64v8 + - netbirdio/netbird:{{ .Version }}-arm64v8 ids: - - wiretrustee + - netbird goarch: arm64 use: buildx dockerfile: client/Dockerfile @@ -165,11 +167,11 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - - "--label=maintainer=wiretrustee@wiretrustee.com" + - "--label=maintainer=dev@netbird.io" - image_templates: - - wiretrustee/wiretrustee:{{ .Version }}-arm + - netbirdio/netbird:{{ .Version }}-arm ids: - - wiretrustee + - netbird goarch: arm goarm: 6 use: buildx @@ -181,7 +183,7 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - - "--label=maintainer=wiretrustee@wiretrustee.com" + - "--label=maintainer=dev@netbird.io" - image_templates: - netbirdio/signal:{{ .Version }}-amd64 ids: @@ -198,7 +200,7 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" - image_templates: - - netbird/signal:{{ .Version }}-arm64v8 + - netbirdio/signal:{{ .Version }}-arm64v8 ids: - netbird-signal goarch: arm64 @@ -213,7 +215,7 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" - image_templates: - - netbird/signal:{{ .Version }}-arm + - netbirdio/signal:{{ .Version }}-arm ids: - netbird-signal goarch: arm @@ -229,7 +231,7 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" - image_templates: - - netbird/management:{{ .Version }}-amd64 + - netbirdio/management:{{ .Version }}-amd64 ids: - netbird-mgmt goarch: amd64 @@ -244,7 +246,7 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" - image_templates: - - netbird/management:{{ .Version }}-arm64v8 + - netbirdio/management:{{ .Version }}-arm64v8 ids: - netbird-mgmt goarch: arm64 @@ -259,7 +261,7 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" - image_templates: - - netbird/management:{{ .Version }}-arm + - netbirdio/management:{{ .Version }}-arm ids: - netbird-mgmt goarch: arm @@ -275,7 +277,7 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" - image_templates: - - netbird/management:{{ .Version }}-debug-amd64 + - netbirdio/management:{{ .Version }}-debug-amd64 ids: - netbird-mgmt goarch: amd64 @@ -290,7 +292,7 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" - image_templates: - - netbird/management:{{ .Version }}-debug-arm64v8 + - netbirdio/management:{{ .Version }}-debug-arm64v8 ids: - netbird-mgmt goarch: arm64 @@ -306,7 +308,7 @@ dockers: - "--label=maintainer=dev@netbird.io" - image_templates: - - netbird/management:{{ .Version }}-debug-arm + - netbirdio/management:{{ .Version }}-debug-arm ids: - netbird-mgmt goarch: arm @@ -322,60 +324,60 @@ dockers: - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" docker_manifests: - - name_template: wiretrustee/wiretrustee:{{ .Version }} + - name_template: netbirdio/netbird:{{ .Version }} image_templates: - - wiretrustee/wiretrustee:{{ .Version }}-arm64v8 - - wiretrustee/wiretrustee:{{ .Version }}-arm - - wiretrustee/wiretrustee:{{ .Version }}-amd64 + - netbirdio/netbird:{{ .Version }}-arm64v8 + - netbirdio/netbird:{{ .Version }}-arm + - netbirdio/netbird:{{ .Version }}-amd64 - - name_template: wiretrustee/wiretrustee:latest + - name_template: netbirdio/netbird:latest image_templates: - - wiretrustee/wiretrustee:{{ .Version }}-arm64v8 - - wiretrustee/wiretrustee:{{ .Version }}-arm - - wiretrustee/wiretrustee:{{ .Version }}-amd64 + - netbirdio/netbird:{{ .Version }}-arm64v8 + - netbirdio/netbird:{{ .Version }}-arm + - netbirdio/netbird:{{ .Version }}-amd64 - - name_template: netbird/signal:{{ .Version }} + - name_template: netbirdio/signal:{{ .Version }} image_templates: - - netbird/signal:{{ .Version }}-arm64v8 - - netbird/signal:{{ .Version }}-arm - - netbird/signal:{{ .Version }}-amd64 + - netbirdio/signal:{{ .Version }}-arm64v8 + - netbirdio/signal:{{ .Version }}-arm + - netbirdio/signal:{{ .Version }}-amd64 - - name_template: netbird/signal:latest + - name_template: netbirdio/signal:latest image_templates: - - netbird/signal:{{ .Version }}-arm64v8 - - netbird/signal:{{ .Version }}-arm - - netbird/signal:{{ .Version }}-amd64 + - netbirdio/signal:{{ .Version }}-arm64v8 + - netbirdio/signal:{{ .Version }}-arm + - netbirdio/signal:{{ .Version }}-amd64 - - name_template: netbird/management:{{ .Version }} + - name_template: netbirdio/management:{{ .Version }} image_templates: - - netbird/management:{{ .Version }}-arm64v8 - - netbird/management:{{ .Version }}-arm - - netbird/management:{{ .Version }}-amd64 + - netbirdio/management:{{ .Version }}-arm64v8 + - netbirdio/management:{{ .Version }}-arm + - netbirdio/management:{{ .Version }}-amd64 - - name_template: netbird/management:latest + - name_template: netbirdio/management:latest image_templates: - - netbird/management:{{ .Version }}-arm64v8 - - netbird/management:{{ .Version }}-arm - - netbird/management:{{ .Version }}-amd64 + - netbirdio/management:{{ .Version }}-arm64v8 + - netbirdio/management:{{ .Version }}-arm + - netbirdio/management:{{ .Version }}-amd64 - - name_template: netbird/management:debug-latest + - name_template: netbirdio/management:debug-latest image_templates: - - netbird/management:{{ .Version }}-debug-arm64v8 - - netbird/management:{{ .Version }}-debug-arm - - netbird/management:{{ .Version }}-debug-amd64 + - netbirdio/management:{{ .Version }}-debug-arm64v8 + - netbirdio/management:{{ .Version }}-debug-arm + - netbirdio/management:{{ .Version }}-debug-amd64 brews: - tap: - owner: wiretrustee + owner: netbirdio name: homebrew-client token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}" commit_author: - name: Wiretrustee - email: wiretrustee@wiretrustee.com - description: Wiretrustee project. + name: Netbird + email: dev@netbird.io + description: Netbird project. download_strategy: CurlDownloadStrategy - homepage: https://wiretrustee.com/ + homepage: https://netbird.io/ license: "BSD3" test: | system "#{bin}/{{ .ProjectName }} -h" diff --git a/client/Dockerfile b/client/Dockerfile index 45e36df09..58b0b5529 100644 --- a/client/Dockerfile +++ b/client/Dockerfile @@ -1,4 +1,4 @@ FROM gcr.io/distroless/base:debug ENV WT_LOG_FILE=console -ENTRYPOINT [ "/go/bin/wiretrustee","up"] -COPY wiretrustee /go/bin/wiretrustee \ No newline at end of file +ENTRYPOINT [ "/go/bin/netbird","up"] +COPY netbird /go/bin/netbird \ No newline at end of file From e35557a824f74691ca7bc42ec411a809c500e867 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Fri, 20 May 2022 23:13:04 +0200 Subject: [PATCH 07/21] Skip publishing changelog --- .goreleaser_ui_darwin.yaml | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/.goreleaser_ui_darwin.yaml b/.goreleaser_ui_darwin.yaml index e4bc55ccc..9cfb679d2 100644 --- a/.goreleaser_ui_darwin.yaml +++ b/.goreleaser_ui_darwin.yaml @@ -23,16 +23,5 @@ archives: - builds: - netbird-ui-darwin - - id: netbird-app - builds: - - netbird-ui-darwin - format: zip - name_template: "{{ .ProjectName }}_app_{{ .Version }}_{{ .Os }}_{{ .Arch }}" - wrap_in_directory: true - files: - - src: client/ui/Info.plist - strip_parent: true - dst: ./ - - src: client/ui/Netbird.icns - dst: ./ - strip_parent: true +changelog: + skip: true \ No newline at end of file From 128ea6bfd4f91d2c66bf0f0dc44b2d1cc2fc2443 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Fri, 20 May 2022 23:46:56 +0200 Subject: [PATCH 08/21] Skip publishing docker template tags Use netbirdio user --- .github/workflows/release.yml | 5 +- .goreleaser.yaml | 86 +++++++++++++++++------------------ 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index df05eeaf9..d68cf8084 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ on: pull_request: env: - SIGN_PIPE_VER: main + SIGN_PIPE_VER: macos-sign jobs: release: @@ -51,8 +51,9 @@ jobs: if: github.event_name != 'pull_request' uses: docker/login-action@v1 with: - username: ${{ secrets.DOCKER_USER }} + username: netbirdio password: ${{ secrets.DOCKER_TOKEN }} + - name: Install dependencies run: sudo apt update && sudo apt install -y -q libgtk-3-dev libappindicator3-dev libayatana-appindicator3-dev libgl1-mesa-dev xorg-dev gcc-mingw-w64-x86-64 - diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 9e10537a2..b91fdc2b4 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -323,54 +323,54 @@ dockers: - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" -docker_manifests: - - name_template: netbirdio/netbird:{{ .Version }} - image_templates: - - netbirdio/netbird:{{ .Version }}-arm64v8 - - netbirdio/netbird:{{ .Version }}-arm - - netbirdio/netbird:{{ .Version }}-amd64 - - - name_template: netbirdio/netbird:latest - image_templates: - - netbirdio/netbird:{{ .Version }}-arm64v8 - - netbirdio/netbird:{{ .Version }}-arm - - netbirdio/netbird:{{ .Version }}-amd64 - - - name_template: netbirdio/signal:{{ .Version }} - image_templates: - - netbirdio/signal:{{ .Version }}-arm64v8 - - netbirdio/signal:{{ .Version }}-arm - - netbirdio/signal:{{ .Version }}-amd64 - - - name_template: netbirdio/signal:latest - image_templates: - - netbirdio/signal:{{ .Version }}-arm64v8 - - netbirdio/signal:{{ .Version }}-arm - - netbirdio/signal:{{ .Version }}-amd64 - - - name_template: netbirdio/management:{{ .Version }} - image_templates: - - netbirdio/management:{{ .Version }}-arm64v8 - - netbirdio/management:{{ .Version }}-arm - - netbirdio/management:{{ .Version }}-amd64 - - - name_template: netbirdio/management:latest - image_templates: - - netbirdio/management:{{ .Version }}-arm64v8 - - netbirdio/management:{{ .Version }}-arm - - netbirdio/management:{{ .Version }}-amd64 - - - name_template: netbirdio/management:debug-latest - image_templates: - - netbirdio/management:{{ .Version }}-debug-arm64v8 - - netbirdio/management:{{ .Version }}-debug-arm - - netbirdio/management:{{ .Version }}-debug-amd64 +#docker_manifests: +# - name_template: netbirdio/netbird:{{ .Version }} +# image_templates: +# - netbirdio/netbird:{{ .Version }}-arm64v8 +# - netbirdio/netbird:{{ .Version }}-arm +# - netbirdio/netbird:{{ .Version }}-amd64 +# +# - name_template: netbirdio/netbird:latest +# image_templates: +# - netbirdio/netbird:{{ .Version }}-arm64v8 +# - netbirdio/netbird:{{ .Version }}-arm +# - netbirdio/netbird:{{ .Version }}-amd64 +# +# - name_template: netbirdio/signal:{{ .Version }} +# image_templates: +# - netbirdio/signal:{{ .Version }}-arm64v8 +# - netbirdio/signal:{{ .Version }}-arm +# - netbirdio/signal:{{ .Version }}-amd64 +# +# - name_template: netbirdio/signal:latest +# image_templates: +# - netbirdio/signal:{{ .Version }}-arm64v8 +# - netbirdio/signal:{{ .Version }}-arm +# - netbirdio/signal:{{ .Version }}-amd64 +# +# - name_template: netbirdio/management:{{ .Version }} +# image_templates: +# - netbirdio/management:{{ .Version }}-arm64v8 +# - netbirdio/management:{{ .Version }}-arm +# - netbirdio/management:{{ .Version }}-amd64 +# +# - name_template: netbirdio/management:latest +# image_templates: +# - netbirdio/management:{{ .Version }}-arm64v8 +# - netbirdio/management:{{ .Version }}-arm +# - netbirdio/management:{{ .Version }}-amd64 +# +# - name_template: netbirdio/management:debug-latest +# image_templates: +# - netbirdio/management:{{ .Version }}-debug-arm64v8 +# - netbirdio/management:{{ .Version }}-debug-arm +# - netbirdio/management:{{ .Version }}-debug-amd64 brews: - tap: owner: netbirdio - name: homebrew-client + name: homebrew-tap token: "{{ .Env.HOMEBREW_TAP_GITHUB_TOKEN }}" commit_author: name: Netbird From b842b14138a89306ddbc697285c4407323a587bb Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 00:03:23 +0200 Subject: [PATCH 09/21] Declare multiple archives --- .goreleaser.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index b91fdc2b4..4483b2c88 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -85,7 +85,9 @@ builds: archives: - builds: - netbird + - builds: - netbird-ui + - builds: - netbird-ui-windows nfpms: From 74cf87cce9687d2ff20d35413ce03414188b0bc9 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 00:06:10 +0200 Subject: [PATCH 10/21] Different IDs for new archives --- .goreleaser.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 4483b2c88..6d3e2bcc4 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -85,9 +85,11 @@ builds: archives: - builds: - netbird - - builds: + - id: linux-arch + builds: - netbird-ui - - builds: + - id: windows-arch + builds: - netbird-ui-windows nfpms: From 6ac851c06c5664285e438e04f5cc6e27481a2ee5 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 00:23:17 +0200 Subject: [PATCH 11/21] Archive template and upload UI linux packages --- .goreleaser.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 6d3e2bcc4..8338cc745 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -86,9 +86,11 @@ archives: - builds: - netbird - id: linux-arch + name_template: "{{ .ProjectName }}-ui-linux_{{ .Version }}_{{ .Os }}_{{ .Arch }}" builds: - netbird-ui - id: windows-arch + name_template: "{{ .ProjectName }}-ui-windows_{{ .Version }}_{{ .Os }}_{{ .Arch }}" builds: - netbird-ui-windows @@ -103,6 +105,24 @@ nfpms: - netbird-ui formats: - deb + contents: + - src: client/ui/netbird.desktop + dst: /usr/share/applications/netbird.desktop + - src: client/ui/disconnected.png + dst: /usr/share/pixmaps/netbird.png + dependencies: + - libayatana-appindicator3-1 + - libgtk-3-dev + - libappindicator3-dev + + - maintainer: Netbird + description: Netbird client UI. + homepage: https://netbird.io/ + id: netbird-ui-rpm + package_name: netbird-ui + builds: + - netbird-ui + formats: - rpm contents: - src: client/ui/netbird.desktop @@ -390,6 +410,7 @@ uploads: - name: debian ids: - deb + - netbird-ui-deb mode: archive target: https://pkgs.wiretrustee.com/debian/pool/{{ .ArtifactName }};deb.distribution=stable;deb.component=main;deb.architecture={{ if .Arm }}armhf{{ else }}{{ .Arch }}{{ end }};deb.package= username: dev@wiretrustee.com @@ -397,6 +418,7 @@ uploads: - name: yum ids: - rpm + - netbird-ui-rpm mode: archive target: https://pkgs.wiretrustee.com/yum/{{ .Arch }}{{ if .Arm }}{{ .Arm }}{{ end }} username: dev@wiretrustee.com From 8a0ba77c36ed5d9f6eb77ebdff4174b3d14903b5 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 00:29:12 +0200 Subject: [PATCH 12/21] AMD and ARM URLs --- client/ui/netbird-ui.rb.tmpl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/ui/netbird-ui.rb.tmpl b/client/ui/netbird-ui.rb.tmpl index 2438439f6..a8926e47f 100644 --- a/client/ui/netbird-ui.rb.tmpl +++ b/client/ui/netbird-ui.rb.tmpl @@ -1,14 +1,15 @@ {{ $projectName := env.Getenv "PROJECT" }}{{ $amdFilePath := env.Getenv "AMD" }}{{ $armFilePath := env.Getenv "ARM" }} +{{ $amdURL := env.Getenv "AMD_URL" }}{{ $armURL := env.Getenv "ARM_URL" }} {{ $amdFile := filepath.Base $amdFilePath }}{{ $armFile := filepath.Base $armFilePath }}{{ $amdFileBytes := file.Read $amdFilePath }} {{ $armFileBytes := file.Read $armFilePath }}# Netbird's UI Client Cask Formula cask "{{ $projectName }}" do version "{{ env.Getenv "VERSION" }}" if Hardware::CPU.intel? - url "file:////Users/maycon/projects/mls-netbird/dist/{{ $amdFile }}" + url "{{ $amdURL }}" sha256 "{{ crypto.SHA256 $amdFileBytes }}" else - url "file:////Users/maycon/projects/mls-netbird/dist/{{ $armFile }}" + url "{{ $armURL }}" sha256 "{{ crypto.SHA256 $armFileBytes }}" end From 21717f2cfa0105d54b58d0984bc10a421f4a8751 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 00:36:01 +0200 Subject: [PATCH 13/21] Temp skip --- .github/workflows/golang-test-darwin.yml | 2 +- .github/workflows/golang-test-linux.yml | 2 +- .github/workflows/golang-test-windows.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/golang-test-darwin.yml b/.github/workflows/golang-test-darwin.yml index dfc8c9c20..6a199b826 100644 --- a/.github/workflows/golang-test-darwin.yml +++ b/.github/workflows/golang-test-darwin.yml @@ -1,5 +1,5 @@ name: Test Code Darwin -on: [push,pull_request] +on: [pull_request] jobs: test: strategy: diff --git a/.github/workflows/golang-test-linux.yml b/.github/workflows/golang-test-linux.yml index 3a85d4aba..1c001f5d7 100644 --- a/.github/workflows/golang-test-linux.yml +++ b/.github/workflows/golang-test-linux.yml @@ -1,5 +1,5 @@ name: Test Code Linux -on: [push,pull_request] +on: [pull_request] jobs: test: strategy: diff --git a/.github/workflows/golang-test-windows.yml b/.github/workflows/golang-test-windows.yml index d976b80e9..e1df62e7e 100644 --- a/.github/workflows/golang-test-windows.yml +++ b/.github/workflows/golang-test-windows.yml @@ -1,5 +1,5 @@ name: Test Code Windows -on: [push,pull_request] +on: [pull_request] jobs: pre: runs-on: ubuntu-latest From 265066946b261a31c9871a5d7e9cb4c14b694137 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 00:37:19 +0200 Subject: [PATCH 14/21] Publish only default archives to HomeBrew --- .goreleaser.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 8338cc745..d3f27d79b 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -392,6 +392,8 @@ dockers: brews: - + ids: + - default tap: owner: netbirdio name: homebrew-tap From e85ccde7acbbe4e443de56742002a463a91b95dd Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 01:53:59 +0200 Subject: [PATCH 15/21] Fix app path from zip --- client/ui/netbird-ui.rb.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/ui/netbird-ui.rb.tmpl b/client/ui/netbird-ui.rb.tmpl index a8926e47f..b74037990 100644 --- a/client/ui/netbird-ui.rb.tmpl +++ b/client/ui/netbird-ui.rb.tmpl @@ -8,14 +8,14 @@ cask "{{ $projectName }}" do if Hardware::CPU.intel? url "{{ $amdURL }}" sha256 "{{ crypto.SHA256 $amdFileBytes }}" + app "netbird_ui_darwin_amd64", target: "Netbird UI.app" else url "{{ $armURL }}" sha256 "{{ crypto.SHA256 $armFileBytes }}" + app "netbird_ui_darwin_arm64", target: "Netbird UI.app" end name "Netbird UI" desc "Netbird UI Client" homepage "https://www.netbird.io/" - - app "#{version}", target: "Netbird UI.app" end \ No newline at end of file From 9b79dd86ee63ad0e35edbf1019a8c580aa81a356 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 02:10:29 +0200 Subject: [PATCH 16/21] Start App with no Dock Icon --- client/ui/Info.plist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/ui/Info.plist b/client/ui/Info.plist index 8f515c889..8441110b9 100644 --- a/client/ui/Info.plist +++ b/client/ui/Info.plist @@ -6,5 +6,7 @@ netbird-ui CFBundleIconFile Netbird + LSUIElement + 1 From 1a2734eadb250917fec8d9099bc338c5e59303f5 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 02:55:40 +0200 Subject: [PATCH 17/21] Reverting temp disabling --- .github/workflows/golang-test-darwin.yml | 2 +- .github/workflows/golang-test-linux.yml | 2 +- .github/workflows/golang-test-windows.yml | 2 +- .goreleaser.yaml | 84 +++++++++++------------ 4 files changed, 45 insertions(+), 45 deletions(-) diff --git a/.github/workflows/golang-test-darwin.yml b/.github/workflows/golang-test-darwin.yml index 6a199b826..dfc8c9c20 100644 --- a/.github/workflows/golang-test-darwin.yml +++ b/.github/workflows/golang-test-darwin.yml @@ -1,5 +1,5 @@ name: Test Code Darwin -on: [pull_request] +on: [push,pull_request] jobs: test: strategy: diff --git a/.github/workflows/golang-test-linux.yml b/.github/workflows/golang-test-linux.yml index 1c001f5d7..3a85d4aba 100644 --- a/.github/workflows/golang-test-linux.yml +++ b/.github/workflows/golang-test-linux.yml @@ -1,5 +1,5 @@ name: Test Code Linux -on: [pull_request] +on: [push,pull_request] jobs: test: strategy: diff --git a/.github/workflows/golang-test-windows.yml b/.github/workflows/golang-test-windows.yml index e1df62e7e..d976b80e9 100644 --- a/.github/workflows/golang-test-windows.yml +++ b/.github/workflows/golang-test-windows.yml @@ -1,5 +1,5 @@ name: Test Code Windows -on: [pull_request] +on: [push,pull_request] jobs: pre: runs-on: ubuntu-latest diff --git a/.goreleaser.yaml b/.goreleaser.yaml index d3f27d79b..f788a316f 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -347,48 +347,48 @@ dockers: - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - "--label=maintainer=dev@netbird.io" -#docker_manifests: -# - name_template: netbirdio/netbird:{{ .Version }} -# image_templates: -# - netbirdio/netbird:{{ .Version }}-arm64v8 -# - netbirdio/netbird:{{ .Version }}-arm -# - netbirdio/netbird:{{ .Version }}-amd64 -# -# - name_template: netbirdio/netbird:latest -# image_templates: -# - netbirdio/netbird:{{ .Version }}-arm64v8 -# - netbirdio/netbird:{{ .Version }}-arm -# - netbirdio/netbird:{{ .Version }}-amd64 -# -# - name_template: netbirdio/signal:{{ .Version }} -# image_templates: -# - netbirdio/signal:{{ .Version }}-arm64v8 -# - netbirdio/signal:{{ .Version }}-arm -# - netbirdio/signal:{{ .Version }}-amd64 -# -# - name_template: netbirdio/signal:latest -# image_templates: -# - netbirdio/signal:{{ .Version }}-arm64v8 -# - netbirdio/signal:{{ .Version }}-arm -# - netbirdio/signal:{{ .Version }}-amd64 -# -# - name_template: netbirdio/management:{{ .Version }} -# image_templates: -# - netbirdio/management:{{ .Version }}-arm64v8 -# - netbirdio/management:{{ .Version }}-arm -# - netbirdio/management:{{ .Version }}-amd64 -# -# - name_template: netbirdio/management:latest -# image_templates: -# - netbirdio/management:{{ .Version }}-arm64v8 -# - netbirdio/management:{{ .Version }}-arm -# - netbirdio/management:{{ .Version }}-amd64 -# -# - name_template: netbirdio/management:debug-latest -# image_templates: -# - netbirdio/management:{{ .Version }}-debug-arm64v8 -# - netbirdio/management:{{ .Version }}-debug-arm -# - netbirdio/management:{{ .Version }}-debug-amd64 +docker_manifests: + - name_template: netbirdio/netbird:{{ .Version }} + image_templates: + - netbirdio/netbird:{{ .Version }}-arm64v8 + - netbirdio/netbird:{{ .Version }}-arm + - netbirdio/netbird:{{ .Version }}-amd64 + + - name_template: netbirdio/netbird:latest + image_templates: + - netbirdio/netbird:{{ .Version }}-arm64v8 + - netbirdio/netbird:{{ .Version }}-arm + - netbirdio/netbird:{{ .Version }}-amd64 + + - name_template: netbirdio/signal:{{ .Version }} + image_templates: + - netbirdio/signal:{{ .Version }}-arm64v8 + - netbirdio/signal:{{ .Version }}-arm + - netbirdio/signal:{{ .Version }}-amd64 + + - name_template: netbirdio/signal:latest + image_templates: + - netbirdio/signal:{{ .Version }}-arm64v8 + - netbirdio/signal:{{ .Version }}-arm + - netbirdio/signal:{{ .Version }}-amd64 + + - name_template: netbirdio/management:{{ .Version }} + image_templates: + - netbirdio/management:{{ .Version }}-arm64v8 + - netbirdio/management:{{ .Version }}-arm + - netbirdio/management:{{ .Version }}-amd64 + + - name_template: netbirdio/management:latest + image_templates: + - netbirdio/management:{{ .Version }}-arm64v8 + - netbirdio/management:{{ .Version }}-arm + - netbirdio/management:{{ .Version }}-amd64 + + - name_template: netbirdio/management:debug-latest + image_templates: + - netbirdio/management:{{ .Version }}-debug-arm64v8 + - netbirdio/management:{{ .Version }}-debug-arm + - netbirdio/management:{{ .Version }}-debug-amd64 brews: - From e31b386bcbf2eda164926693dc5619c78e83a3a3 Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 02:56:08 +0200 Subject: [PATCH 18/21] use main ref for signing pipelines repo --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d68cf8084..13e9c35f9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,7 +9,7 @@ on: pull_request: env: - SIGN_PIPE_VER: macos-sign + SIGN_PIPE_VER: main jobs: release: From 7ae96739f28dccc448dcf298f525d983a2f9b46c Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 10:54:23 +0200 Subject: [PATCH 19/21] Update exec path --- client/ui/netbird.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/ui/netbird.desktop b/client/ui/netbird.desktop index c4ac46765..a783056be 100644 --- a/client/ui/netbird.desktop +++ b/client/ui/netbird.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Name=Netbird Agent -Exec=/usr/bin/wiretrustee-ui +Exec=/usr/bin/netbird-ui Icon=netbird Type=Application Terminal=false From 418d540d558faafb1de953e912a1fe04c38d02ab Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 15:27:35 +0200 Subject: [PATCH 20/21] Update Macos Icon --- client/ui/Netbird.icns | Bin 101540 -> 80549 bytes client/ui/wiretrustee.ico | Bin 101387 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 client/ui/wiretrustee.ico diff --git a/client/ui/Netbird.icns b/client/ui/Netbird.icns index 59615c19366a654bc6391219cdb6dd2e96aad700..20af72825abc8eabdaa289fe0d2cd96b81217e41 100644 GIT binary patch literal 80549 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

b5q@6*%gH?jG|bC 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 From 5d698c4831534327bcc6910e7a4dcc6cdf2037db Mon Sep 17 00:00:00 2001 From: mlsmaycon Date: Sat, 21 May 2022 15:28:27 +0200 Subject: [PATCH 21/21] Hide console, add Icon to Windows UI App and create shortcut --- .github/workflows/release.yml | 7 +++++++ .goreleaser.yaml | 1 + client/installer.nsis | 3 +++ client/ui/manifest.xml | 17 +++++++++++++++++ 4 files changed, 28 insertions(+) create mode 100644 client/ui/manifest.xml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 13e9c35f9..275ba9c0c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,6 +56,13 @@ jobs: - name: Install dependencies run: sudo apt update && sudo apt install -y -q libgtk-3-dev libappindicator3-dev libayatana-appindicator3-dev libgl1-mesa-dev xorg-dev gcc-mingw-w64-x86-64 + + - name: Install rsrc + run: go install github.com/akavel/rsrc@v0.10.2 + + - name: Generate windows rsrc + run: rsrc -arch amd64 -ico client/ui/netbird.ico -manifest client/ui/manifest.xml -o client/ui/resources_windows_amd64.syso + - name: Run GoReleaser uses: goreleaser/goreleaser-action@v2 diff --git a/.goreleaser.yaml b/.goreleaser.yaml index f788a316f..3b6ae2456 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -80,6 +80,7 @@ builds: - amd64 ldflags: - -s -w -X github.com/netbirdio/netbird/client/ui/system.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.CommitDate}} -X main.builtBy=goreleaser + - -H windowsgui mod_timestamp: '{{ .CommitTimestamp }}' archives: diff --git a/client/installer.nsis b/client/installer.nsis index 77dce79e2..c5f173b6b 100644 --- a/client/installer.nsis +++ b/client/installer.nsis @@ -110,6 +110,9 @@ WriteRegStr ${REG_ROOT} "${UI_UNINSTALL_PATH}" "Publisher" "${COMP_NAME}" EnVar::SetHKLM EnVar::AddValueEx "path" "$INSTDIR" +CreateShortCut "${SMPROGRAMS}\${UI_APP_NAME}.lnk" "$INSTDIR\${UI_APP_EXE}" +CreateShortCut "${DESKTOP}\${UI_APP_NAME}.lnk" "$INSTDIR\${UI_APP_EXE}" + Exec '"$INSTDIR\${MAIN_APP_EXE}" service install' Exec '"$INSTDIR\${MAIN_APP_EXE}" service start' # sleep a bit for visibility diff --git a/client/ui/manifest.xml b/client/ui/manifest.xml new file mode 100644 index 000000000..c71a407e5 --- /dev/null +++ b/client/ui/manifest.xml @@ -0,0 +1,17 @@ + + + + Netbird UI application + + + + + + + + \ No newline at end of file