From 01b032ee7d31bc4d4f7a7a984e03692008279c6f Mon Sep 17 00:00:00 2001 From: hathach Date: Tue, 19 Jan 2021 13:00:43 +0700 Subject: [PATCH] add upload artifacts and release assets to ci --- .github/workflows/githubci.yml | 27 ++++++++++++---- Makefile | 56 +++++++++++++++++++++------------- 2 files changed, 55 insertions(+), 28 deletions(-) diff --git a/.github/workflows/githubci.yml b/.github/workflows/githubci.yml index 73e5e8c..3dbc14e 100644 --- a/.github/workflows/githubci.yml +++ b/.github/workflows/githubci.yml @@ -69,13 +69,28 @@ jobs: echo `echo $HOME/opt/xPacks/@xpack-dev-tools/arm-none-eabi-gcc/*/.content/bin` >> $GITHUB_PATH - name: Build - run: make BOARD=${{ matrix.board }} + run: | + make BOARD=${{ matrix.board }} all + make BOARD=${{ matrix.board }} copy-artifact + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.board }} + path: _bin/${{ matrix.board }} + + - name: Creat Release Asset + if: ${{ github.event_name == 'release' }} + run: zip -jr ${{ matrix.board }}_bootloader-${{ github.event.release.tag_name }}.zip _bin/${{ matrix.board }} + - name: Upload Release Asset - if: github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested') - working-directory: tools + id: upload-release-asset + uses: actions/upload-release-asset@v1 env: - UPLOAD_URL: ${{ github.event.release.upload_url }} - ADABOT_GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: "[ -z \"$ADABOT_GITHUB_ACCESS_TOKEN\" ] || python3 -u upload_release_files.py" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + if: ${{ github.event_name == 'release' }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: ${{ matrix.board }}_bootloader-${{ github.event.release.tag_name }}.zip + asset_name: ${{ matrix.board }}_bootloader-${{ github.event.release.tag_name }}.zip + asset_content_type: application/zip diff --git a/Makefile b/Makefile index d496e69..a7bcb90 100644 --- a/Makefile +++ b/Makefile @@ -28,10 +28,10 @@ GIT_VERSION := $(shell git describe --dirty --always --tags) GIT_SUBMODULE_VERSIONS := $(shell git submodule status | cut -d" " -f3,4 | paste -s -d" " -) # compiled file name -OUT_FILE = $(BOARD)_bootloader-$(GIT_VERSION) +OUT_NAME = $(BOARD)_bootloader-$(GIT_VERSION) # merged file = compiled + sd -MERGED_FILE = $(OUT_FILE)_$(SD_NAME)_$(SD_VERSION) +MERGED_FILE = $(OUT_NAME)_$(SD_NAME)_$(SD_VERSION) #------------------------------------------------------------------------------ # Tool configure @@ -46,6 +46,16 @@ OBJCOPY = $(CROSS_COMPILE)objcopy SIZE = $(CROSS_COMPILE)size GDB = $(CROSS_COMPILE)gdb +# Set make directory command, Windows tries to create a directory named "-p" if that flag is there. +ifneq ($(OS), Windows_NT) + MKDIR = mkdir -p +else + MKDIR = mkdir +endif + +RM = rm -rf +CP = cp + # Flasher utility options NRFUTIL = adafruit-nrfutil NRFJPROG = nrfjprog @@ -66,15 +76,6 @@ else $(error Unsupported flash utility: "$(FLASHER)") endif -# Set make directory command, Windows tries to create a directory named "-p" if that flag is there. -ifneq ($(OS), Windows_NT) - MK = mkdir -p -else - MK = mkdir -endif - -RM = rm -rf - # auto-detect BMP on macOS, otherwise have to specify BMP_PORT ?= $(shell ls -1 /dev/cu.usbmodem????????1 | head -1) GDB_BMP = $(GDB) -ex 'target extended-remote $(BMP_PORT)' -ex 'monitor swdp_scan' -ex 'attach 1' @@ -93,6 +94,7 @@ endif # Build directory BUILD = _build/build-$(BOARD) +BIN = _bin/$(BOARD) # Board specific -include src/boards/$(BOARD)/board.mk @@ -334,7 +336,7 @@ INC_PATHS = $(addprefix -I,$(IPATH)) .PHONY: all clean flash dfu-flash sd gdbflash gdb # default target to build -all: $(BUILD)/$(OUT_FILE).out $(BUILD)/$(OUT_FILE)-nosd.hex $(BUILD)/$(OUT_FILE)-nosd.uf2 $(BUILD)/$(MERGED_FILE).hex $(BUILD)/$(MERGED_FILE).zip +all: $(BUILD)/$(OUT_NAME).out $(BUILD)/$(OUT_NAME)_nosd.hex $(BUILD)/update-$(OUT_NAME)_nosd.uf2 $(BUILD)/$(MERGED_FILE).hex $(BUILD)/$(MERGED_FILE).zip # Print out the value of a make variable. # https://stackoverflow.com/questions/16467718/how-to-print-out-a-variable-in-makefile @@ -345,10 +347,11 @@ print-%: # Create build directories $(BUILD): - @$(MK) "$@" + @$(MKDIR) "$@" clean: @$(RM) $(BUILD) + @$(RM) $(BIN) # Create objects from C SRC files $(BUILD)/%.o: %.c @@ -361,7 +364,7 @@ $(BUILD)/%.o: %.S @$(CC) -x assembler-with-cpp $(ASFLAGS) $(INC_PATHS) -c -o $@ $< # Link -$(BUILD)/$(OUT_FILE).out: $(BUILD) $(OBJECTS) +$(BUILD)/$(OUT_NAME).out: $(BUILD) $(OBJECTS) @echo LD $(notdir $@) @$(CC) -o $@ $(LDFLAGS) $(OBJECTS) -Wl,--start-group $(LIBS) -Wl,--end-group @$(SIZE) $@ @@ -369,29 +372,38 @@ $(BUILD)/$(OUT_FILE).out: $(BUILD) $(OBJECTS) #------------------- Binary generator ------------------- # Create hex file (no sd, no mbr) -$(BUILD)/$(OUT_FILE).hex: $(BUILD)/$(OUT_FILE).out +$(BUILD)/$(OUT_NAME).hex: $(BUILD)/$(OUT_NAME).out @echo Create $(notdir $@) @$(OBJCOPY) -O ihex $< $@ # Hex file with mbr (still no SD) -$(BUILD)/$(OUT_FILE)-nosd.hex: $(BUILD)/$(OUT_FILE).hex +$(BUILD)/$(OUT_NAME)_nosd.hex: $(BUILD)/$(OUT_NAME).hex @echo Create $(notdir $@) @python3 tools/hexmerge.py --overlap=replace -o $@ $< $(MBR_HEX) -# Bootolader only uf2 -$(BUILD)/$(OUT_FILE)-nosd.uf2: $(BUILD)/$(OUT_FILE)-nosd.hex +# Bootolader self-update uf2 +$(BUILD)/update-$(OUT_NAME)_nosd.uf2: $(BUILD)/$(OUT_NAME)_nosd.hex @echo Create $(notdir $@) @python3 lib/uf2/utils/uf2conv.py -f 0xd663823c -c -o $@ $^ # merge bootloader and sd hex together -$(BUILD)/$(MERGED_FILE).hex: $(BUILD)/$(OUT_FILE).hex +$(BUILD)/$(MERGED_FILE).hex: $(BUILD)/$(OUT_NAME).hex @echo Create $(notdir $@) @python3 tools/hexmerge.py -o $@ $< $(SD_HEX) # Create pkg zip file for bootloader+SD combo to use with DFU CDC -$(BUILD)/$(MERGED_FILE).zip: $(BUILD)/$(OUT_FILE).hex +$(BUILD)/$(MERGED_FILE).zip: $(BUILD)/$(OUT_NAME).hex @$(NRFUTIL) dfu genpkg --dev-type 0x0052 --dev-revision $(DFU_DEV_REV) --bootloader $< --softdevice $(SD_HEX) $@ +#-------------- Artifacts -------------- +$(BIN): + @$(MKDIR) -p $@ + +copy-artifact: $(BIN) + @$(CP) $(BUILD)/update-$(OUT_NAME)_nosd.uf2 $(BIN) + @$(CP) $(BUILD)/$(MERGED_FILE).hex $(BIN) + @$(CP) $(BUILD)/$(MERGED_FILE).zip $(BIN) + #------------------- Flash target ------------------- check_defined = \ @@ -402,7 +414,7 @@ __check_defined = \ $(error Undefined make flag: $1$(if $2, ($2)))) # Flash the compiled -flash: $(BUILD)/$(OUT_FILE)-nosd.hex +flash: $(BUILD)/$(OUT_NAME)_nosd.hex @echo Flashing: $(notdir $<) $(call FLASH_CMD,$<) @@ -433,5 +445,5 @@ gdbflash: $(BUILD)/$(MERGED_FILE).hex @echo Flashing: $< @$(GDB_BMP) -nx --batch -ex 'load $<' -ex 'compare-sections' -ex 'kill' -gdb: $(BUILD)/$(OUT_FILE).out +gdb: $(BUILD)/$(OUT_NAME).out $(GDB_BMP) $<