简体   繁体   中英

GitHub Action : How to replace in string in file

Introduction

I'm currently working on a GitHub Action and I want to check if this work for many version of Java.

For this I want to update for each test the pom.xml file and change the java inside this.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>io.github.pseudo</groupId>
    <artifactId>template</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>


    <name>template</name>
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>JAVAVERSION</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>
</project>

Question

Does someone know how we can replace string in file for each test?

You can use the Find and Replace GH Action to find and replace the version in your pom.xml :

name: GitHub Action

on:
  push:
    branches: [ main ]

jobs:
  build:
    strategy:
      matrix:
        java: [ '8', '11', '17' ]
        os: [ubuntu-latest, macos-latest, windows-latest]

    runs-on: ${{ matrix.os }}

    name: Java ${{ matrix.Java }} sample
    steps:
      - uses: actions/checkout@v3

      - name: Setup java
        uses: actions/setup-java@v3
        with:
          distribution: 'temurin'
          java-version: ${{ matrix.java }}

      - name: Find and Replace
        uses: jacobtomlinson/gha-find-replace@v2
        with:
          find: "JAVAVERSION"
          replace: ${{ matrix.java }}
          regex: false
          include: 'pom.xml'

      # the rest of needed steps

This WF will run a matrix with different versions of Java and replace the JAVAVERSION in the pom.xml file with the specific version.

For this example, I also used the Setup Java GH Action.

I found this GitHub Action: MathieuSoysal/replace-string-in-file

Maybe it corresponds to your issue, it works on Macos-latest, Ubunut-latest and Windows-latest.

Example of usage for your issue

name: Test your GitHub Actions

on: [push]

jobs:

  test:
    continue-on-error: true
    strategy:
      matrix:
        java: [8, 11, 16, 17, 18, 19]
        os: [ubuntu-latest, windows-latest, macos-latest]
    runs-on: ${{ matrix.os }}

    name: Test Java version: ${{ matrix.java }} - os: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v3

      - name: Replace string in file
        uses: MathieuSoysal/replace-string-in-file@v1.0.0
        with:
          file: pom.xml
          old-string: JAVAVERSION
          new-string: ${{ matrix.java }}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM