Skip to content

Commit

Permalink
👷 🚧 Windows build
Browse files Browse the repository at this point in the history
  • Loading branch information
MeneDev committed Mar 5, 2019
1 parent 483d142 commit 575df45
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 14 deletions.
39 changes: 30 additions & 9 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,28 @@ jobs:
steps:
- checkout
- restore_cache:
key: builder-{{ checksum "builder/Dockerfile" }}
key: builder-{{ checksum "builder2/Dockerfile" }}
paths:
- /tmp/docker_pushed
- run:
name: Build and push image if builder/Dockerfile has changed
command: |
docker pull menedev/yubi-oath-vpn-builder:latest
if [ ! -f /tmp/docker_pushed ]; then
docker login -u $DOCKER_USER -p $DOCKER_PASS
docker build -f builder/Dockerfile -t menedev/yubi-oath-vpn-builder:latest .
docker build -f builder2/Dockerfile -t menedev/yubi-oath-vpn-builder:latest .
docker push menedev/yubi-oath-vpn-builder:latest
echo 1 > /tmp/docker_pushed
fi
docker tag menedev/yubi-oath-vpn-builder:latest menedev/yubi-oath-vpn-builder:$CIRCLE_SHA1
docker push menedev/yubi-oath-vpn-builder:$CIRCLE_SHA1
- save_cache:
key: builder-{{ checksum "builder/Dockerfile" }}
key: builder-{{ checksum "builder2/Dockerfile" }}
paths:
- /tmp/docker_pushed
build:
docker:
- image: menedev/yubi-oath-vpn-builder:latest
- image: menedev/yubi-oath-vpn-builder:$CIRCLE_SHA1

working_directory: /go/src/github.com/MeneDev/yubi-oath-vpn
environment:
Expand All @@ -34,7 +37,7 @@ jobs:
steps:
- checkout
- restore_cache:
key: gopkg-{{ checksum "Gopkg.lock" }}
key: gopkg-linux-windows-{{ checksum "Gopkg.lock" }}
paths:
- /go/src/github.com/MeneDev/yubi-oath-vpn/vendor
- /tmp/go/cache
Expand All @@ -45,8 +48,14 @@ jobs:
/go/bin/dep ensure
find vendor/ -maxdepth 3 -mindepth 3 -exec bash -c 'cd $0 && go build ./...' {} \;
fi
- run:
name: Download and build libraries for Windows
command: |
if [ ! -d ./vendor ]; then
CGO_LDFLAGS_ALLOW='.*' CGO_CFLAGS_ALLOW='.*' CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CGO_ENABLED=1 GOOS=windows GOARCH=amd64 PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig find vendor/ -maxdepth 3 -mindepth 3 -exec bash -c 'cd $0 && go build ./...' {} \;
fi
- save_cache:
key: gopkg-{{ checksum "Gopkg.lock" }}
key: gopkg-linux-windows-{{ checksum "Gopkg.lock" }}
paths:
- ./vendor
- /tmp/go/cache
Expand All @@ -55,16 +64,24 @@ jobs:
name: Build project
command: |
tag="$(semantics --output-tag --dry-run)"
gox -ldflags="-s -w -X \"main.Version=${tag:-not a release}\" -X \"main.BuildDate=$(date --utc)\" -X \"main.BuildNumber=$CIRCLE_BUILD_NUM\" -X \"main.BuildCommit=$CIRCLE_SHA1\"" -os="linux" -arch="amd64" -output "release/yubi-oath-vpn-{{.OS}}_{{.Arch}}" github.com/MeneDev/yubi-oath-vpn/cmd/yubi-oath-vpn
go build -o release/yubi-oath-vpn-linux_amd64 -ldflags="-s -w -X \"main.Version=${tag:-not a release}\" -X \"main.BuildDate=$(date --utc)\" -X \"main.BuildNumber=$CIRCLE_BUILD_NUM\" -X \"main.BuildCommit=$CIRCLE_SHA1\"" -v github.com/MeneDev/yubi-oath-vpn/cmd/yubi-oath-vpn
- run:
name: Build project for windows
command: |
tag="$(semantics --output-tag --dry-run)"
CGO_LDFLAGS_ALLOW='.*' CGO_CFLAGS_ALLOW='.*' CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CGO_ENABLED=1 GOOS=windows GOARCH=amd64 PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig go build -o release/windows/yubi-oath-vpn-win_amd64 -ldflags="-s -w -X \"main.Version=${tag:-not a release}\" -X \"main.BuildDate=$(date --utc)\" -X \"main.BuildNumber=$CIRCLE_BUILD_NUM\" -X \"main.BuildCommit=$CIRCLE_SHA1\"" -v github.com/MeneDev/yubi-oath-vpn/cmd/yubi-oath-vpn
- run: release/yubi-oath-vpn-linux_amd64 --version


- run: cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/{iconv.dll,libatk-1.0-0.dll,libbz2-1.dll,libcairo-2.dll,libcairo-gobject-2.dll,libepoxy-0.dll,libexpat-1.dll,libffi-6.dll,libfontconfig-1.dll,libfreetype-6.dll,libgcc_s_seh-1.dll,libgdk-3-0.dll,libgdk_pixbuf-2.0-0.dll,libgio-2.0-0.dll,libglib-2.0-0.dll,libgmodule-2.0-0.dll,libgobject-2.0-0.dll,libgtk-3-0.dll,libintl-8.dll,libpango-1.0-0.dll,libpangocairo-1.0-0.dll,libpangowin32-1.0-0.dll,libpcre-1.dll,libpixman-1-0.dll,libpng16-16.dll,libwinpthread-1.dll,zlib1.dll} release/windows
- persist_to_workspace:
root: .
paths:
- release
release:
docker:
- image: menedev/yubi-oath-vpn-builder:latest
- image: menedev/yubi-oath-vpn-builder:$CIRCLE_SHA1
steps:
- checkout
- attach_workspace:
Expand All @@ -74,9 +91,13 @@ jobs:
command: |
tag="$(semantics --output-tag --dry-run)"
if [ ! -z "$tag" ]; then
zip -jm /tmp/workspace/release/yubi-oath-vpn-win_amd64.zip /tmp/workspace/release/windows/*
rm -rf /tmp/workspace/release/windows
ghr -t "$GITHUB_TOKEN" -u "$CIRCLE_PROJECT_USERNAME" -r "$CIRCLE_PROJECT_REPONAME" --replace "$tag" /tmp/workspace/release/
else
echo "not releasing, no new version"
zip -jm /tmp/workspace/release/yubi-oath-vpn-win_amd64.zip /tmp/workspace/release/windows/*
rm -rf /tmp/workspace/release/windows
ghr -t "$GITHUB_TOKEN" -u "$CIRCLE_PROJECT_USERNAME" -r "$CIRCLE_PROJECT_REPONAME" --replace "snapshot" /tmp/workspace/release/
fi
workflows:
Expand Down
32 changes: 27 additions & 5 deletions builder2/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,39 @@
FROM fedora:29

RUN dnf install -y mingw32-gcc mingw64-gcc mingw32-gcc-c++ mingw64-gcc-c++ mingw32-gtk3 mingw64-gtk3 mingw32-glib2 mingw64-glib2 golang \
RUN dnf install -y \
findutils \
git \
golang \
gtk3-devel \
pcsc-lite-devel \
libudev-devel \
libusbx-devel \
libudev-devel
mingw32-gcc mingw64-gcc \
mingw32-gcc-c++ \
mingw32-glib2 \
mingw32-gtk3 \
mingw64-gcc-c++ \
mingw64-glib2 \
mingw64-gtk3 \
pcsc-lite-devel \
zip \
&& \
dnf clean all

RUN mkdir /go
RUN mkdir /go/bin
ENV GOPATH /go
ENV PATH "$PATH:$GOPATH/bin"

RUN curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
RUN go get -u github.com/tcnksm/ghr \
&& go get -u github.com/stevenmatthewt/semantics

RUN curl -L -s https://github.com/golang/dep/releases/download/v0.5.0/dep-linux-amd64 -o /go/bin/dep \
&& chmod +x /go/bin/dep

RUN mkdir -p /go/src/github.com/mitchellh/gox
RUN git clone --branch master https://github.com/mitchellh/gox.git /go/src/github.com/mitchellh/gox
RUN cd /go/src/github.com/mitchellh/gox && git reset --hard 9cc487598128d0963ff9dcc51176e722788ec645
RUN cd /go/src/github.com/mitchellh/gox && dep ensure && go install -v ./...

# CGO_LDFLAGS_ALLOW='.*' CGO_CFLAGS_ALLOW='.*' CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CGO_ENABLED=1 GOOS=windows GOARCH=amd64 PKG_CONFIG_PATH=/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig go build -v github.com/MeneDev/yubi-oath-vpn/cmd/yubi-oath-vpn
RUN cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/{libatk-1.0-0.dll,libbz2-1.dll,libcairo-2.dll,libcairo-gobject-2.dll,libepoxy-0.dll,libexpat-1.dll,libffi-6.dll,libfontconfig-1.dll,libfreetype-6.dll,libgcc_s_seh-1.dll,libgdk-3-0.dll,libgdk_pixbuf-2.0-0.dll,libgio-2.0-0.dll,libgit2.dll,libglib-2.0-0.dll,libgmodule-2.0-0.dll,libgobject-2.0-0.dll,libgraphite2.dll,libgtk-3-0.dll,libharfbuzz-0.dll,libiconv-2.dll,libintl-8.dll,libjasper-1.dll,libjpeg-8.dll,libpango-1.0-0.dll,libpangocairo-1.0-0.dll,libpangoft2-1.0-0.dll,libpangowin32-1.0-0.dll,libpcre-1.dll,libpixman-1-0.dll,libpng16-16.dll,libstdc++-6.dll,libwinpthread-1.dll,zlib1.dll} /go/src/github.com/MeneDev/yubi-oath-vpn/release
# cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/{libatk-1.0-0.dll,libbz2-1.dll,libcairo-2.dll,libcairo-gobject-2.dll,libepoxy-0.dll,libexpat-1.dll,libffi-6.dll,libfontconfig-1.dll,libfreetype-6.dll,libgcc_s_seh-1.dll,libgdk-3-0.dll,libgdk_pixbuf-2.0-0.dll,libgio-2.0-0.dll,libgit2.dll,libglib-2.0-0.dll,libgmodule-2.0-0.dll,libgobject-2.0-0.dll,libgraphite2.dll,libgtk-3-0.dll,libharfbuzz-0.dll,libiconv-2.dll,libintl-8.dll,libjasper-1.dll,libjpeg-8.dll,libpango-1.0-0.dll,libpangocairo-1.0-0.dll,libpangoft2-1.0-0.dll,libpangowin32-1.0-0.dll,libpcre-1.dll,libpixman-1-0.dll,libpng16-16.dll,libstdc++-6.dll,libwinpthread-1.dll,zlib1.dll} /go/src/github.com/MeneDev/yubi-oath-vpn/release

0 comments on commit 575df45

Please sign in to comment.