Tras El Post Donde Expvestriqué Cómo Crear un Readme para el perfil de github , я faltó incluir en la sección del Блог
UN LINK AL último Post Publicado. Principlemente no lo hice porque no quería tener Que quectizar a mano cada vez El Readme Con El último post y su link. Para Resolver Esto Estuve Pensando Cómo Podía Automatizar Esta Actualización. Mientras Hacía Mi Lectura Diaria de Rss Que Sigo Con La Aplicación Feedly, Caí en que yo también tenía feed rss. Por Lo Tanto, Podía Leer yis Mismo el Feed de mi blog y obtener el último post de allí de forma sencilla.
Una Vez Cubierta la parte de cómo obtener el último post publicado me faltaba la parte de cómo actaulizar el e es donde por purera vez (ya hacía tiempo que tenía ganas) Лас Действия GitHub Анкет Hace un tiempo que github sacó al mercado estas acciones que básicamente sirven para crear workfllow automáticos para CI/CD Анкет
Con las dos partes del ublessa cubiertas, sólo me faltaba una pequeña cosa … ¡hacerlo! ASí Que explice en detalle como hice ambas cosas para que lo pueda utilizar en su proyecto si le mentesa.
Obtener el último post con Идти
Necesitaba escanear el feed del blog y lo quería hacer en go, por tanto, lo primero que hice fue buscar si ya había alguna librería que me fuc la github.com/mmcdole/gofeed Анкет Tenía un montón de funcionalidades pero yo con uso básico descrito en su readme tenía suficiente.
Con El Siguiente Trozo de Código, Creo un Nuevo Parser, Escaneo La Dirección de Mi Feed Y Los Elementos Restantes, Me Quedo Con El Primero, Ya Que es el último post publicado.
p := gofeed.NewParser() feed, err := p.ParseURL("https://charly3pins.dev/index.xml") if err != nil { log.Fatalf("error getting feed: %v", err) } newestItem := feed.Items[0]
Con esto ya tengo el item con toda la información. Аспект аспекта аналогично:
My productivity setup for VS Code http://charly3pins.dev/blog/my-productivity-setup-for-vs-code/Tue, 09 Mar 2021 http://charly3pins.dev/blog/my-productivity-setup-for-vs-code/ I am gonna show you my setup for VS Code editor which makes me more productive and I feel more comfortable with the tool that I spend most of my time during the day. I spend a lot of hours during the day coding for the company I work for and during nights or weekends for myself, so I want to be comfortable with the tools I use constantly. One of them is my editor of code, specifically VS Code.....
Lo Que Me Interesa para mostrar al extme es sólo el Название
y el связь
.
Leer y Escribir el Readme
Una Vez Tenía la Información necesaria ahora tocaba leer el fichero Readme.md
дель Repositorio , Escribir Los Cambios y Guardarlo de Nuevo.
Para Ello Podía Leer El Archivo Usando La Librería Standard ioutil. Readfile ()
, pero en ese caso como no quiero reaprovechar nada del archivo, puedo llamar directamente al Операционные системы. Create ()
para crear un nuevo archivo y así sobrescribir El Readme.md que ya tenía en el Reightio.
Además, Como Que Quiero Poner la información del Feed Junto Con La Parte Estática de Texto Que ya tenía, lo que haré es crear varias cadenas de texto cons diferentes secciones queero poner en el el leuego juntarlas to a u un |pen фм. Sprintf () Анкет
El Código Que Hace Todo Esto Es El Siguiente:
file, err := os.Create(filename) if err != nil { log.Println("error creating file", err) return } defer file.Close() _, err = io.WriteString(file, data) if err != nil { log.Println("error writing content to file", err) return } file.Sync()
Lo Que Falta por aquí es el Valor de имя файла
y el de данные
Анкет El Primero es Fácil, Simplemente La Ruta Para Llegar Al Readme. En mi caso como tengo el proyecto en un subercorectorio de mi Repositorio tengo Que usar filename = ../readme.md
. En la otra переменная, lo que hay es el siguiente:
hi := "# Hey there!" blog := "## Blog\n\nMy latest blog post is: **[" + newestItem.Title + "](" + newestItem.Link + ")**." data := fmt.Sprintf("%s\n\n%s\n\n%s\n\n%s\n", hi, blog)
La parte блог Donde Se Ve Claramente Como Leo La Información del Feed.
Puede ver el código opplo en Mi Recompositorio Анкет
Ejecutando Automáticamente el Proceso
Una Vez Ya Tenemos El Código Que nos genera el Readme Automático y de forma dinámica según el último post, lo queda por hacer es que se ejecute de forma periódica y Нет nos tengamos que preocupar de nada. Para Hacerlo usaré un Триггер de github aects para que cada vez que haga un push a la rama Мастер
ejecute el proceso y también que se ejecute de forma planificada cada domingo a las 12:00.
Primero de todo necesito la carpeta .github/worfklows
Y Dentro Creo El Archivo Update.yaml
Con El Contenido Siguiente:
on: push: branches: - master schedule: - cron: '0 0 * * 0'
Cuando ya está el Trigger Listo, lo Que se tienen Que Define Son Los рабочие места . SE Pueden Definir Tantos Como Se Quieran, En Mi Caso Con 3 Sencillos Tengo Suficiente. El Primero hará un Оформление
Del Proyecto, El Segundo generarà
El Readme y el tercero Desplegarà
Лос Камбиос. Para Hacer el último paso tendremos Que usar los mecanismos de Autenticación Que Proporciona GitHub Действия. El Código Resturantes es:
jobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: checkout repo uses: actions/checkout@master with: fetch-depth: 1 - name: generate README run: | cd ${GITHUB_WORKSPACE}/update/ go run main.go - name: deploy changes run: | git config user.name "${GITHUB_ACTOR}" git config user.email "${GITHUB_ACTOR}@users.noreply.github.com" git add . git commit -am ":rocket:: updated content" git push --all -f https://${{ secrets.GITHUB_TOKEN }}@github.com/${GITHUB_REPOSITORY}.git
Puede ver el código opplo en Mi Repositorio Анкет
Нет чувака в Comentar Aquí O ContactArme en mis переправляет социал Para Cualquier Comentario, Pregunta O Sugerencia.
Оригинал: «https://dev.to/charly3pins/automatice-el-readme-para-su-perfil-de-github-con-go-y-github-actions-4a1a»